libsodium (1.0.19)

(root)/
include/
sodium/
crypto_secretbox_xsalsa20poly1305.h
       1  #ifndef crypto_secretbox_xsalsa20poly1305_H
       2  #define crypto_secretbox_xsalsa20poly1305_H
       3  
       4  #include <stddef.h>
       5  #include "crypto_stream_xsalsa20.h"
       6  #include "export.h"
       7  
       8  #ifdef __cplusplus
       9  # ifdef __GNUC__
      10  #  pragma GCC diagnostic ignored "-Wlong-long"
      11  # endif
      12  extern "C" {
      13  #endif
      14  
      15  #define crypto_secretbox_xsalsa20poly1305_KEYBYTES 32U
      16  SODIUM_EXPORT
      17  size_t crypto_secretbox_xsalsa20poly1305_keybytes(void);
      18  
      19  #define crypto_secretbox_xsalsa20poly1305_NONCEBYTES 24U
      20  SODIUM_EXPORT
      21  size_t crypto_secretbox_xsalsa20poly1305_noncebytes(void);
      22  
      23  #define crypto_secretbox_xsalsa20poly1305_MACBYTES 16U
      24  SODIUM_EXPORT
      25  size_t crypto_secretbox_xsalsa20poly1305_macbytes(void);
      26  
      27  /* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */
      28  #define crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX \
      29      (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_secretbox_xsalsa20poly1305_MACBYTES)
      30  SODIUM_EXPORT
      31  size_t crypto_secretbox_xsalsa20poly1305_messagebytes_max(void);
      32  
      33  SODIUM_EXPORT
      34  int crypto_secretbox_xsalsa20poly1305(unsigned char *c,
      35                                        const unsigned char *m,
      36                                        unsigned long long mlen,
      37                                        const unsigned char *n,
      38                                        const unsigned char *k)
      39              __attribute__ ((nonnull(1, 4, 5)));
      40  
      41  SODIUM_EXPORT
      42  int crypto_secretbox_xsalsa20poly1305_open(unsigned char *m,
      43                                             const unsigned char *c,
      44                                             unsigned long long clen,
      45                                             const unsigned char *n,
      46                                             const unsigned char *k)
      47              __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5)));
      48  
      49  SODIUM_EXPORT
      50  void crypto_secretbox_xsalsa20poly1305_keygen(unsigned char k[crypto_secretbox_xsalsa20poly1305_KEYBYTES])
      51              __attribute__ ((nonnull));
      52  
      53  /* -- NaCl compatibility interface ; Requires padding -- */
      54  
      55  #define crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES 16U
      56  SODIUM_EXPORT
      57  size_t crypto_secretbox_xsalsa20poly1305_boxzerobytes(void);
      58  
      59  #define crypto_secretbox_xsalsa20poly1305_ZEROBYTES \
      60      (crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES + \
      61       crypto_secretbox_xsalsa20poly1305_MACBYTES)
      62  SODIUM_EXPORT
      63  size_t crypto_secretbox_xsalsa20poly1305_zerobytes(void);
      64  
      65  #ifdef __cplusplus
      66  }
      67  #endif
      68  
      69  #endif