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