gnunet-android

GNUnet for Android
Log | Files | Refs | README

crypto_box_curve25519xchacha20poly1305.h (7957B)


      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             __attribute__ ((nonnull));
     50 
     51 SODIUM_EXPORT
     52 int crypto_box_curve25519xchacha20poly1305_keypair(unsigned char *pk,
     53                                                    unsigned char *sk)
     54             __attribute__ ((nonnull));
     55 
     56 SODIUM_EXPORT
     57 int crypto_box_curve25519xchacha20poly1305_easy(unsigned char *c,
     58                                                 const unsigned char *m,
     59                                                 unsigned long long mlen,
     60                                                 const unsigned char *n,
     61                                                 const unsigned char *pk,
     62                                                 const unsigned char *sk)
     63             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6)));
     64 
     65 SODIUM_EXPORT
     66 int crypto_box_curve25519xchacha20poly1305_open_easy(unsigned char *m,
     67                                                      const unsigned char *c,
     68                                                      unsigned long long clen,
     69                                                      const unsigned char *n,
     70                                                      const unsigned char *pk,
     71                                                      const unsigned char *sk)
     72             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6)));
     73 
     74 SODIUM_EXPORT
     75 int crypto_box_curve25519xchacha20poly1305_detached(unsigned char *c,
     76                                                     unsigned char *mac,
     77                                                     const unsigned char *m,
     78                                                     unsigned long long mlen,
     79                                                     const unsigned char *n,
     80                                                     const unsigned char *pk,
     81                                                     const unsigned char *sk)
     82             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7)));
     83 
     84 SODIUM_EXPORT
     85 int crypto_box_curve25519xchacha20poly1305_open_detached(unsigned char *m,
     86                                                          const unsigned char *c,
     87                                                          const unsigned char *mac,
     88                                                          unsigned long long clen,
     89                                                          const unsigned char *n,
     90                                                          const unsigned char *pk,
     91                                                          const unsigned char *sk)
     92             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7)));
     93 
     94 /* -- Precomputation interface -- */
     95 
     96 SODIUM_EXPORT
     97 int crypto_box_curve25519xchacha20poly1305_beforenm(unsigned char *k,
     98                                                     const unsigned char *pk,
     99                                                     const unsigned char *sk)
    100             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull));
    101 
    102 SODIUM_EXPORT
    103 int crypto_box_curve25519xchacha20poly1305_easy_afternm(unsigned char *c,
    104                                                         const unsigned char *m,
    105                                                         unsigned long long mlen,
    106                                                         const unsigned char *n,
    107                                                         const unsigned char *k)
    108             __attribute__ ((nonnull(1, 4, 5)));
    109 
    110 SODIUM_EXPORT
    111 int crypto_box_curve25519xchacha20poly1305_open_easy_afternm(unsigned char *m,
    112                                                              const unsigned char *c,
    113                                                              unsigned long long clen,
    114                                                              const unsigned char *n,
    115                                                              const unsigned char *k)
    116             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5)));
    117 
    118 SODIUM_EXPORT
    119 int crypto_box_curve25519xchacha20poly1305_detached_afternm(unsigned char *c,
    120                                                             unsigned char *mac,
    121                                                             const unsigned char *m,
    122                                                             unsigned long long mlen,
    123                                                             const unsigned char *n,
    124                                                             const unsigned char *k)
    125             __attribute__ ((nonnull(1, 2, 5, 6)));
    126 
    127 SODIUM_EXPORT
    128 int crypto_box_curve25519xchacha20poly1305_open_detached_afternm(unsigned char *m,
    129                                                                  const unsigned char *c,
    130                                                                  const unsigned char *mac,
    131                                                                  unsigned long long clen,
    132                                                                  const unsigned char *n,
    133                                                                  const unsigned char *k)
    134             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6)));
    135 
    136 /* -- Ephemeral SK interface -- */
    137 
    138 #define crypto_box_curve25519xchacha20poly1305_SEALBYTES \
    139     (crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES + \
    140      crypto_box_curve25519xchacha20poly1305_MACBYTES)
    141 
    142 SODIUM_EXPORT
    143 size_t crypto_box_curve25519xchacha20poly1305_sealbytes(void);
    144 
    145 SODIUM_EXPORT
    146 int crypto_box_curve25519xchacha20poly1305_seal(unsigned char *c,
    147                                                 const unsigned char *m,
    148                                                 unsigned long long mlen,
    149                                                 const unsigned char *pk)
    150             __attribute__ ((nonnull(1, 4)));
    151 
    152 SODIUM_EXPORT
    153 int crypto_box_curve25519xchacha20poly1305_seal_open(unsigned char *m,
    154                                                      const unsigned char *c,
    155                                                      unsigned long long clen,
    156                                                      const unsigned char *pk,
    157                                                      const unsigned char *sk)
    158             __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5)));
    159 
    160 #ifdef __cplusplus
    161 }
    162 #endif
    163 
    164 #endif