1#ifndef crypto_generichash_blake2b_H 2#define crypto_generichash_blake2b_H 3 4#include <stddef.h> 5#include <stdint.h> 6#include <stdlib.h> 7 8#include "export.h" 9 10#ifdef __cplusplus 11# ifdef __GNUC__ 12# pragma GCC diagnostic ignored "-Wlong-long" 13# endif 14extern "C" { 15#endif 16 17#if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) 18# pragma pack(1) 19#else 20# pragma pack(push, 1) 21#endif 22 23typedef struct CRYPTO_ALIGN(64) crypto_generichash_blake2b_state { 24 uint64_t h[8]; 25 uint64_t t[2]; 26 uint64_t f[2]; 27 uint8_t buf[2 * 128]; 28 size_t buflen; 29 uint8_t last_node; 30} crypto_generichash_blake2b_state; 31 32#if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) 33# pragma pack() 34#else 35# pragma pack(pop) 36#endif 37 38#define crypto_generichash_blake2b_BYTES_MIN 16U 39SODIUM_EXPORT 40size_t crypto_generichash_blake2b_bytes_min(void); 41 42#define crypto_generichash_blake2b_BYTES_MAX 64U 43SODIUM_EXPORT 44size_t crypto_generichash_blake2b_bytes_max(void); 45 46#define crypto_generichash_blake2b_BYTES 32U 47SODIUM_EXPORT 48size_t crypto_generichash_blake2b_bytes(void); 49 50#define crypto_generichash_blake2b_KEYBYTES_MIN 16U 51SODIUM_EXPORT 52size_t crypto_generichash_blake2b_keybytes_min(void); 53 54#define crypto_generichash_blake2b_KEYBYTES_MAX 64U 55SODIUM_EXPORT 56size_t crypto_generichash_blake2b_keybytes_max(void); 57 58#define crypto_generichash_blake2b_KEYBYTES 32U 59SODIUM_EXPORT 60size_t crypto_generichash_blake2b_keybytes(void); 61 62#define crypto_generichash_blake2b_SALTBYTES 16U 63SODIUM_EXPORT 64size_t crypto_generichash_blake2b_saltbytes(void); 65 66#define crypto_generichash_blake2b_PERSONALBYTES 16U 67SODIUM_EXPORT 68size_t crypto_generichash_blake2b_personalbytes(void); 69 70SODIUM_EXPORT 71size_t crypto_generichash_blake2b_statebytes(void); 72 73SODIUM_EXPORT 74int crypto_generichash_blake2b(unsigned char *out, size_t outlen, 75 const unsigned char *in, 76 unsigned long long inlen, 77 const unsigned char *key, size_t keylen); 78 79SODIUM_EXPORT 80int crypto_generichash_blake2b_salt_personal(unsigned char *out, size_t outlen, 81 const unsigned char *in, 82 unsigned long long inlen, 83 const unsigned char *key, 84 size_t keylen, 85 const unsigned char *salt, 86 const unsigned char *personal); 87 88SODIUM_EXPORT 89int crypto_generichash_blake2b_init(crypto_generichash_blake2b_state *state, 90 const unsigned char *key, 91 const size_t keylen, const size_t outlen); 92 93SODIUM_EXPORT 94int crypto_generichash_blake2b_init_salt_personal(crypto_generichash_blake2b_state *state, 95 const unsigned char *key, 96 const size_t keylen, const size_t outlen, 97 const unsigned char *salt, 98 const unsigned char *personal); 99 100SODIUM_EXPORT 101int crypto_generichash_blake2b_update(crypto_generichash_blake2b_state *state, 102 const unsigned char *in, 103 unsigned long long inlen); 104 105SODIUM_EXPORT 106int crypto_generichash_blake2b_final(crypto_generichash_blake2b_state *state, 107 unsigned char *out, 108 const size_t outlen); 109 110SODIUM_EXPORT 111void crypto_generichash_blake2b_keygen(unsigned char k[crypto_generichash_blake2b_KEYBYTES]); 112 113#ifdef __cplusplus 114} 115#endif 116 117#endif 118