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 40 SODIUM_EXPORT 41 int crypto_secretbox_xsalsa20poly1305_open(unsigned char *m, 42 const unsigned char *c, 43 unsigned long long clen, 44 const unsigned char *n, 45 const unsigned char *k) 46 __attribute__ ((warn_unused_result)); 47 48 SODIUM_EXPORT 49 void crypto_secretbox_xsalsa20poly1305_keygen(unsigned char k[crypto_secretbox_xsalsa20poly1305_KEYBYTES]); 50 51 /* -- NaCl compatibility interface ; Requires padding -- */ 52 53 #define crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES 16U 54 SODIUM_EXPORT 55 size_t crypto_secretbox_xsalsa20poly1305_boxzerobytes(void); 56 57 #define crypto_secretbox_xsalsa20poly1305_ZEROBYTES \ 58 (crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES + \ 59 crypto_secretbox_xsalsa20poly1305_MACBYTES) 60 SODIUM_EXPORT 61 size_t crypto_secretbox_xsalsa20poly1305_zerobytes(void); 62 63 #ifdef __cplusplus 64 } 65 #endif 66 67 #endif 68