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 70