libsodium (1.0.19)
1 #ifndef crypto_aead_xchacha20poly1305_H
2 #define crypto_aead_xchacha20poly1305_H
3
4 #include <stddef.h>
5 #include "export.h"
6
7 #ifdef __cplusplus
8 # ifdef __GNUC__
9 # pragma GCC diagnostic ignored "-Wlong-long"
10 # endif
11 extern "C" {
12 #endif
13
14 #define crypto_aead_xchacha20poly1305_ietf_KEYBYTES 32U
15 SODIUM_EXPORT
16 size_t crypto_aead_xchacha20poly1305_ietf_keybytes(void);
17
18 #define crypto_aead_xchacha20poly1305_ietf_NSECBYTES 0U
19 SODIUM_EXPORT
20 size_t crypto_aead_xchacha20poly1305_ietf_nsecbytes(void);
21
22 #define crypto_aead_xchacha20poly1305_ietf_NPUBBYTES 24U
23 SODIUM_EXPORT
24 size_t crypto_aead_xchacha20poly1305_ietf_npubbytes(void);
25
26 #define crypto_aead_xchacha20poly1305_ietf_ABYTES 16U
27 SODIUM_EXPORT
28 size_t crypto_aead_xchacha20poly1305_ietf_abytes(void);
29
30 #define crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX \
31 (SODIUM_SIZE_MAX - crypto_aead_xchacha20poly1305_ietf_ABYTES)
32 SODIUM_EXPORT
33 size_t crypto_aead_xchacha20poly1305_ietf_messagebytes_max(void);
34
35 SODIUM_EXPORT
36 int crypto_aead_xchacha20poly1305_ietf_encrypt(unsigned char *c,
37 unsigned long long *clen_p,
38 const unsigned char *m,
39 unsigned long long mlen,
40 const unsigned char *ad,
41 unsigned long long adlen,
42 const unsigned char *nsec,
43 const unsigned char *npub,
44 const unsigned char *k)
45 __attribute__ ((nonnull(1, 8, 9)));
46
47 SODIUM_EXPORT
48 int crypto_aead_xchacha20poly1305_ietf_decrypt(unsigned char *m,
49 unsigned long long *mlen_p,
50 unsigned char *nsec,
51 const unsigned char *c,
52 unsigned long long clen,
53 const unsigned char *ad,
54 unsigned long long adlen,
55 const unsigned char *npub,
56 const unsigned char *k)
57 __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9)));
58
59 SODIUM_EXPORT
60 int crypto_aead_xchacha20poly1305_ietf_encrypt_detached(unsigned char *c,
61 unsigned char *mac,
62 unsigned long long *maclen_p,
63 const unsigned char *m,
64 unsigned long long mlen,
65 const unsigned char *ad,
66 unsigned long long adlen,
67 const unsigned char *nsec,
68 const unsigned char *npub,
69 const unsigned char *k)
70 __attribute__ ((nonnull(1, 2, 9, 10)));
71
72 SODIUM_EXPORT
73 int crypto_aead_xchacha20poly1305_ietf_decrypt_detached(unsigned char *m,
74 unsigned char *nsec,
75 const unsigned char *c,
76 unsigned long long clen,
77 const unsigned char *mac,
78 const unsigned char *ad,
79 unsigned long long adlen,
80 const unsigned char *npub,
81 const unsigned char *k)
82 __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9)));
83
84 SODIUM_EXPORT
85 void crypto_aead_xchacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_xchacha20poly1305_ietf_KEYBYTES])
86 __attribute__ ((nonnull));
87
88 /* Aliases */
89
90 #define crypto_aead_xchacha20poly1305_IETF_KEYBYTES crypto_aead_xchacha20poly1305_ietf_KEYBYTES
91 #define crypto_aead_xchacha20poly1305_IETF_NSECBYTES crypto_aead_xchacha20poly1305_ietf_NSECBYTES
92 #define crypto_aead_xchacha20poly1305_IETF_NPUBBYTES crypto_aead_xchacha20poly1305_ietf_NPUBBYTES
93 #define crypto_aead_xchacha20poly1305_IETF_ABYTES crypto_aead_xchacha20poly1305_ietf_ABYTES
94 #define crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX
95
96 #ifdef __cplusplus
97 }
98 #endif
99
100 #endif