Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-17 10:28:58

0001 #ifndef crypto_aead_chacha20poly1305_H
0002 #define crypto_aead_chacha20poly1305_H
0003 
0004 #include <stddef.h>
0005 #include "export.h"
0006 
0007 #ifdef __cplusplus
0008 # ifdef __GNUC__
0009 #  pragma GCC diagnostic ignored "-Wlong-long"
0010 # endif
0011 extern "C" {
0012 #endif
0013 
0014 /* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */
0015 
0016 #define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U
0017 SODIUM_EXPORT
0018 size_t crypto_aead_chacha20poly1305_ietf_keybytes(void);
0019 
0020 #define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U
0021 SODIUM_EXPORT
0022 size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void);
0023 
0024 #define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U
0025 
0026 SODIUM_EXPORT
0027 size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void);
0028 
0029 #define crypto_aead_chacha20poly1305_ietf_ABYTES 16U
0030 SODIUM_EXPORT
0031 size_t crypto_aead_chacha20poly1305_ietf_abytes(void);
0032 
0033 #define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \
0034     SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \
0035                (64ULL * ((1ULL << 32) - 1ULL)))
0036 SODIUM_EXPORT
0037 size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void);
0038 
0039 SODIUM_EXPORT
0040 int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c,
0041                                               unsigned long long *clen_p,
0042                                               const unsigned char *m,
0043                                               unsigned long long mlen,
0044                                               const unsigned char *ad,
0045                                               unsigned long long adlen,
0046                                               const unsigned char *nsec,
0047                                               const unsigned char *npub,
0048                                               const unsigned char *k)
0049             __attribute__ ((nonnull(1, 8, 9)));
0050 
0051 SODIUM_EXPORT
0052 int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m,
0053                                               unsigned long long *mlen_p,
0054                                               unsigned char *nsec,
0055                                               const unsigned char *c,
0056                                               unsigned long long clen,
0057                                               const unsigned char *ad,
0058                                               unsigned long long adlen,
0059                                               const unsigned char *npub,
0060                                               const unsigned char *k)
0061             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9)));
0062 
0063 SODIUM_EXPORT
0064 int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c,
0065                                                        unsigned char *mac,
0066                                                        unsigned long long *maclen_p,
0067                                                        const unsigned char *m,
0068                                                        unsigned long long mlen,
0069                                                        const unsigned char *ad,
0070                                                        unsigned long long adlen,
0071                                                        const unsigned char *nsec,
0072                                                        const unsigned char *npub,
0073                                                        const unsigned char *k)
0074             __attribute__ ((nonnull(1, 2, 9, 10)));
0075 
0076 SODIUM_EXPORT
0077 int crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m,
0078                                                        unsigned char *nsec,
0079                                                        const unsigned char *c,
0080                                                        unsigned long long clen,
0081                                                        const unsigned char *mac,
0082                                                        const unsigned char *ad,
0083                                                        unsigned long long adlen,
0084                                                        const unsigned char *npub,
0085                                                        const unsigned char *k)
0086             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9)));
0087 
0088 SODIUM_EXPORT
0089 void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES])
0090             __attribute__ ((nonnull));
0091 
0092 /* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */
0093 
0094 #define crypto_aead_chacha20poly1305_KEYBYTES 32U
0095 SODIUM_EXPORT
0096 size_t crypto_aead_chacha20poly1305_keybytes(void);
0097 
0098 #define crypto_aead_chacha20poly1305_NSECBYTES 0U
0099 SODIUM_EXPORT
0100 size_t crypto_aead_chacha20poly1305_nsecbytes(void);
0101 
0102 #define crypto_aead_chacha20poly1305_NPUBBYTES 8U
0103 SODIUM_EXPORT
0104 size_t crypto_aead_chacha20poly1305_npubbytes(void);
0105 
0106 #define crypto_aead_chacha20poly1305_ABYTES 16U
0107 SODIUM_EXPORT
0108 size_t crypto_aead_chacha20poly1305_abytes(void);
0109 
0110 #define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \
0111     (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES)
0112 SODIUM_EXPORT
0113 size_t crypto_aead_chacha20poly1305_messagebytes_max(void);
0114 
0115 SODIUM_EXPORT
0116 int crypto_aead_chacha20poly1305_encrypt(unsigned char *c,
0117                                          unsigned long long *clen_p,
0118                                          const unsigned char *m,
0119                                          unsigned long long mlen,
0120                                          const unsigned char *ad,
0121                                          unsigned long long adlen,
0122                                          const unsigned char *nsec,
0123                                          const unsigned char *npub,
0124                                          const unsigned char *k)
0125             __attribute__ ((nonnull(1, 8, 9)));
0126 
0127 SODIUM_EXPORT
0128 int crypto_aead_chacha20poly1305_decrypt(unsigned char *m,
0129                                          unsigned long long *mlen_p,
0130                                          unsigned char *nsec,
0131                                          const unsigned char *c,
0132                                          unsigned long long clen,
0133                                          const unsigned char *ad,
0134                                          unsigned long long adlen,
0135                                          const unsigned char *npub,
0136                                          const unsigned char *k)
0137             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9)));
0138 
0139 SODIUM_EXPORT
0140 int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c,
0141                                                   unsigned char *mac,
0142                                                   unsigned long long *maclen_p,
0143                                                   const unsigned char *m,
0144                                                   unsigned long long mlen,
0145                                                   const unsigned char *ad,
0146                                                   unsigned long long adlen,
0147                                                   const unsigned char *nsec,
0148                                                   const unsigned char *npub,
0149                                                   const unsigned char *k)
0150             __attribute__ ((nonnull(1, 2, 9, 10)));
0151 
0152 SODIUM_EXPORT
0153 int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m,
0154                                                   unsigned char *nsec,
0155                                                   const unsigned char *c,
0156                                                   unsigned long long clen,
0157                                                   const unsigned char *mac,
0158                                                   const unsigned char *ad,
0159                                                   unsigned long long adlen,
0160                                                   const unsigned char *npub,
0161                                                   const unsigned char *k)
0162             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9)));
0163 
0164 SODIUM_EXPORT
0165 void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES])
0166             __attribute__ ((nonnull));
0167 
0168 /* Aliases */
0169 
0170 #define crypto_aead_chacha20poly1305_IETF_KEYBYTES         crypto_aead_chacha20poly1305_ietf_KEYBYTES
0171 #define crypto_aead_chacha20poly1305_IETF_NSECBYTES        crypto_aead_chacha20poly1305_ietf_NSECBYTES
0172 #define crypto_aead_chacha20poly1305_IETF_NPUBBYTES        crypto_aead_chacha20poly1305_ietf_NPUBBYTES
0173 #define crypto_aead_chacha20poly1305_IETF_ABYTES           crypto_aead_chacha20poly1305_ietf_ABYTES
0174 #define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX
0175 
0176 #ifdef __cplusplus
0177 }
0178 #endif
0179 
0180 #endif