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 
46 SODIUM_EXPORT
47 int crypto_aead_xchacha20poly1305_ietf_decrypt(unsigned char *m,
48                                                unsigned long long *mlen_p,
49                                                unsigned char *nsec,
50                                                const unsigned char *c,
51                                                unsigned long long clen,
52                                                const unsigned char *ad,
53                                                unsigned long long adlen,
54                                                const unsigned char *npub,
55                                                const unsigned char *k)
56             __attribute__ ((warn_unused_result));
57 
58 SODIUM_EXPORT
59 int crypto_aead_xchacha20poly1305_ietf_encrypt_detached(unsigned char *c,
60                                                         unsigned char *mac,
61                                                         unsigned long long *maclen_p,
62                                                         const unsigned char *m,
63                                                         unsigned long long mlen,
64                                                         const unsigned char *ad,
65                                                         unsigned long long adlen,
66                                                         const unsigned char *nsec,
67                                                         const unsigned char *npub,
68                                                         const unsigned char *k);
69 
70 SODIUM_EXPORT
71 int crypto_aead_xchacha20poly1305_ietf_decrypt_detached(unsigned char *m,
72                                                         unsigned char *nsec,
73                                                         const unsigned char *c,
74                                                         unsigned long long clen,
75                                                         const unsigned char *mac,
76                                                         const unsigned char *ad,
77                                                         unsigned long long adlen,
78                                                         const unsigned char *npub,
79                                                         const unsigned char *k)
80         __attribute__ ((warn_unused_result));
81 
82 SODIUM_EXPORT
83 void crypto_aead_xchacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_xchacha20poly1305_ietf_KEYBYTES]);
84 
85 /* Aliases */
86 
87 #define crypto_aead_xchacha20poly1305_IETF_KEYBYTES         crypto_aead_xchacha20poly1305_ietf_KEYBYTES
88 #define crypto_aead_xchacha20poly1305_IETF_NSECBYTES        crypto_aead_xchacha20poly1305_ietf_NSECBYTES
89 #define crypto_aead_xchacha20poly1305_IETF_NPUBBYTES        crypto_aead_xchacha20poly1305_ietf_NPUBBYTES
90 #define crypto_aead_xchacha20poly1305_IETF_ABYTES           crypto_aead_xchacha20poly1305_ietf_ABYTES
91 #define crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX
92 
93 #ifdef __cplusplus
94 }
95 #endif
96 
97 #endif
98