CRYPTO-C v1.1.3
C/C++ Documentation
blake2b.h
Go to the documentation of this file.
1
13/* include guard */
14#ifndef CRYPTO_BLAKE2B_H
15#define CRYPTO_BLAKE2B_H
16
17
18#include "utildev.h"
19
20#define BLAKE2BLEN256 32
21#define BLAKE2BLEN384 48
22#define BLAKE2BLEN512 64
24/* Number of Blake2b rounds */
25#define BLAKE2BROUNDS 12
26
27/* G Mixing function */
28#define B2B_G(a, b, c, d, x, y) \
29 v[a] = v[a] + v[b] + x; \
30 v[d] = ror64(v[d] ^ v[a], 32); \
31 v[c] = v[c] + v[d]; \
32 v[b] = ror64(v[b] ^ v[c], 24); \
33 v[a] = v[a] + v[b] + y; \
34 v[d] = ror64(v[d] ^ v[a], 16); \
35 v[c] = v[c] + v[d]; \
36 v[b] = ror64(v[b] ^ v[c], 63);
37
38typedef struct {
39 union {
40 uint8_t b[128];
41 uint64_t q[16];
42 } in;
43 uint64_t h[8];
44 uint64_t t[2];
45 uint64_t c;
46 uint64_t outlen;
49/* C/C++ compatible function prototypes */
50#ifdef __cplusplus
51extern "C" {
52#endif
53
54int blake2b_init(BLAKE2B_CTX *ctx, const void *key, int keylen,
55 int outlen);
56void blake2b_update(BLAKE2B_CTX *ctx, const void *in, size_t inlen);
57void blake2b_final(BLAKE2B_CTX *ctx, void *out);
58int blake2b(const void *in, size_t inlen, const void *key,
59 int keylen, void *out, int outlen);
60
61/* CUDA testing functions */
62#ifdef CUDA
63 void test_kcu_blake2b(
64 const void *in, size_t *inlen, size_t max_inlen,
65 const void *key, int *keylen, int max_keylen,
66 void *out, int outlen, int *ret, int num);
67#endif
68
69/* end extern "C" {} for C++ */
70#ifdef __cplusplus
71}
72#endif
73
74/* end include guard */
75#endif
int blake2b_init(BLAKE2B_CTX *ctx, const void *key, int keylen, int outlen)
Initialize a Blake2b context with optional key.
Definition: blake2b.c:122
void blake2b_update(BLAKE2B_CTX *ctx, const void *in, size_t inlen)
Add inlen bytes from in to a Blake2b context for hashing.
Definition: blake2b.c:91
int blake2b(const void *in, size_t inlen, const void *key, int keylen, void *out, int outlen)
Convenient all-in-one Blake2b computation.
Definition: blake2b.c:185
void blake2b_final(BLAKE2B_CTX *ctx, void *out)
Finalize a Blake2b message digest.
Definition: blake2b.c:158
Definition: blake2b.h:38
uint64_t outlen
Digest length.
Definition: blake2b.h:46
uint64_t c
Length of buffered input.
Definition: blake2b.h:45
Device utilities and includes support.