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
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
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
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