gnunet-android

GNUnet for Android
Log | Files | Refs | README

crypto_secretbox_xsalsa20poly1305.h (2419B)


      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