aboutsummaryrefslogtreecommitdiffstats
path: root/libblake.h
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2022-01-18 17:54:52 +0100
committerMattias Andrée <maandree@kth.se>2022-01-18 17:54:52 +0100
commit35a01a7c5cf578e1620b415bdb31d40e35ca2c1d (patch)
tree86cfddb41b6e82f363852bc7a1e25d2279e0e012 /libblake.h
parentFix libblake_blake2[sn]_digest_get_required_input_size for 0 input (diff)
downloadlibblake-35a01a7c5cf578e1620b415bdb31d40e35ca2c1d.tar.gz
libblake-35a01a7c5cf578e1620b415bdb31d40e35ca2c1d.tar.bz2
libblake-35a01a7c5cf578e1620b415bdb31d40e35ca2c1d.tar.xz
Improve portability
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to '')
-rw-r--r--libblake.h150
1 files changed, 84 insertions, 66 deletions
diff --git a/libblake.h b/libblake.h
index 4d96c95..70b5a09 100644
--- a/libblake.h
+++ b/libblake.h
@@ -5,6 +5,14 @@
#include <stddef.h>
#include <stdint.h>
+#ifndef LIBBLAKE_PUBLIC__
+# if defined(_MSC_VER)
+# define LIBBLAKE_PUBLIC__ __declspec(dllexport)
+# else
+# define LIBBLAKE_PUBLIC__
+# endif
+#endif
+
#if defined(__GNUC__)
# define LIBBLAKE_PURE__ __attribute__((__pure__))
# define LIBBLAKE_CONST__ __attribute__((__const__))
@@ -14,8 +22,8 @@
#endif
-void libblake_encode_hex(const void *data, size_t n, char out[/* static n * 2 + 1 */], int uppercase);
-size_t libblake_decode_hex(const char *data, size_t n, void *out, int *validp);
+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);
#define LIBBLAKE_BLAKE224_OUTPUT_SIZE (224 / 8)
@@ -40,33 +48,33 @@ 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; };
-void libblake_blake224_init(struct libblake_blake224_state *state);
-void libblake_blake224_init2(struct libblake_blake224_state *state, uint_least8_t salt[16]);
-size_t libblake_blake224_update(struct libblake_blake224_state *state, const void *data, size_t len);
-void libblake_blake224_digest(struct libblake_blake224_state *state, void *data, size_t len, size_t bits,
- const char *suffix, unsigned char output[static LIBBLAKE_BLAKE224_OUTPUT_SIZE]);
-LIBBLAKE_PURE__ size_t libblake_blake224_digest_get_required_input_size(size_t len, size_t bits, const char *suffix);
-
-void libblake_blake256_init(struct libblake_blake256_state *state);
-void libblake_blake256_init2(struct libblake_blake256_state *state, uint_least8_t salt[16]);
-size_t libblake_blake256_update(struct libblake_blake256_state *state, const void *data, size_t len);
-void libblake_blake256_digest(struct libblake_blake256_state *state, void *data, size_t len, size_t bits,
- const char *suffix, unsigned char output[static LIBBLAKE_BLAKE256_OUTPUT_SIZE]);
-LIBBLAKE_PURE__ size_t libblake_blake256_digest_get_required_input_size(size_t len, size_t bits, const char *suffix);
-
-void libblake_blake384_init(struct libblake_blake384_state *state);
-void libblake_blake384_init2(struct libblake_blake384_state *state, uint_least8_t salt[32]);
-size_t libblake_blake384_update(struct libblake_blake384_state *state, const void *data, size_t len);
-void libblake_blake384_digest(struct libblake_blake384_state *state, void *data, size_t len, size_t bits,
- const char *suffix, unsigned char output[static LIBBLAKE_BLAKE384_OUTPUT_SIZE]);
-LIBBLAKE_PURE__ size_t libblake_blake384_digest_get_required_input_size(size_t len, size_t bits, const char *suffix);
-
-void libblake_blake512_init(struct libblake_blake512_state *state);
-void libblake_blake512_init2(struct libblake_blake512_state *state, uint_least8_t salt[32]);
-size_t libblake_blake512_update(struct libblake_blake512_state *state, const void *data, size_t len);
-void libblake_blake512_digest(struct libblake_blake512_state *state, void *data, size_t len, size_t bits,
- const char *suffix, unsigned char output[static LIBBLAKE_BLAKE512_OUTPUT_SIZE]);
-LIBBLAKE_PURE__ size_t libblake_blake512_digest_get_required_input_size(size_t len, size_t bits, const char *suffix);
+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);
+LIBBLAKE_PUBLIC__ void libblake_blake224_digest(struct libblake_blake224_state *state, void *data, size_t len, size_t bits,
+ 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);
+LIBBLAKE_PUBLIC__ void libblake_blake256_digest(struct libblake_blake256_state *state, void *data, size_t len, size_t bits,
+ 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);
+LIBBLAKE_PUBLIC__ void libblake_blake384_digest(struct libblake_blake384_state *state, void *data, size_t len, size_t bits,
+ 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);
+LIBBLAKE_PUBLIC__ void libblake_blake512_digest(struct libblake_blake512_state *state, void *data, size_t len, size_t bits,
+ 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);
struct libblake_blake2s_params {
@@ -147,58 +155,68 @@ struct libblake_blake2xb_state {
unsigned char intermediate[128];
};
-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 */);
-size_t libblake_blake2s_update(struct libblake_blake2s_state *state, const void *data, size_t len);
-size_t libblake_blake2s_force_update(struct libblake_blake2s_state *state, const void *data, size_t len);
-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_CONST__ size_t libblake_blake2s_digest_get_required_input_size(size_t len);
-
-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 */);
-size_t libblake_blake2b_update(struct libblake_blake2b_state *state, const void *data, size_t len);
-size_t libblake_blake2b_force_update(struct libblake_blake2b_state *state, const void *data, size_t len);
-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_CONST__ size_t libblake_blake2b_digest_get_required_input_size(size_t len);
-
-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 */);
-inline size_t libblake_blake2xs_update(struct libblake_blake2xs_state *state, const void *data, size_t len) {
+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
+libblake_blake2xs_update(struct libblake_blake2xs_state *state, const void *data, size_t len) {
return libblake_blake2s_update(&state->b2s, data, len);
}
-inline size_t libblake_blake2xs_force_update(struct libblake_blake2xs_state *state, const void *data, size_t len) {
+LIBBLAKE_PUBLIC__ inline size_t
+libblake_blake2xs_force_update(struct libblake_blake2xs_state *state, const void *data, size_t len) {
return libblake_blake2s_force_update(&state->b2s, data, len);
}
-inline void libblake_blake2xs_predigest(struct libblake_blake2xs_state *state, void *data, size_t len, int last_node) {
+LIBBLAKE_PUBLIC__ inline void
+libblake_blake2xs_predigest(struct libblake_blake2xs_state *state, void *data, size_t len, int last_node) {
libblake_blake2s_digest(&state->b2s, data, len, last_node, (size_t)state->xof_params.digest_len, state->intermediate);
}
-LIBBLAKE_PURE__ inline size_t libblake_blake2xs_predigest_get_required_input_size(const struct libblake_blake2xs_state *state) {
+LIBBLAKE_PUBLIC__ LIBBLAKE_PURE__ inline size_t
+libblake_blake2xs_predigest_get_required_input_size(const struct libblake_blake2xs_state *state) {
return libblake_blake2s_digest_get_required_input_size((size_t)state->xof_params.digest_len);
}
-void libblake_blake2xs_digest(const struct libblake_blake2xs_state *state,
- uint_least32_t i /* start 0, increase by 1 until i * 32 >= desired hash length */,
- uint_least8_t len /* desired hash MIN(length - i * 32, 32) */,
- unsigned char output[static len] /* output for hash offset by i * 32 */);
-
-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 */);
-inline size_t libblake_blake2xb_update(struct libblake_blake2xb_state *state, const void *data, size_t len) {
+LIBBLAKE_PUBLIC__ void libblake_blake2xs_digest(const struct libblake_blake2xs_state *state,
+ uint_least32_t i /* start 0, increase by 1 until i * 32 >= desired hash length */,
+ 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
+libblake_blake2xb_update(struct libblake_blake2xb_state *state, const void *data, size_t len) {
return libblake_blake2b_update(&state->b2b, data, len);
}
-inline size_t libblake_blake2xb_force_update(struct libblake_blake2xb_state *state, const void *data, size_t len) {
+LIBBLAKE_PUBLIC__ inline size_t
+libblake_blake2xb_force_update(struct libblake_blake2xb_state *state, const void *data, size_t len) {
return libblake_blake2b_update(&state->b2b, data, len);
}
-inline void libblake_blake2xb_predigest(struct libblake_blake2xb_state *state, void *data, size_t len, int last_node) {
+LIBBLAKE_PUBLIC__ inline void
+libblake_blake2xb_predigest(struct libblake_blake2xb_state *state, void *data, size_t len, int last_node) {
libblake_blake2b_digest(&state->b2b, data, len, last_node, state->xof_params.digest_len, state->intermediate);
}
-LIBBLAKE_PURE__ inline size_t libblake_blake2xb_predigest_get_required_input_size(const struct libblake_blake2xb_state *state) {
+LIBBLAKE_PUBLIC__ LIBBLAKE_PURE__ inline size_t
+libblake_blake2xb_predigest_get_required_input_size(const struct libblake_blake2xb_state *state) {
return libblake_blake2b_digest_get_required_input_size((size_t)state->xof_params.digest_len);
}
-void libblake_blake2xb_digest(const struct libblake_blake2xb_state *state,
- uint_least32_t i /* start 0, increase by 1 until i * 64 >= desired hash length */,
- uint_least8_t len /* desired hash MIN(length - i * 64, 64) */,
- unsigned char output[static len] /* output for hash offset by i * 64 */);
+LIBBLAKE_PUBLIC__ void libblake_blake2xb_digest(const struct libblake_blake2xb_state *state,
+ uint_least32_t i /* start 0, increase by 1 until i * 64 >= desired hash length */,
+ uint_least8_t len /* desired hash MIN(length - i * 64, 64) */,
+ unsigned char output[static len] /* output for hash offset by i * 64 */);
#endif