libsodium (1.0.19)
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
14 extern "C" {
15 #endif
16
17 #ifdef __IBMC__
18 # pragma pack(1)
19 #elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
20 # pragma pack(1)
21 #else
22 # pragma pack(push, 1)
23 #endif
24
25 typedef struct CRYPTO_ALIGN(64) crypto_generichash_blake2b_state {
26 unsigned char opaque[384];
27 } crypto_generichash_blake2b_state;
28
29 #ifdef __IBMC__
30 # pragma pack(pop)
31 #elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
32 # pragma pack()
33 #else
34 # pragma pack(pop)
35 #endif
36
37 #define crypto_generichash_blake2b_BYTES_MIN 16U
38 SODIUM_EXPORT
39 size_t crypto_generichash_blake2b_bytes_min(void);
40
41 #define crypto_generichash_blake2b_BYTES_MAX 64U
42 SODIUM_EXPORT
43 size_t crypto_generichash_blake2b_bytes_max(void);
44
45 #define crypto_generichash_blake2b_BYTES 32U
46 SODIUM_EXPORT
47 size_t crypto_generichash_blake2b_bytes(void);
48
49 #define crypto_generichash_blake2b_KEYBYTES_MIN 16U
50 SODIUM_EXPORT
51 size_t crypto_generichash_blake2b_keybytes_min(void);
52
53 #define crypto_generichash_blake2b_KEYBYTES_MAX 64U
54 SODIUM_EXPORT
55 size_t crypto_generichash_blake2b_keybytes_max(void);
56
57 #define crypto_generichash_blake2b_KEYBYTES 32U
58 SODIUM_EXPORT
59 size_t crypto_generichash_blake2b_keybytes(void);
60
61 #define crypto_generichash_blake2b_SALTBYTES 16U
62 SODIUM_EXPORT
63 size_t crypto_generichash_blake2b_saltbytes(void);
64
65 #define crypto_generichash_blake2b_PERSONALBYTES 16U
66 SODIUM_EXPORT
67 size_t crypto_generichash_blake2b_personalbytes(void);
68
69 SODIUM_EXPORT
70 size_t crypto_generichash_blake2b_statebytes(void);
71
72 SODIUM_EXPORT
73 int crypto_generichash_blake2b(unsigned char *out, size_t outlen,
74 const unsigned char *in,
75 unsigned long long inlen,
76 const unsigned char *key, size_t keylen)
77 __attribute__ ((nonnull(1)));
78
79 SODIUM_EXPORT
80 int 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 __attribute__ ((nonnull(1)));
88
89 SODIUM_EXPORT
90 int crypto_generichash_blake2b_init(crypto_generichash_blake2b_state *state,
91 const unsigned char *key,
92 const size_t keylen, const size_t outlen)
93 __attribute__ ((nonnull(1)));
94
95 SODIUM_EXPORT
96 int crypto_generichash_blake2b_init_salt_personal(crypto_generichash_blake2b_state *state,
97 const unsigned char *key,
98 const size_t keylen, const size_t outlen,
99 const unsigned char *salt,
100 const unsigned char *personal)
101 __attribute__ ((nonnull(1)));
102
103 SODIUM_EXPORT
104 int crypto_generichash_blake2b_update(crypto_generichash_blake2b_state *state,
105 const unsigned char *in,
106 unsigned long long inlen)
107 __attribute__ ((nonnull(1)));
108
109 SODIUM_EXPORT
110 int crypto_generichash_blake2b_final(crypto_generichash_blake2b_state *state,
111 unsigned char *out,
112 const size_t outlen) __attribute__ ((nonnull));
113
114 SODIUM_EXPORT
115 void crypto_generichash_blake2b_keygen(unsigned char k[crypto_generichash_blake2b_KEYBYTES])
116 __attribute__ ((nonnull));
117
118 #ifdef __cplusplus
119 }
120 #endif
121
122 #endif