libsodium (1.0.19)
1 #ifndef crypto_secretbox_xsalsa20poly1305_H
2 #define crypto_secretbox_xsalsa20poly1305_H
3
4 #include <stddef.h>
5 #include "crypto_stream_xsalsa20.h"
6 #include "export.h"
7
8 #ifdef __cplusplus
9 # ifdef __GNUC__
10 # pragma GCC diagnostic ignored "-Wlong-long"
11 # endif
12 extern "C" {
13 #endif
14
15 #define crypto_secretbox_xsalsa20poly1305_KEYBYTES 32U
16 SODIUM_EXPORT
17 size_t crypto_secretbox_xsalsa20poly1305_keybytes(void);
18
19 #define crypto_secretbox_xsalsa20poly1305_NONCEBYTES 24U
20 SODIUM_EXPORT
21 size_t crypto_secretbox_xsalsa20poly1305_noncebytes(void);
22
23 #define crypto_secretbox_xsalsa20poly1305_MACBYTES 16U
24 SODIUM_EXPORT
25 size_t crypto_secretbox_xsalsa20poly1305_macbytes(void);
26
27 /* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */
28 #define crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX \
29 (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_secretbox_xsalsa20poly1305_MACBYTES)
30 SODIUM_EXPORT
31 size_t crypto_secretbox_xsalsa20poly1305_messagebytes_max(void);
32
33 SODIUM_EXPORT
34 int crypto_secretbox_xsalsa20poly1305(unsigned char *c,
35 const unsigned char *m,
36 unsigned long long mlen,
37 const unsigned char *n,
38 const unsigned char *k)
39 __attribute__ ((nonnull(1, 4, 5)));
40
41 SODIUM_EXPORT
42 int crypto_secretbox_xsalsa20poly1305_open(unsigned char *m,
43 const unsigned char *c,
44 unsigned long long clen,
45 const unsigned char *n,
46 const unsigned char *k)
47 __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5)));
48
49 SODIUM_EXPORT
50 void crypto_secretbox_xsalsa20poly1305_keygen(unsigned char k[crypto_secretbox_xsalsa20poly1305_KEYBYTES])
51 __attribute__ ((nonnull));
52
53 /* -- NaCl compatibility interface ; Requires padding -- */
54
55 #define crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES 16U
56 SODIUM_EXPORT
57 size_t crypto_secretbox_xsalsa20poly1305_boxzerobytes(void);
58
59 #define crypto_secretbox_xsalsa20poly1305_ZEROBYTES \
60 (crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES + \
61 crypto_secretbox_xsalsa20poly1305_MACBYTES)
62 SODIUM_EXPORT
63 size_t crypto_secretbox_xsalsa20poly1305_zerobytes(void);
64
65 #ifdef __cplusplus
66 }
67 #endif
68
69 #endif