libsodium (1.0.19)

(root)/
include/
sodium/
crypto_box_curve25519xsalsa20poly1305.h
       1  #ifndef crypto_box_curve25519xsalsa20poly1305_H
       2  #define crypto_box_curve25519xsalsa20poly1305_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_box_curve25519xsalsa20poly1305_SEEDBYTES 32U
      16  SODIUM_EXPORT
      17  size_t crypto_box_curve25519xsalsa20poly1305_seedbytes(void);
      18  
      19  #define crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES 32U
      20  SODIUM_EXPORT
      21  size_t crypto_box_curve25519xsalsa20poly1305_publickeybytes(void);
      22  
      23  #define crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES 32U
      24  SODIUM_EXPORT
      25  size_t crypto_box_curve25519xsalsa20poly1305_secretkeybytes(void);
      26  
      27  #define crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES 32U
      28  SODIUM_EXPORT
      29  size_t crypto_box_curve25519xsalsa20poly1305_beforenmbytes(void);
      30  
      31  #define crypto_box_curve25519xsalsa20poly1305_NONCEBYTES 24U
      32  SODIUM_EXPORT
      33  size_t crypto_box_curve25519xsalsa20poly1305_noncebytes(void);
      34  
      35  #define crypto_box_curve25519xsalsa20poly1305_MACBYTES 16U
      36  SODIUM_EXPORT
      37  size_t crypto_box_curve25519xsalsa20poly1305_macbytes(void);
      38  
      39  /* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */
      40  #define crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX \
      41      (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_box_curve25519xsalsa20poly1305_MACBYTES)
      42  SODIUM_EXPORT
      43  size_t crypto_box_curve25519xsalsa20poly1305_messagebytes_max(void);
      44  
      45  SODIUM_EXPORT
      46  int crypto_box_curve25519xsalsa20poly1305_seed_keypair(unsigned char *pk,
      47                                                         unsigned char *sk,
      48                                                         const unsigned char *seed)
      49              __attribute__ ((nonnull));
      50  
      51  SODIUM_EXPORT
      52  int crypto_box_curve25519xsalsa20poly1305_keypair(unsigned char *pk,
      53                                                    unsigned char *sk)
      54              __attribute__ ((nonnull));
      55  
      56  SODIUM_EXPORT
      57  int crypto_box_curve25519xsalsa20poly1305_beforenm(unsigned char *k,
      58                                                     const unsigned char *pk,
      59                                                     const unsigned char *sk)
      60              __attribute__ ((warn_unused_result)) __attribute__ ((nonnull));
      61  
      62  /* -- NaCl compatibility interface ; Requires padding -- */
      63  
      64  #define crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES 16U
      65  SODIUM_EXPORT
      66  size_t crypto_box_curve25519xsalsa20poly1305_boxzerobytes(void);
      67  
      68  #define crypto_box_curve25519xsalsa20poly1305_ZEROBYTES \
      69      (crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES + \
      70       crypto_box_curve25519xsalsa20poly1305_MACBYTES)
      71  SODIUM_EXPORT
      72  size_t crypto_box_curve25519xsalsa20poly1305_zerobytes(void);
      73  
      74  SODIUM_EXPORT
      75  int crypto_box_curve25519xsalsa20poly1305(unsigned char *c,
      76                                            const unsigned char *m,
      77                                            unsigned long long mlen,
      78                                            const unsigned char *n,
      79                                            const unsigned char *pk,
      80                                            const unsigned char *sk)
      81              __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6)));
      82  
      83  SODIUM_EXPORT
      84  int crypto_box_curve25519xsalsa20poly1305_open(unsigned char *m,
      85                                                 const unsigned char *c,
      86                                                 unsigned long long clen,
      87                                                 const unsigned char *n,
      88                                                 const unsigned char *pk,
      89                                                 const unsigned char *sk)
      90              __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6)));
      91  
      92  SODIUM_EXPORT
      93  int crypto_box_curve25519xsalsa20poly1305_afternm(unsigned char *c,
      94                                                    const unsigned char *m,
      95                                                    unsigned long long mlen,
      96                                                    const unsigned char *n,
      97                                                    const unsigned char *k)
      98              __attribute__ ((nonnull(1, 4, 5)));
      99  
     100  SODIUM_EXPORT
     101  int crypto_box_curve25519xsalsa20poly1305_open_afternm(unsigned char *m,
     102                                                         const unsigned char *c,
     103                                                         unsigned long long clen,
     104                                                         const unsigned char *n,
     105                                                         const unsigned char *k)
     106              __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5)));
     107  
     108  #ifdef __cplusplus
     109  }
     110  #endif
     111  
     112  #endif