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