gnunet-android

GNUnet for Android
Log | Files | Refs | README

crypto_aead_chacha20poly1305.h (8782B)


      1 #ifndef crypto_aead_chacha20poly1305_H
      2 #define crypto_aead_chacha20poly1305_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 /* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */
     15 
     16 #define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U
     17 SODIUM_EXPORT
     18 size_t crypto_aead_chacha20poly1305_ietf_keybytes(void);
     19 
     20 #define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U
     21 SODIUM_EXPORT
     22 size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void);
     23 
     24 #define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U
     25 
     26 SODIUM_EXPORT
     27 size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void);
     28 
     29 #define crypto_aead_chacha20poly1305_ietf_ABYTES 16U
     30 SODIUM_EXPORT
     31 size_t crypto_aead_chacha20poly1305_ietf_abytes(void);
     32 
     33 #define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \
     34     SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \
     35                (64ULL * ((1ULL << 32) - 1ULL)))
     36 SODIUM_EXPORT
     37 size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void);
     38 
     39 SODIUM_EXPORT
     40 int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c,
     41                                               unsigned long long *clen_p,
     42                                               const unsigned char *m,
     43                                               unsigned long long mlen,
     44                                               const unsigned char *ad,
     45                                               unsigned long long adlen,
     46                                               const unsigned char *nsec,
     47                                               const unsigned char *npub,
     48                                               const unsigned char *k)
     49             __attribute__ ((nonnull(1, 8, 9)));
     50 
     51 SODIUM_EXPORT
     52 int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m,
     53                                               unsigned long long *mlen_p,
     54                                               unsigned char *nsec,
     55                                               const unsigned char *c,
     56                                               unsigned long long clen,
     57                                               const unsigned char *ad,
     58                                               unsigned long long adlen,
     59                                               const unsigned char *npub,
     60                                               const unsigned char *k)
     61             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9)));
     62 
     63 SODIUM_EXPORT
     64 int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c,
     65                                                        unsigned char *mac,
     66                                                        unsigned long long *maclen_p,
     67                                                        const unsigned char *m,
     68                                                        unsigned long long mlen,
     69                                                        const unsigned char *ad,
     70                                                        unsigned long long adlen,
     71                                                        const unsigned char *nsec,
     72                                                        const unsigned char *npub,
     73                                                        const unsigned char *k)
     74             __attribute__ ((nonnull(1, 2, 9, 10)));
     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)) __attribute__ ((nonnull(3, 5, 8, 9)));
     87 
     88 SODIUM_EXPORT
     89 void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES])
     90             __attribute__ ((nonnull));
     91 
     92 /* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */
     93 
     94 #define crypto_aead_chacha20poly1305_KEYBYTES 32U
     95 SODIUM_EXPORT
     96 size_t crypto_aead_chacha20poly1305_keybytes(void);
     97 
     98 #define crypto_aead_chacha20poly1305_NSECBYTES 0U
     99 SODIUM_EXPORT
    100 size_t crypto_aead_chacha20poly1305_nsecbytes(void);
    101 
    102 #define crypto_aead_chacha20poly1305_NPUBBYTES 8U
    103 SODIUM_EXPORT
    104 size_t crypto_aead_chacha20poly1305_npubbytes(void);
    105 
    106 #define crypto_aead_chacha20poly1305_ABYTES 16U
    107 SODIUM_EXPORT
    108 size_t crypto_aead_chacha20poly1305_abytes(void);
    109 
    110 #define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \
    111     (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES)
    112 SODIUM_EXPORT
    113 size_t crypto_aead_chacha20poly1305_messagebytes_max(void);
    114 
    115 SODIUM_EXPORT
    116 int crypto_aead_chacha20poly1305_encrypt(unsigned char *c,
    117                                          unsigned long long *clen_p,
    118                                          const unsigned char *m,
    119                                          unsigned long long mlen,
    120                                          const unsigned char *ad,
    121                                          unsigned long long adlen,
    122                                          const unsigned char *nsec,
    123                                          const unsigned char *npub,
    124                                          const unsigned char *k)
    125             __attribute__ ((nonnull(1, 8, 9)));
    126 
    127 SODIUM_EXPORT
    128 int crypto_aead_chacha20poly1305_decrypt(unsigned char *m,
    129                                          unsigned long long *mlen_p,
    130                                          unsigned char *nsec,
    131                                          const unsigned char *c,
    132                                          unsigned long long clen,
    133                                          const unsigned char *ad,
    134                                          unsigned long long adlen,
    135                                          const unsigned char *npub,
    136                                          const unsigned char *k)
    137             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9)));
    138 
    139 SODIUM_EXPORT
    140 int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c,
    141                                                   unsigned char *mac,
    142                                                   unsigned long long *maclen_p,
    143                                                   const unsigned char *m,
    144                                                   unsigned long long mlen,
    145                                                   const unsigned char *ad,
    146                                                   unsigned long long adlen,
    147                                                   const unsigned char *nsec,
    148                                                   const unsigned char *npub,
    149                                                   const unsigned char *k)
    150             __attribute__ ((nonnull(1, 2, 9, 10)));
    151 
    152 SODIUM_EXPORT
    153 int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m,
    154                                                   unsigned char *nsec,
    155                                                   const unsigned char *c,
    156                                                   unsigned long long clen,
    157                                                   const unsigned char *mac,
    158                                                   const unsigned char *ad,
    159                                                   unsigned long long adlen,
    160                                                   const unsigned char *npub,
    161                                                   const unsigned char *k)
    162             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9)));
    163 
    164 SODIUM_EXPORT
    165 void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES])
    166             __attribute__ ((nonnull));
    167 
    168 /* Aliases */
    169 
    170 #define crypto_aead_chacha20poly1305_IETF_KEYBYTES         crypto_aead_chacha20poly1305_ietf_KEYBYTES
    171 #define crypto_aead_chacha20poly1305_IETF_NSECBYTES        crypto_aead_chacha20poly1305_ietf_NSECBYTES
    172 #define crypto_aead_chacha20poly1305_IETF_NPUBBYTES        crypto_aead_chacha20poly1305_ietf_NPUBBYTES
    173 #define crypto_aead_chacha20poly1305_IETF_ABYTES           crypto_aead_chacha20poly1305_ietf_ABYTES
    174 #define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX
    175 
    176 #ifdef __cplusplus
    177 }
    178 #endif
    179 
    180 #endif