aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libblake.h85
1 files changed, 54 insertions, 31 deletions
diff --git a/libblake.h b/libblake.h
index ec67df8..be5ff84 100644
--- a/libblake.h
+++ b/libblake.h
@@ -41,12 +41,16 @@
#endif
+
LIBBLAKE_PUBLIC__ void libblake_init(void);
LIBBLAKE_PUBLIC__ void libblake_encode_hex(const void *data, size_t n, char out[/* static n * 2 + 1 */], int uppercase);
LIBBLAKE_PUBLIC__ size_t libblake_decode_hex(const char *data, size_t n, void *out, int *validp);
+
+/*********************************** BLAKE ***********************************/
+
#define LIBBLAKE_BLAKE224_OUTPUT_SIZE (224 / 8)
#define LIBBLAKE_BLAKE256_OUTPUT_SIZE (256 / 8)
#define LIBBLAKE_BLAKE384_OUTPUT_SIZE (384 / 8)
@@ -69,6 +73,7 @@ struct libblake_blake256_state { struct libblake_blakes_state s; };
struct libblake_blake384_state { struct libblake_blakeb_state b; };
struct libblake_blake512_state { struct libblake_blakeb_state b; };
+
LIBBLAKE_PUBLIC__ void libblake_blake224_init(struct libblake_blake224_state *state);
LIBBLAKE_PUBLIC__ void libblake_blake224_init2(struct libblake_blake224_state *state, uint_least8_t salt[16]);
LIBBLAKE_PUBLIC__ size_t libblake_blake224_update(struct libblake_blake224_state *state, const void *data, size_t len);
@@ -76,6 +81,7 @@ LIBBLAKE_PUBLIC__ void libblake_blake224_digest(struct libblake_blake224_state *
const char *suffix, unsigned char output[static LIBBLAKE_BLAKE224_OUTPUT_SIZE]);
LIBBLAKE_PUBLIC__ LIBBLAKE_PURE__ size_t libblake_blake224_digest_get_required_input_size(size_t len, size_t bits, const char *suffix);
+
LIBBLAKE_PUBLIC__ void libblake_blake256_init(struct libblake_blake256_state *state);
LIBBLAKE_PUBLIC__ void libblake_blake256_init2(struct libblake_blake256_state *state, uint_least8_t salt[16]);
LIBBLAKE_PUBLIC__ size_t libblake_blake256_update(struct libblake_blake256_state *state, const void *data, size_t len);
@@ -83,6 +89,7 @@ LIBBLAKE_PUBLIC__ void libblake_blake256_digest(struct libblake_blake256_state *
const char *suffix, unsigned char output[static LIBBLAKE_BLAKE256_OUTPUT_SIZE]);
LIBBLAKE_PUBLIC__ LIBBLAKE_PURE__ size_t libblake_blake256_digest_get_required_input_size(size_t len, size_t bits, const char *suffix);
+
LIBBLAKE_PUBLIC__ void libblake_blake384_init(struct libblake_blake384_state *state);
LIBBLAKE_PUBLIC__ void libblake_blake384_init2(struct libblake_blake384_state *state, uint_least8_t salt[32]);
LIBBLAKE_PUBLIC__ size_t libblake_blake384_update(struct libblake_blake384_state *state, const void *data, size_t len);
@@ -90,6 +97,7 @@ LIBBLAKE_PUBLIC__ void libblake_blake384_digest(struct libblake_blake384_state *
const char *suffix, unsigned char output[static LIBBLAKE_BLAKE384_OUTPUT_SIZE]);
LIBBLAKE_PUBLIC__ LIBBLAKE_PURE__ size_t libblake_blake384_digest_get_required_input_size(size_t len, size_t bits, const char *suffix);
+
LIBBLAKE_PUBLIC__ void libblake_blake512_init(struct libblake_blake512_state *state);
LIBBLAKE_PUBLIC__ void libblake_blake512_init2(struct libblake_blake512_state *state, uint_least8_t salt[32]);
LIBBLAKE_PUBLIC__ size_t libblake_blake512_update(struct libblake_blake512_state *state, const void *data, size_t len);
@@ -97,6 +105,10 @@ LIBBLAKE_PUBLIC__ void libblake_blake512_digest(struct libblake_blake512_state *
const char *suffix, unsigned char output[static LIBBLAKE_BLAKE512_OUTPUT_SIZE]);
LIBBLAKE_PUBLIC__ LIBBLAKE_PURE__ size_t libblake_blake512_digest_get_required_input_size(size_t len, size_t bits, const char *suffix);
+
+
+/*********************************** BLAKE2 ***********************************/
+
struct libblake_blake2s_params {
uint_least8_t digest_len; /* in bytes, [1, 32] */
uint_least8_t key_len; /* in bytes, [0, 32] */
@@ -125,6 +137,44 @@ struct libblake_blake2b_params {
uint_least8_t pepper[16];
};
+struct libblake_blake2s_state {
+ LIBBLAKE_ALIGNED__(32)
+ uint_least32_t h[8];
+ uint_least32_t t[2];
+ uint_least32_t f[2];
+};
+
+struct libblake_blake2b_state {
+ LIBBLAKE_ALIGNED__(32)
+ uint_least64_t h[8];
+ uint_least64_t t[2];
+ uint_least64_t f[2];
+};
+
+
+LIBBLAKE_PUBLIC__ void libblake_blake2s_init(struct libblake_blake2s_state *state, const struct libblake_blake2s_params *params,
+ const unsigned char *key /* append null bytes until 64 bytes; if key is used */);
+LIBBLAKE_PUBLIC__ size_t libblake_blake2s_update(struct libblake_blake2s_state *state, const void *data, size_t len);
+LIBBLAKE_PUBLIC__ size_t libblake_blake2s_force_update(struct libblake_blake2s_state *state, const void *data, size_t len);
+LIBBLAKE_PUBLIC__ void libblake_blake2s_digest(struct libblake_blake2s_state *state, void *data, size_t len,
+ int last_node /* normally 0 */, size_t output_len,
+ unsigned char output[static output_len]);
+LIBBLAKE_PUBLIC__ LIBBLAKE_CONST__ size_t libblake_blake2s_digest_get_required_input_size(size_t len);
+
+
+LIBBLAKE_PUBLIC__ void libblake_blake2b_init(struct libblake_blake2b_state *state, const struct libblake_blake2b_params *params,
+ const unsigned char *key /* append null bytes until 128 bytes; if key is used */);
+LIBBLAKE_PUBLIC__ size_t libblake_blake2b_update(struct libblake_blake2b_state *state, const void *data, size_t len);
+LIBBLAKE_PUBLIC__ size_t libblake_blake2b_force_update(struct libblake_blake2b_state *state, const void *data, size_t len);
+LIBBLAKE_PUBLIC__ void libblake_blake2b_digest(struct libblake_blake2b_state *state, void *data, size_t len,
+ int last_node /* normally 0 */, size_t output_len,
+ unsigned char output[static output_len]);
+LIBBLAKE_PUBLIC__ LIBBLAKE_CONST__ size_t libblake_blake2b_digest_get_required_input_size(size_t len);
+
+
+
+/*********************************** BLAKE2X ***********************************/
+
struct libblake_blake2xs_params {
uint_least8_t digest_len; /* in bytes, [1, 32] */
uint_least8_t key_len; /* in bytes, [0, 32] */
@@ -154,20 +204,6 @@ struct libblake_blake2xb_params {
uint_least8_t pepper[16];
};
-struct libblake_blake2s_state {
- LIBBLAKE_ALIGNED__(32)
- uint_least32_t h[8];
- uint_least32_t t[2];
- uint_least32_t f[2];
-};
-
-struct libblake_blake2b_state {
- LIBBLAKE_ALIGNED__(32)
- uint_least64_t h[8];
- uint_least64_t t[2];
- uint_least64_t f[2];
-};
-
struct libblake_blake2xs_state {
struct libblake_blake2s_state b2s;
struct libblake_blake2xs_params xof_params;
@@ -180,24 +216,8 @@ struct libblake_blake2xb_state {
unsigned char intermediate[128];
};
-LIBBLAKE_PUBLIC__ void libblake_blake2s_init(struct libblake_blake2s_state *state, const struct libblake_blake2s_params *params,
- const unsigned char *key /* append null bytes until 64 bytes; if key is used */);
-LIBBLAKE_PUBLIC__ size_t libblake_blake2s_update(struct libblake_blake2s_state *state, const void *data, size_t len);
-LIBBLAKE_PUBLIC__ size_t libblake_blake2s_force_update(struct libblake_blake2s_state *state, const void *data, size_t len);
-LIBBLAKE_PUBLIC__ void libblake_blake2s_digest(struct libblake_blake2s_state *state, void *data, size_t len,
- int last_node /* normally 0 */, size_t output_len,
- unsigned char output[static output_len]);
-LIBBLAKE_PUBLIC__ LIBBLAKE_CONST__ size_t libblake_blake2s_digest_get_required_input_size(size_t len);
-
-LIBBLAKE_PUBLIC__ void libblake_blake2b_init(struct libblake_blake2b_state *state, const struct libblake_blake2b_params *params,
- const unsigned char *key /* append null bytes until 128 bytes; if key is used */);
-LIBBLAKE_PUBLIC__ size_t libblake_blake2b_update(struct libblake_blake2b_state *state, const void *data, size_t len);
-LIBBLAKE_PUBLIC__ size_t libblake_blake2b_force_update(struct libblake_blake2b_state *state, const void *data, size_t len);
-LIBBLAKE_PUBLIC__ void libblake_blake2b_digest(struct libblake_blake2b_state *state, void *data, size_t len,
- int last_node /* normally 0 */, size_t output_len,
- unsigned char output[static output_len]);
-LIBBLAKE_PUBLIC__ LIBBLAKE_CONST__ size_t libblake_blake2b_digest_get_required_input_size(size_t len);
+
LIBBLAKE_PUBLIC__ void libblake_blake2xs_init(struct libblake_blake2xs_state *state, const struct libblake_blake2xs_params *params,
const unsigned char *key /* append null bytes until 64 bytes; if key is used */);
LIBBLAKE_PUBLIC__ inline size_t
@@ -221,6 +241,7 @@ LIBBLAKE_PUBLIC__ void libblake_blake2xs_digest(const struct libblake_blake2xs_s
uint_least8_t len /* desired hash MIN(length - i * 32, 32) */,
unsigned char output[static len] /* output for hash offset by i * 32 */);
+
LIBBLAKE_PUBLIC__ void libblake_blake2xb_init(struct libblake_blake2xb_state *state, const struct libblake_blake2xb_params *params,
const unsigned char *key /* append null bytes until 128 bytes; if key is used */);
LIBBLAKE_PUBLIC__ inline size_t
@@ -244,6 +265,8 @@ LIBBLAKE_PUBLIC__ void libblake_blake2xb_digest(const struct libblake_blake2xb_s
uint_least8_t len /* desired hash MIN(length - i * 64, 64) */,
unsigned char output[static len] /* output for hash offset by i * 64 */);
+
+
#if defined(__clang__)
# pragma clang diagnostic pop
#endif