Home | History | Annotate | Line # | Download | only in sodium
      1 
      2 #ifndef crypto_box_curve25519xchacha20poly1305_H
      3 #define crypto_box_curve25519xchacha20poly1305_H
      4 
      5 #include <stddef.h>
      6 #include "crypto_stream_xchacha20.h"
      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 #define crypto_box_curve25519xchacha20poly1305_SEEDBYTES 32U
     17 SODIUM_EXPORT
     18 size_t crypto_box_curve25519xchacha20poly1305_seedbytes(void);
     19 
     20 #define crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES 32U
     21 SODIUM_EXPORT
     22 size_t crypto_box_curve25519xchacha20poly1305_publickeybytes(void);
     23 
     24 #define crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES 32U
     25 SODIUM_EXPORT
     26 size_t crypto_box_curve25519xchacha20poly1305_secretkeybytes(void);
     27 
     28 #define crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES 32U
     29 SODIUM_EXPORT
     30 size_t crypto_box_curve25519xchacha20poly1305_beforenmbytes(void);
     31 
     32 #define crypto_box_curve25519xchacha20poly1305_NONCEBYTES 24U
     33 SODIUM_EXPORT
     34 size_t crypto_box_curve25519xchacha20poly1305_noncebytes(void);
     35 
     36 #define crypto_box_curve25519xchacha20poly1305_MACBYTES 16U
     37 SODIUM_EXPORT
     38 size_t crypto_box_curve25519xchacha20poly1305_macbytes(void);
     39 
     40 #define crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX \
     41     (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_box_curve25519xchacha20poly1305_MACBYTES)
     42 SODIUM_EXPORT
     43 size_t crypto_box_curve25519xchacha20poly1305_messagebytes_max(void);
     44 
     45 SODIUM_EXPORT
     46 int crypto_box_curve25519xchacha20poly1305_seed_keypair(unsigned char *pk,
     47                                                         unsigned char *sk,
     48                                                         const unsigned char *seed);
     49 
     50 SODIUM_EXPORT
     51 int crypto_box_curve25519xchacha20poly1305_keypair(unsigned char *pk,
     52                                                    unsigned char *sk);
     53 
     54 SODIUM_EXPORT
     55 int crypto_box_curve25519xchacha20poly1305_easy(unsigned char *c,
     56                                                 const unsigned char *m,
     57                                                 unsigned long long mlen,
     58                                                 const unsigned char *n,
     59                                                 const unsigned char *pk,
     60                                                 const unsigned char *sk)
     61             __attribute__ ((warn_unused_result));
     62 
     63 SODIUM_EXPORT
     64 int crypto_box_curve25519xchacha20poly1305_open_easy(unsigned char *m,
     65                                                      const unsigned char *c,
     66                                                      unsigned long long clen,
     67                                                      const unsigned char *n,
     68                                                      const unsigned char *pk,
     69                                                      const unsigned char *sk)
     70             __attribute__ ((warn_unused_result));
     71 
     72 SODIUM_EXPORT
     73 int crypto_box_curve25519xchacha20poly1305_detached(unsigned char *c,
     74                                                     unsigned char *mac,
     75                                                     const unsigned char *m,
     76                                                     unsigned long long mlen,
     77                                                     const unsigned char *n,
     78                                                     const unsigned char *pk,
     79                                                     const unsigned char *sk)
     80             __attribute__ ((warn_unused_result));
     81 
     82 SODIUM_EXPORT
     83 int crypto_box_curve25519xchacha20poly1305_open_detached(unsigned char *m,
     84                                                          const unsigned char *c,
     85                                                          const unsigned char *mac,
     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));
     91 
     92 /* -- Precomputation interface -- */
     93 
     94 SODIUM_EXPORT
     95 int crypto_box_curve25519xchacha20poly1305_beforenm(unsigned char *k,
     96                                                     const unsigned char *pk,
     97                                                     const unsigned char *sk)
     98             __attribute__ ((warn_unused_result));
     99 
    100 SODIUM_EXPORT
    101 int crypto_box_curve25519xchacha20poly1305_easy_afternm(unsigned char *c,
    102                                                         const unsigned char *m,
    103                                                         unsigned long long mlen,
    104                                                         const unsigned char *n,
    105                                                         const unsigned char *k);
    106 
    107 SODIUM_EXPORT
    108 int crypto_box_curve25519xchacha20poly1305_open_easy_afternm(unsigned char *m,
    109                                                              const unsigned char *c,
    110                                                              unsigned long long clen,
    111                                                              const unsigned char *n,
    112                                                              const unsigned char *k)
    113             __attribute__ ((warn_unused_result));
    114 
    115 SODIUM_EXPORT
    116 int crypto_box_curve25519xchacha20poly1305_detached_afternm(unsigned char *c,
    117                                                             unsigned char *mac,
    118                                                             const unsigned char *m,
    119                                                             unsigned long long mlen,
    120                                                             const unsigned char *n,
    121                                                             const unsigned char *k);
    122 
    123 SODIUM_EXPORT
    124 int crypto_box_curve25519xchacha20poly1305_open_detached_afternm(unsigned char *m,
    125                                                                  const unsigned char *c,
    126                                                                  const unsigned char *mac,
    127                                                                  unsigned long long clen,
    128                                                                  const unsigned char *n,
    129                                                                  const unsigned char *k)
    130             __attribute__ ((warn_unused_result));
    131 
    132 /* -- Ephemeral SK interface -- */
    133 
    134 #define crypto_box_curve25519xchacha20poly1305_SEALBYTES \
    135     (crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES + \
    136      crypto_box_curve25519xchacha20poly1305_MACBYTES)
    137 
    138 SODIUM_EXPORT
    139 size_t crypto_box_curve25519xchacha20poly1305_sealbytes(void);
    140 
    141 SODIUM_EXPORT
    142 int crypto_box_curve25519xchacha20poly1305_seal(unsigned char *c,
    143                                                 const unsigned char *m,
    144                                                 unsigned long long mlen,
    145                                                 const unsigned char *pk);
    146 
    147 SODIUM_EXPORT
    148 int crypto_box_curve25519xchacha20poly1305_seal_open(unsigned char *m,
    149                                                      const unsigned char *c,
    150                                                      unsigned long long clen,
    151                                                      const unsigned char *pk,
    152                                                      const unsigned char *sk)
    153             __attribute__ ((warn_unused_result));
    154 
    155 #ifdef __cplusplus
    156 }
    157 #endif
    158 
    159 #endif
    160