libsodium (1.0.19)

(root)/
include/
sodium/
crypto_aead_chacha20poly1305.h
       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