From 35a01a7c5cf578e1620b415bdb31d40e35ca2c1d Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Tue, 18 Jan 2022 17:54:52 +0100 Subject: Improve portability MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- libblake.h | 150 ++++++++++++++++++++++++++++++++-------------------------- mk/windows.mk | 2 +- 2 files changed, 85 insertions(+), 67 deletions(-) diff --git a/libblake.h b/libblake.h index 4d96c95..70b5a09 100644 --- a/libblake.h +++ b/libblake.h @@ -5,6 +5,14 @@ #include #include +#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 diff --git a/mk/windows.mk b/mk/windows.mk index e9602e1..ae6fc0b 100644 --- a/mk/windows.mk +++ b/mk/windows.mk @@ -1,4 +1,4 @@ LIBEXT = dll -LIBFLAGS = -mdll +LIBFLAGS = -shared LIBMAJOREXT = $(LIB_MAJOR).$(LIBEXT) LIBMINOREXT = $(LIB_VERSION).$(LIBEXT) -- cgit v1.2.3-70-g09d2