Home | History | Annotate | Line # | Download | only in sodium
      1 #ifndef crypto_aead_chacha20poly1305_H
      2 #define crypto_aead_chacha20poly1305_H
      3 
      4 #if 0
      5 #include <stddef.h>
      6 #endif
      7 #include "export.h"
      8 
      9 #ifdef __cplusplus
     10 # ifdef __GNUC__
     11 #  pragma GCC diagnostic ignored "-Wlong-long"
     12 # endif
     13 extern "C" {
     14 #endif
     15 
     16 /* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */
     17 
     18 #define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U
     19 SODIUM_EXPORT
     20 size_t crypto_aead_chacha20poly1305_ietf_keybytes(void);
     21 
     22 #define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U
     23 SODIUM_EXPORT
     24 size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void);
     25 
     26 #define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U
     27 
     28 SODIUM_EXPORT
     29 size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void);
     30 
     31 #define crypto_aead_chacha20poly1305_ietf_ABYTES 16U
     32 SODIUM_EXPORT
     33 size_t crypto_aead_chacha20poly1305_ietf_abytes(void);
     34 
     35 #define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \
     36     SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \
     37                (64ULL * (1ULL << 32) - 64ULL) - crypto_aead_chacha20poly1305_ietf_ABYTES)
     38 SODIUM_EXPORT
     39 size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void);
     40 
     41 SODIUM_EXPORT
     42 int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c,
     43                                               unsigned long long *clen_p,
     44                                               const unsigned char *m,
     45                                               unsigned long long mlen,
     46                                               const unsigned char *ad,
     47                                               unsigned long long adlen,
     48                                               const unsigned char *nsec,
     49                                               const unsigned char *npub,
     50                                               const unsigned char *k);
     51 
     52 SODIUM_EXPORT
     53 int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m,
     54                                               unsigned long long *mlen_p,
     55                                               unsigned char *nsec,
     56                                               const unsigned char *c,
     57                                               unsigned long long clen,
     58                                               const unsigned char *ad,
     59                                               unsigned long long adlen,
     60                                               const unsigned char *npub,
     61                                               const unsigned char *k)
     62             __attribute__ ((warn_unused_result));
     63 
     64 SODIUM_EXPORT
     65 int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c,
     66                                                        unsigned char *mac,
     67                                                        unsigned long long *maclen_p,
     68                                                        const unsigned char *m,
     69                                                        unsigned long long mlen,
     70                                                        const unsigned char *ad,
     71                                                        unsigned long long adlen,
     72                                                        const unsigned char *nsec,
     73                                                        const unsigned char *npub,
     74                                                        const unsigned char *k);
     75 
     76 SODIUM_EXPORT
     77 int crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m,
     78                                                        unsigned char *nsec,
     79                                                        const unsigned char *c,
     80                                                        unsigned long long clen,
     81                                                        const unsigned char *mac,
     82                                                        const unsigned char *ad,
     83                                                        unsigned long long adlen,
     84                                                        const unsigned char *npub,
     85                                                        const unsigned char *k)
     86         __attribute__ ((warn_unused_result));
     87 
     88 SODIUM_EXPORT
     89 void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES]);
     90 
     91 /* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */
     92 
     93 #define crypto_aead_chacha20poly1305_KEYBYTES 32U
     94 SODIUM_EXPORT
     95 size_t crypto_aead_chacha20poly1305_keybytes(void);
     96 
     97 #define crypto_aead_chacha20poly1305_NSECBYTES 0U
     98 SODIUM_EXPORT
     99 size_t crypto_aead_chacha20poly1305_nsecbytes(void);
    100 
    101 #define crypto_aead_chacha20poly1305_NPUBBYTES 8U
    102 SODIUM_EXPORT
    103 size_t crypto_aead_chacha20poly1305_npubbytes(void);
    104 
    105 #define crypto_aead_chacha20poly1305_ABYTES 16U
    106 SODIUM_EXPORT
    107 size_t crypto_aead_chacha20poly1305_abytes(void);
    108 
    109 #define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \
    110     (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES)
    111 SODIUM_EXPORT
    112 size_t crypto_aead_chacha20poly1305_messagebytes_max(void);
    113 
    114 SODIUM_EXPORT
    115 int crypto_aead_chacha20poly1305_encrypt(unsigned char *c,
    116                                          unsigned long long *clen_p,
    117                                          const unsigned char *m,
    118                                          unsigned long long mlen,
    119                                          const unsigned char *ad,
    120                                          unsigned long long adlen,
    121                                          const unsigned char *nsec,
    122                                          const unsigned char *npub,
    123                                          const unsigned char *k);
    124 
    125 SODIUM_EXPORT
    126 int crypto_aead_chacha20poly1305_decrypt(unsigned char *m,
    127                                          unsigned long long *mlen_p,
    128                                          unsigned char *nsec,
    129                                          const unsigned char *c,
    130                                          unsigned long long clen,
    131                                          const unsigned char *ad,
    132                                          unsigned long long adlen,
    133                                          const unsigned char *npub,
    134                                          const unsigned char *k)
    135             __attribute__ ((warn_unused_result));
    136 
    137 SODIUM_EXPORT
    138 int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c,
    139                                                   unsigned char *mac,
    140                                                   unsigned long long *maclen_p,
    141                                                   const unsigned char *m,
    142                                                   unsigned long long mlen,
    143                                                   const unsigned char *ad,
    144                                                   unsigned long long adlen,
    145                                                   const unsigned char *nsec,
    146                                                   const unsigned char *npub,
    147                                                   const unsigned char *k);
    148 
    149 SODIUM_EXPORT
    150 int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m,
    151                                                   unsigned char *nsec,
    152                                                   const unsigned char *c,
    153                                                   unsigned long long clen,
    154                                                   const unsigned char *mac,
    155                                                   const unsigned char *ad,
    156                                                   unsigned long long adlen,
    157                                                   const unsigned char *npub,
    158                                                   const unsigned char *k)
    159         __attribute__ ((warn_unused_result));
    160 
    161 SODIUM_EXPORT
    162 void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES]);
    163 
    164 /* Aliases */
    165 
    166 #define crypto_aead_chacha20poly1305_IETF_KEYBYTES         crypto_aead_chacha20poly1305_ietf_KEYBYTES
    167 #define crypto_aead_chacha20poly1305_IETF_NSECBYTES        crypto_aead_chacha20poly1305_ietf_NSECBYTES
    168 #define crypto_aead_chacha20poly1305_IETF_NPUBBYTES        crypto_aead_chacha20poly1305_ietf_NPUBBYTES
    169 #define crypto_aead_chacha20poly1305_IETF_ABYTES           crypto_aead_chacha20poly1305_ietf_ABYTES
    170 #define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX
    171 
    172 #ifdef __cplusplus
    173 }
    174 #endif
    175 
    176 #endif
    177 #ifndef crypto_aead_chacha20poly1305_H
    178 #define crypto_aead_chacha20poly1305_H
    179 
    180 #if 0
    181 #include <stddef.h>
    182 #endif
    183 #include "export.h"
    184 
    185 #ifdef __cplusplus
    186 # ifdef __GNUC__
    187 #  pragma GCC diagnostic ignored "-Wlong-long"
    188 # endif
    189 extern "C" {
    190 #endif
    191 
    192 /* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */
    193 
    194 #define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U
    195 SODIUM_EXPORT
    196 size_t crypto_aead_chacha20poly1305_ietf_keybytes(void);
    197 
    198 #define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U
    199 SODIUM_EXPORT
    200 size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void);
    201 
    202 #define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U
    203 
    204 SODIUM_EXPORT
    205 size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void);
    206 
    207 #define crypto_aead_chacha20poly1305_ietf_ABYTES 16U
    208 SODIUM_EXPORT
    209 size_t crypto_aead_chacha20poly1305_ietf_abytes(void);
    210 
    211 #define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \
    212     SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \
    213                (64ULL * (1ULL << 32) - 64ULL) - crypto_aead_chacha20poly1305_ietf_ABYTES)
    214 SODIUM_EXPORT
    215 size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void);
    216 
    217 SODIUM_EXPORT
    218 int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c,
    219                                               unsigned long long *clen_p,
    220                                               const unsigned char *m,
    221                                               unsigned long long mlen,
    222                                               const unsigned char *ad,
    223                                               unsigned long long adlen,
    224                                               const unsigned char *nsec,
    225                                               const unsigned char *npub,
    226                                               const unsigned char *k);
    227 
    228 SODIUM_EXPORT
    229 int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m,
    230                                               unsigned long long *mlen_p,
    231                                               unsigned char *nsec,
    232                                               const unsigned char *c,
    233                                               unsigned long long clen,
    234                                               const unsigned char *ad,
    235                                               unsigned long long adlen,
    236                                               const unsigned char *npub,
    237                                               const unsigned char *k)
    238             __attribute__ ((warn_unused_result));
    239 
    240 SODIUM_EXPORT
    241 int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c,
    242                                                        unsigned char *mac,
    243                                                        unsigned long long *maclen_p,
    244                                                        const unsigned char *m,
    245                                                        unsigned long long mlen,
    246                                                        const unsigned char *ad,
    247                                                        unsigned long long adlen,
    248                                                        const unsigned char *nsec,
    249                                                        const unsigned char *npub,
    250                                                        const unsigned char *k);
    251 
    252 SODIUM_EXPORT
    253 int crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m,
    254                                                        unsigned char *nsec,
    255                                                        const unsigned char *c,
    256                                                        unsigned long long clen,
    257                                                        const unsigned char *mac,
    258                                                        const unsigned char *ad,
    259                                                        unsigned long long adlen,
    260                                                        const unsigned char *npub,
    261                                                        const unsigned char *k)
    262         __attribute__ ((warn_unused_result));
    263 
    264 SODIUM_EXPORT
    265 void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES]);
    266 
    267 /* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */
    268 
    269 #define crypto_aead_chacha20poly1305_KEYBYTES 32U
    270 SODIUM_EXPORT
    271 size_t crypto_aead_chacha20poly1305_keybytes(void);
    272 
    273 #define crypto_aead_chacha20poly1305_NSECBYTES 0U
    274 SODIUM_EXPORT
    275 size_t crypto_aead_chacha20poly1305_nsecbytes(void);
    276 
    277 #define crypto_aead_chacha20poly1305_NPUBBYTES 8U
    278 SODIUM_EXPORT
    279 size_t crypto_aead_chacha20poly1305_npubbytes(void);
    280 
    281 #define crypto_aead_chacha20poly1305_ABYTES 16U
    282 SODIUM_EXPORT
    283 size_t crypto_aead_chacha20poly1305_abytes(void);
    284 
    285 #define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \
    286     (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES)
    287 SODIUM_EXPORT
    288 size_t crypto_aead_chacha20poly1305_messagebytes_max(void);
    289 
    290 SODIUM_EXPORT
    291 int crypto_aead_chacha20poly1305_encrypt(unsigned char *c,
    292                                          unsigned long long *clen_p,
    293                                          const unsigned char *m,
    294                                          unsigned long long mlen,
    295                                          const unsigned char *ad,
    296                                          unsigned long long adlen,
    297                                          const unsigned char *nsec,
    298                                          const unsigned char *npub,
    299                                          const unsigned char *k);
    300 
    301 SODIUM_EXPORT
    302 int crypto_aead_chacha20poly1305_decrypt(unsigned char *m,
    303                                          unsigned long long *mlen_p,
    304                                          unsigned char *nsec,
    305                                          const unsigned char *c,
    306                                          unsigned long long clen,
    307                                          const unsigned char *ad,
    308                                          unsigned long long adlen,
    309                                          const unsigned char *npub,
    310                                          const unsigned char *k)
    311             __attribute__ ((warn_unused_result));
    312 
    313 SODIUM_EXPORT
    314 int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c,
    315                                                   unsigned char *mac,
    316                                                   unsigned long long *maclen_p,
    317                                                   const unsigned char *m,
    318                                                   unsigned long long mlen,
    319                                                   const unsigned char *ad,
    320                                                   unsigned long long adlen,
    321                                                   const unsigned char *nsec,
    322                                                   const unsigned char *npub,
    323                                                   const unsigned char *k);
    324 
    325 SODIUM_EXPORT
    326 int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m,
    327                                                   unsigned char *nsec,
    328                                                   const unsigned char *c,
    329                                                   unsigned long long clen,
    330                                                   const unsigned char *mac,
    331                                                   const unsigned char *ad,
    332                                                   unsigned long long adlen,
    333                                                   const unsigned char *npub,
    334                                                   const unsigned char *k)
    335         __attribute__ ((warn_unused_result));
    336 
    337 SODIUM_EXPORT
    338 void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES]);
    339 
    340 /* Aliases */
    341 
    342 #define crypto_aead_chacha20poly1305_IETF_KEYBYTES         crypto_aead_chacha20poly1305_ietf_KEYBYTES
    343 #define crypto_aead_chacha20poly1305_IETF_NSECBYTES        crypto_aead_chacha20poly1305_ietf_NSECBYTES
    344 #define crypto_aead_chacha20poly1305_IETF_NPUBBYTES        crypto_aead_chacha20poly1305_ietf_NPUBBYTES
    345 #define crypto_aead_chacha20poly1305_IETF_ABYTES           crypto_aead_chacha20poly1305_ietf_ABYTES
    346 #define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX
    347 
    348 #ifdef __cplusplus
    349 }
    350 #endif
    351 
    352 #endif
    353 #ifndef crypto_aead_chacha20poly1305_H
    354 #define crypto_aead_chacha20poly1305_H
    355 
    356 #if 0
    357 #include <stddef.h>
    358 #endif
    359 #include "export.h"
    360 
    361 #ifdef __cplusplus
    362 # ifdef __GNUC__
    363 #  pragma GCC diagnostic ignored "-Wlong-long"
    364 # endif
    365 extern "C" {
    366 #endif
    367 
    368 /* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */
    369 
    370 #define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U
    371 SODIUM_EXPORT
    372 size_t crypto_aead_chacha20poly1305_ietf_keybytes(void);
    373 
    374 #define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U
    375 SODIUM_EXPORT
    376 size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void);
    377 
    378 #define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U
    379 
    380 SODIUM_EXPORT
    381 size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void);
    382 
    383 #define crypto_aead_chacha20poly1305_ietf_ABYTES 16U
    384 SODIUM_EXPORT
    385 size_t crypto_aead_chacha20poly1305_ietf_abytes(void);
    386 
    387 #define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \
    388     SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \
    389                (64ULL * (1ULL << 32) - 64ULL) - crypto_aead_chacha20poly1305_ietf_ABYTES)
    390 SODIUM_EXPORT
    391 size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void);
    392 
    393 SODIUM_EXPORT
    394 int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c,
    395                                               unsigned long long *clen_p,
    396                                               const unsigned char *m,
    397                                               unsigned long long mlen,
    398                                               const unsigned char *ad,
    399                                               unsigned long long adlen,
    400                                               const unsigned char *nsec,
    401                                               const unsigned char *npub,
    402                                               const unsigned char *k);
    403 
    404 SODIUM_EXPORT
    405 int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m,
    406                                               unsigned long long *mlen_p,
    407                                               unsigned char *nsec,
    408                                               const unsigned char *c,
    409                                               unsigned long long clen,
    410                                               const unsigned char *ad,
    411                                               unsigned long long adlen,
    412                                               const unsigned char *npub,
    413                                               const unsigned char *k)
    414             __attribute__ ((warn_unused_result));
    415 
    416 SODIUM_EXPORT
    417 int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c,
    418                                                        unsigned char *mac,
    419                                                        unsigned long long *maclen_p,
    420                                                        const unsigned char *m,
    421                                                        unsigned long long mlen,
    422                                                        const unsigned char *ad,
    423                                                        unsigned long long adlen,
    424                                                        const unsigned char *nsec,
    425                                                        const unsigned char *npub,
    426                                                        const unsigned char *k);
    427 
    428 SODIUM_EXPORT
    429 int crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m,
    430                                                        unsigned char *nsec,
    431                                                        const unsigned char *c,
    432                                                        unsigned long long clen,
    433                                                        const unsigned char *mac,
    434                                                        const unsigned char *ad,
    435                                                        unsigned long long adlen,
    436                                                        const unsigned char *npub,
    437                                                        const unsigned char *k)
    438         __attribute__ ((warn_unused_result));
    439 
    440 SODIUM_EXPORT
    441 void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES]);
    442 
    443 /* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */
    444 
    445 #define crypto_aead_chacha20poly1305_KEYBYTES 32U
    446 SODIUM_EXPORT
    447 size_t crypto_aead_chacha20poly1305_keybytes(void);
    448 
    449 #define crypto_aead_chacha20poly1305_NSECBYTES 0U
    450 SODIUM_EXPORT
    451 size_t crypto_aead_chacha20poly1305_nsecbytes(void);
    452 
    453 #define crypto_aead_chacha20poly1305_NPUBBYTES 8U
    454 SODIUM_EXPORT
    455 size_t crypto_aead_chacha20poly1305_npubbytes(void);
    456 
    457 #define crypto_aead_chacha20poly1305_ABYTES 16U
    458 SODIUM_EXPORT
    459 size_t crypto_aead_chacha20poly1305_abytes(void);
    460 
    461 #define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \
    462     (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES)
    463 SODIUM_EXPORT
    464 size_t crypto_aead_chacha20poly1305_messagebytes_max(void);
    465 
    466 SODIUM_EXPORT
    467 int crypto_aead_chacha20poly1305_encrypt(unsigned char *c,
    468                                          unsigned long long *clen_p,
    469                                          const unsigned char *m,
    470                                          unsigned long long mlen,
    471                                          const unsigned char *ad,
    472                                          unsigned long long adlen,
    473                                          const unsigned char *nsec,
    474                                          const unsigned char *npub,
    475                                          const unsigned char *k);
    476 
    477 SODIUM_EXPORT
    478 int crypto_aead_chacha20poly1305_decrypt(unsigned char *m,
    479                                          unsigned long long *mlen_p,
    480                                          unsigned char *nsec,
    481                                          const unsigned char *c,
    482                                          unsigned long long clen,
    483                                          const unsigned char *ad,
    484                                          unsigned long long adlen,
    485                                          const unsigned char *npub,
    486                                          const unsigned char *k)
    487             __attribute__ ((warn_unused_result));
    488 
    489 SODIUM_EXPORT
    490 int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c,
    491                                                   unsigned char *mac,
    492                                                   unsigned long long *maclen_p,
    493                                                   const unsigned char *m,
    494                                                   unsigned long long mlen,
    495                                                   const unsigned char *ad,
    496                                                   unsigned long long adlen,
    497                                                   const unsigned char *nsec,
    498                                                   const unsigned char *npub,
    499                                                   const unsigned char *k);
    500 
    501 SODIUM_EXPORT
    502 int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m,
    503                                                   unsigned char *nsec,
    504                                                   const unsigned char *c,
    505                                                   unsigned long long clen,
    506                                                   const unsigned char *mac,
    507                                                   const unsigned char *ad,
    508                                                   unsigned long long adlen,
    509                                                   const unsigned char *npub,
    510                                                   const unsigned char *k)
    511         __attribute__ ((warn_unused_result));
    512 
    513 SODIUM_EXPORT
    514 void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES]);
    515 
    516 /* Aliases */
    517 
    518 #define crypto_aead_chacha20poly1305_IETF_KEYBYTES         crypto_aead_chacha20poly1305_ietf_KEYBYTES
    519 #define crypto_aead_chacha20poly1305_IETF_NSECBYTES        crypto_aead_chacha20poly1305_ietf_NSECBYTES
    520 #define crypto_aead_chacha20poly1305_IETF_NPUBBYTES        crypto_aead_chacha20poly1305_ietf_NPUBBYTES
    521 #define crypto_aead_chacha20poly1305_IETF_ABYTES           crypto_aead_chacha20poly1305_ietf_ABYTES
    522 #define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX
    523 
    524 #ifdef __cplusplus
    525 }
    526 #endif
    527 
    528 #endif
    529 #ifndef crypto_aead_chacha20poly1305_H
    530 #define crypto_aead_chacha20poly1305_H
    531 
    532 #if 0
    533 #include <stddef.h>
    534 #endif
    535 #include "export.h"
    536 
    537 #ifdef __cplusplus
    538 # ifdef __GNUC__
    539 #  pragma GCC diagnostic ignored "-Wlong-long"
    540 # endif
    541 extern "C" {
    542 #endif
    543 
    544 /* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */
    545 
    546 #define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U
    547 SODIUM_EXPORT
    548 size_t crypto_aead_chacha20poly1305_ietf_keybytes(void);
    549 
    550 #define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U
    551 SODIUM_EXPORT
    552 size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void);
    553 
    554 #define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U
    555 
    556 SODIUM_EXPORT
    557 size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void);
    558 
    559 #define crypto_aead_chacha20poly1305_ietf_ABYTES 16U
    560 SODIUM_EXPORT
    561 size_t crypto_aead_chacha20poly1305_ietf_abytes(void);
    562 
    563 #define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \
    564     SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \
    565                (64ULL * (1ULL << 32) - 64ULL) - crypto_aead_chacha20poly1305_ietf_ABYTES)
    566 SODIUM_EXPORT
    567 size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void);
    568 
    569 SODIUM_EXPORT
    570 int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c,
    571                                               unsigned long long *clen_p,
    572                                               const unsigned char *m,
    573                                               unsigned long long mlen,
    574                                               const unsigned char *ad,
    575                                               unsigned long long adlen,
    576                                               const unsigned char *nsec,
    577                                               const unsigned char *npub,
    578                                               const unsigned char *k);
    579 
    580 SODIUM_EXPORT
    581 int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m,
    582                                               unsigned long long *mlen_p,
    583                                               unsigned char *nsec,
    584                                               const unsigned char *c,
    585                                               unsigned long long clen,
    586                                               const unsigned char *ad,
    587                                               unsigned long long adlen,
    588                                               const unsigned char *npub,
    589                                               const unsigned char *k)
    590             __attribute__ ((warn_unused_result));
    591 
    592 SODIUM_EXPORT
    593 int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c,
    594                                                        unsigned char *mac,
    595                                                        unsigned long long *maclen_p,
    596                                                        const unsigned char *m,
    597                                                        unsigned long long mlen,
    598                                                        const unsigned char *ad,
    599                                                        unsigned long long adlen,
    600                                                        const unsigned char *nsec,
    601                                                        const unsigned char *npub,
    602                                                        const unsigned char *k);
    603 
    604 SODIUM_EXPORT
    605 int crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m,
    606                                                        unsigned char *nsec,
    607                                                        const unsigned char *c,
    608                                                        unsigned long long clen,
    609                                                        const unsigned char *mac,
    610                                                        const unsigned char *ad,
    611                                                        unsigned long long adlen,
    612                                                        const unsigned char *npub,
    613                                                        const unsigned char *k)
    614         __attribute__ ((warn_unused_result));
    615 
    616 SODIUM_EXPORT
    617 void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES]);
    618 
    619 /* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */
    620 
    621 #define crypto_aead_chacha20poly1305_KEYBYTES 32U
    622 SODIUM_EXPORT
    623 size_t crypto_aead_chacha20poly1305_keybytes(void);
    624 
    625 #define crypto_aead_chacha20poly1305_NSECBYTES 0U
    626 SODIUM_EXPORT
    627 size_t crypto_aead_chacha20poly1305_nsecbytes(void);
    628 
    629 #define crypto_aead_chacha20poly1305_NPUBBYTES 8U
    630 SODIUM_EXPORT
    631 size_t crypto_aead_chacha20poly1305_npubbytes(void);
    632 
    633 #define crypto_aead_chacha20poly1305_ABYTES 16U
    634 SODIUM_EXPORT
    635 size_t crypto_aead_chacha20poly1305_abytes(void);
    636 
    637 #define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \
    638     (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES)
    639 SODIUM_EXPORT
    640 size_t crypto_aead_chacha20poly1305_messagebytes_max(void);
    641 
    642 SODIUM_EXPORT
    643 int crypto_aead_chacha20poly1305_encrypt(unsigned char *c,
    644                                          unsigned long long *clen_p,
    645                                          const unsigned char *m,
    646                                          unsigned long long mlen,
    647                                          const unsigned char *ad,
    648                                          unsigned long long adlen,
    649                                          const unsigned char *nsec,
    650                                          const unsigned char *npub,
    651                                          const unsigned char *k);
    652 
    653 SODIUM_EXPORT
    654 int crypto_aead_chacha20poly1305_decrypt(unsigned char *m,
    655                                          unsigned long long *mlen_p,
    656                                          unsigned char *nsec,
    657                                          const unsigned char *c,
    658                                          unsigned long long clen,
    659                                          const unsigned char *ad,
    660                                          unsigned long long adlen,
    661                                          const unsigned char *npub,
    662                                          const unsigned char *k)
    663             __attribute__ ((warn_unused_result));
    664 
    665 SODIUM_EXPORT
    666 int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c,
    667                                                   unsigned char *mac,
    668                                                   unsigned long long *maclen_p,
    669                                                   const unsigned char *m,
    670                                                   unsigned long long mlen,
    671                                                   const unsigned char *ad,
    672                                                   unsigned long long adlen,
    673                                                   const unsigned char *nsec,
    674                                                   const unsigned char *npub,
    675                                                   const unsigned char *k);
    676 
    677 SODIUM_EXPORT
    678 int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m,
    679                                                   unsigned char *nsec,
    680                                                   const unsigned char *c,
    681                                                   unsigned long long clen,
    682                                                   const unsigned char *mac,
    683                                                   const unsigned char *ad,
    684                                                   unsigned long long adlen,
    685                                                   const unsigned char *npub,
    686                                                   const unsigned char *k)
    687         __attribute__ ((warn_unused_result));
    688 
    689 SODIUM_EXPORT
    690 void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES]);
    691 
    692 /* Aliases */
    693 
    694 #define crypto_aead_chacha20poly1305_IETF_KEYBYTES         crypto_aead_chacha20poly1305_ietf_KEYBYTES
    695 #define crypto_aead_chacha20poly1305_IETF_NSECBYTES        crypto_aead_chacha20poly1305_ietf_NSECBYTES
    696 #define crypto_aead_chacha20poly1305_IETF_NPUBBYTES        crypto_aead_chacha20poly1305_ietf_NPUBBYTES
    697 #define crypto_aead_chacha20poly1305_IETF_ABYTES           crypto_aead_chacha20poly1305_ietf_ABYTES
    698 #define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX
    699 
    700 #ifdef __cplusplus
    701 }
    702 #endif
    703 
    704 #endif
    705