quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

crypto_box.h (6838B)


      1 #ifndef crypto_box_H
      2 #define crypto_box_H
      3 
      4 /*
      5  * THREAD SAFETY: crypto_box_keypair() is thread-safe,
      6  * provided that sodium_init() was called before.
      7  *
      8  * Other functions are always thread-safe.
      9  */
     10 
     11 #include <stddef.h>
     12 
     13 #include "crypto_box_curve25519xsalsa20poly1305.h"
     14 #include "export.h"
     15 
     16 #ifdef __cplusplus
     17 # ifdef __GNUC__
     18 #  pragma GCC diagnostic ignored "-Wlong-long"
     19 # endif
     20 extern "C" {
     21 #endif
     22 
     23 #define crypto_box_SEEDBYTES crypto_box_curve25519xsalsa20poly1305_SEEDBYTES
     24 SODIUM_EXPORT
     25 size_t  crypto_box_seedbytes(void);
     26 
     27 #define crypto_box_PUBLICKEYBYTES crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES
     28 SODIUM_EXPORT
     29 size_t  crypto_box_publickeybytes(void);
     30 
     31 #define crypto_box_SECRETKEYBYTES crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES
     32 SODIUM_EXPORT
     33 size_t  crypto_box_secretkeybytes(void);
     34 
     35 #define crypto_box_NONCEBYTES crypto_box_curve25519xsalsa20poly1305_NONCEBYTES
     36 SODIUM_EXPORT
     37 size_t  crypto_box_noncebytes(void);
     38 
     39 #define crypto_box_MACBYTES crypto_box_curve25519xsalsa20poly1305_MACBYTES
     40 SODIUM_EXPORT
     41 size_t  crypto_box_macbytes(void);
     42 
     43 #define crypto_box_MESSAGEBYTES_MAX crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX
     44 SODIUM_EXPORT
     45 size_t  crypto_box_messagebytes_max(void);
     46 
     47 #define crypto_box_PRIMITIVE "curve25519xsalsa20poly1305"
     48 SODIUM_EXPORT
     49 const char *crypto_box_primitive(void);
     50 
     51 SODIUM_EXPORT
     52 int crypto_box_seed_keypair(unsigned char *pk, unsigned char *sk,
     53                             const unsigned char *seed)
     54             __attribute__ ((nonnull));
     55 
     56 SODIUM_EXPORT
     57 int crypto_box_keypair(unsigned char *pk, unsigned char *sk)
     58             __attribute__ ((nonnull));
     59 
     60 SODIUM_EXPORT
     61 int crypto_box_easy(unsigned char *c, const unsigned char *m,
     62                     unsigned long long mlen, const unsigned char *n,
     63                     const unsigned char *pk, const unsigned char *sk)
     64             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6)));
     65 
     66 SODIUM_EXPORT
     67 int crypto_box_open_easy(unsigned char *m, const unsigned char *c,
     68                          unsigned long long clen, const unsigned char *n,
     69                          const unsigned char *pk, const unsigned char *sk)
     70             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6)));
     71 
     72 SODIUM_EXPORT
     73 int crypto_box_detached(unsigned char *c, unsigned char *mac,
     74                         const unsigned char *m, unsigned long long mlen,
     75                         const unsigned char *n, const unsigned char *pk,
     76                         const unsigned char *sk)
     77             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7)));
     78 
     79 SODIUM_EXPORT
     80 int crypto_box_open_detached(unsigned char *m, const unsigned char *c,
     81                              const unsigned char *mac,
     82                              unsigned long long clen,
     83                              const unsigned char *n,
     84                              const unsigned char *pk,
     85                              const unsigned char *sk)
     86             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7)));
     87 
     88 /* -- Precomputation interface -- */
     89 
     90 #define crypto_box_BEFORENMBYTES crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES
     91 SODIUM_EXPORT
     92 size_t  crypto_box_beforenmbytes(void);
     93 
     94 SODIUM_EXPORT
     95 int crypto_box_beforenm(unsigned char *k, const unsigned char *pk,
     96                         const unsigned char *sk)
     97             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull));
     98 
     99 SODIUM_EXPORT
    100 int crypto_box_easy_afternm(unsigned char *c, const unsigned char *m,
    101                             unsigned long long mlen, const unsigned char *n,
    102                             const unsigned char *k) __attribute__ ((nonnull(1, 4, 5)));
    103 
    104 SODIUM_EXPORT
    105 int crypto_box_open_easy_afternm(unsigned char *m, const unsigned char *c,
    106                                  unsigned long long clen, const unsigned char *n,
    107                                  const unsigned char *k)
    108             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5)));
    109 
    110 SODIUM_EXPORT
    111 int crypto_box_detached_afternm(unsigned char *c, unsigned char *mac,
    112                                 const unsigned char *m, unsigned long long mlen,
    113                                 const unsigned char *n, const unsigned char *k)
    114             __attribute__ ((nonnull(1, 2, 5, 6)));
    115 
    116 SODIUM_EXPORT
    117 int crypto_box_open_detached_afternm(unsigned char *m, const unsigned char *c,
    118                                      const unsigned char *mac,
    119                                      unsigned long long clen, const unsigned char *n,
    120                                      const unsigned char *k)
    121             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6)));
    122 
    123 /* -- Ephemeral SK interface -- */
    124 
    125 #define crypto_box_SEALBYTES (crypto_box_PUBLICKEYBYTES + crypto_box_MACBYTES)
    126 SODIUM_EXPORT
    127 size_t crypto_box_sealbytes(void);
    128 
    129 SODIUM_EXPORT
    130 int crypto_box_seal(unsigned char *c, const unsigned char *m,
    131                     unsigned long long mlen, const unsigned char *pk)
    132             __attribute__ ((nonnull(1, 4)));
    133 
    134 SODIUM_EXPORT
    135 int crypto_box_seal_open(unsigned char *m, const unsigned char *c,
    136                          unsigned long long clen,
    137                          const unsigned char *pk, const unsigned char *sk)
    138             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5)));
    139 
    140 /* -- NaCl compatibility interface ; Requires padding -- */
    141 
    142 #define crypto_box_ZEROBYTES crypto_box_curve25519xsalsa20poly1305_ZEROBYTES
    143 SODIUM_EXPORT
    144 size_t  crypto_box_zerobytes(void);
    145 
    146 #define crypto_box_BOXZEROBYTES crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES
    147 SODIUM_EXPORT
    148 size_t  crypto_box_boxzerobytes(void);
    149 
    150 SODIUM_EXPORT
    151 int crypto_box(unsigned char *c, const unsigned char *m,
    152                unsigned long long mlen, const unsigned char *n,
    153                const unsigned char *pk, const unsigned char *sk)
    154             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6)));
    155 
    156 SODIUM_EXPORT
    157 int crypto_box_open(unsigned char *m, const unsigned char *c,
    158                     unsigned long long clen, const unsigned char *n,
    159                     const unsigned char *pk, const unsigned char *sk)
    160             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6)));
    161 
    162 SODIUM_EXPORT
    163 int crypto_box_afternm(unsigned char *c, const unsigned char *m,
    164                        unsigned long long mlen, const unsigned char *n,
    165                        const unsigned char *k) __attribute__ ((nonnull(1, 4, 5)));
    166 
    167 SODIUM_EXPORT
    168 int crypto_box_open_afternm(unsigned char *m, const unsigned char *c,
    169                             unsigned long long clen, const unsigned char *n,
    170                             const unsigned char *k)
    171             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5)));
    172 
    173 #ifdef __cplusplus
    174 }
    175 #endif
    176 
    177 #endif