diff options
| author | Jack O'Connor <[email protected]> | 2020-01-08 22:51:17 -0500 |
|---|---|---|
| committer | Jack O'Connor <[email protected]> | 2020-01-09 09:48:52 -0500 |
| commit | a7579d30ad16c19306cedeeacd919e319aff1089 (patch) | |
| tree | 572423d117912988ccbd58bbbab305ec8bd09ce0 /c/blake3.h | |
| parent | 56ced5b422f0289e5a26aedf2a7bc452ace66f1f (diff) | |
merge BLAKE3-c into this repo
This is commit 4476d9da0e370993823e7ad17592b84e905afd76 of
https://github.com/veorq/BLAKE3-c.
Diffstat (limited to 'c/blake3.h')
| -rw-r--r-- | c/blake3.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/c/blake3.h b/c/blake3.h new file mode 100644 index 0000000..c3cf6be --- /dev/null +++ b/c/blake3.h @@ -0,0 +1,35 @@ +#pragma once + +#include <stdint.h> + +#define BLAKE3_KEY_LEN 32 +#define BLAKE3_OUT_LEN 32 +#define BLAKE3_BLOCK_LEN 64 +#define BLAKE3_CHUNK_LEN 1024 +#define BLAKE3_MAX_DEPTH 54 +#define BLAKE3_MAX_SIMD_DEGREE 16 + +typedef struct { + uint32_t cv[8]; + uint64_t chunk_counter; + uint8_t buf[BLAKE3_BLOCK_LEN]; + uint8_t buf_len; + uint8_t blocks_compressed; + uint8_t flags; +} blake3_chunk_state; + +typedef struct { + uint32_t key[8]; + blake3_chunk_state chunk; + uint8_t cv_stack_len; + uint8_t cv_stack[BLAKE3_MAX_DEPTH * BLAKE3_OUT_LEN]; +} blake3_hasher; + +void blake3_hasher_init(blake3_hasher *self); +void blake3_hasher_init_keyed(blake3_hasher *self, + const uint8_t key[BLAKE3_KEY_LEN]); +void blake3_hasher_init_derive_key(blake3_hasher *self, const char *context); +void blake3_hasher_update(blake3_hasher *self, const void *input, + size_t input_len); +void blake3_hasher_finalize(const blake3_hasher *self, uint8_t *out, + size_t out_len); |
