crypto_generichash.h (2495B)
1 #ifndef crypto_generichash_H 2 #define crypto_generichash_H 3 4 #include <stddef.h> 5 6 #include "crypto_generichash_blake2b.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_generichash_BYTES_MIN crypto_generichash_blake2b_BYTES_MIN 17 SODIUM_EXPORT 18 size_t crypto_generichash_bytes_min(void); 19 20 #define crypto_generichash_BYTES_MAX crypto_generichash_blake2b_BYTES_MAX 21 SODIUM_EXPORT 22 size_t crypto_generichash_bytes_max(void); 23 24 #define crypto_generichash_BYTES crypto_generichash_blake2b_BYTES 25 SODIUM_EXPORT 26 size_t crypto_generichash_bytes(void); 27 28 #define crypto_generichash_KEYBYTES_MIN crypto_generichash_blake2b_KEYBYTES_MIN 29 SODIUM_EXPORT 30 size_t crypto_generichash_keybytes_min(void); 31 32 #define crypto_generichash_KEYBYTES_MAX crypto_generichash_blake2b_KEYBYTES_MAX 33 SODIUM_EXPORT 34 size_t crypto_generichash_keybytes_max(void); 35 36 #define crypto_generichash_KEYBYTES crypto_generichash_blake2b_KEYBYTES 37 SODIUM_EXPORT 38 size_t crypto_generichash_keybytes(void); 39 40 #define crypto_generichash_PRIMITIVE "blake2b" 41 SODIUM_EXPORT 42 const char *crypto_generichash_primitive(void); 43 44 /* 45 * Important when writing bindings for other programming languages: 46 * the state address should be 64-bytes aligned. 47 */ 48 typedef crypto_generichash_blake2b_state crypto_generichash_state; 49 50 SODIUM_EXPORT 51 size_t crypto_generichash_statebytes(void); 52 53 SODIUM_EXPORT 54 int crypto_generichash(unsigned char *out, size_t outlen, 55 const unsigned char *in, unsigned long long inlen, 56 const unsigned char *key, size_t keylen) 57 __attribute__ ((nonnull(1))); 58 59 SODIUM_EXPORT 60 int crypto_generichash_init(crypto_generichash_state *state, 61 const unsigned char *key, 62 const size_t keylen, const size_t outlen) 63 __attribute__ ((nonnull(1))); 64 65 SODIUM_EXPORT 66 int crypto_generichash_update(crypto_generichash_state *state, 67 const unsigned char *in, 68 unsigned long long inlen) 69 __attribute__ ((nonnull(1))); 70 71 SODIUM_EXPORT 72 int crypto_generichash_final(crypto_generichash_state *state, 73 unsigned char *out, const size_t outlen) 74 __attribute__ ((nonnull)); 75 76 SODIUM_EXPORT 77 void crypto_generichash_keygen(unsigned char k[crypto_generichash_KEYBYTES]) 78 __attribute__ ((nonnull)); 79 80 #ifdef __cplusplus 81 } 82 #endif 83 84 #endif