/* See LICENSE file for copyright and license details. */ #include "libblake.h" #include #include #include #if !defined(UINT_LEAST64_C) && defined(UINT64_C) # define UINT_LEAST64_C(X) UINT64_C(X) #elif !defined(UINT_LEAST64_C) # define UINT_LEAST64_C(X) X##ULL #endif #if !defined(UINT_LEAST32_C) && defined(UINT32_C) # define UINT_LEAST32_C(X) UINT32_C(X) #elif !defined(UINT_LEAST32_C) # define UINT_LEAST32_C(X) X##UL #endif #if !defined(UINT_LEAST16_C) && defined(UINT16_C) # define UINT_LEAST16_C(X) UINT16_C(X) #elif !defined(UINT_LEAST16_C) # define UINT_LEAST16_C(X) X##U #endif #if defined(__GNUC__) # define HIDDEN __attribute__((visibility("hidden"))) # define LIKELY(X) __builtin_expect(!!(X), 1) # define UNLIKELY(X) __builtin_expect(!!(X), 0) # define ASSUMING_CONSTANT(X) (__builtin_constant_p(X) && (X)) #else # define HIDDEN # define LIKELY(X) X # define UNLIKELY(X) X # define ASSUMING_CONSTANT(X) 0 # if defined(__has_builtin) # if __has_builtin(__builtin_expect) # undef LIKELY # undef UNLIKELY # define LIKELY(X) __builtin_expect(!!(X), 1) # define UNLIKELY(X) __builtin_expect(!!(X), 0) # endif # if __has_builtin(__builtin_constant_p) # undef ASSUMING_CONSTANT # define ASSUMING_CONSTANT(X) (__builtin_constant_p(X) && (X)) # endif # endif #endif #if defined(__has_builtin) # define HAS_BUILTIN(X) __has_builtin(X) #else # define HAS_BUILTIN(X) 0 #endif #ifndef LIBBLAKE_ENDIAN_KNOWN__ # if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) # if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ # define LITTLE_ENDIAN # define LIBBLAKE_ENDIAN_KNOWN__ # endif # endif #endif #ifndef LIBBLAKE_ENDIAN_KNOWN__ # if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) # if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ # define BIG_ENDIAN # define LIBBLAKE_ENDIAN_KNOWN__ # endif # endif #endif #ifndef LIBBLAKE_ENDIAN_KNOWN__ # if defined(__BYTE_ORDER__) && defined(__ORDER_PDP_ENDIAN__) # if __BYTE_ORDER__ == __ORDER_PDP_ENDIAN__ # define PDP_ENDIAN # define LIBBLAKE_ENDIAN_KNOWN__ # endif # endif #endif #ifndef LIBBLAKE_ENDIAN_KNOWN__ # if defined(__x86_64__) || defined(__i386__) # define LITTLE_ENDIAN # define LIBBLAKE_ENDIAN_KNOWN__ # endif #endif #ifndef LIBBLAKE_ENDIAN_KNOWN__ # error Endian is unknown #endif #define CODE_KILLER(X) (X) #define A 10 #define B 11 #define C 12 #define D 13 #define E 14 #define F 15 HIDDEN size_t libblake_internal_blakes_update(struct libblake_blakes_state *state, const unsigned char *data, size_t len); HIDDEN size_t libblake_internal_blakeb_update(struct libblake_blakeb_state *state, const unsigned char *data, size_t len); HIDDEN void libblake_internal_blakes_digest(struct libblake_blakes_state *state, unsigned char *data, size_t len, size_t bits, const char *suffix, unsigned char *output, size_t words_out); HIDDEN void libblake_internal_blakeb_digest(struct libblake_blakeb_state *state, unsigned char *data, size_t len, size_t bits, const char *suffix, unsigned char *output, size_t words_out); HIDDEN void libblake_internal_blake2s_compress(struct libblake_blake2s_state *state, const unsigned char *data); HIDDEN void libblake_internal_blake2b_compress(struct libblake_blake2b_state *state, const unsigned char *data); /* HIDDEN void libblake_internal_blake2b_compress_mm128_init(void); */ /* HIDDEN void libblake_internal_blake2b_compress_mm256_init(void); */ HIDDEN void libblake_internal_blake2xs_init0(struct libblake_blake2xs_state *state, const struct libblake_blake2xs_params *params); HIDDEN void libblake_internal_blake2xb_init0(struct libblake_blake2xb_state *state, const struct libblake_blake2xb_params *params); HIDDEN void libblake_internal_blake2s_output_digest(struct libblake_blake2s_state *state, size_t output_len, unsigned char *output); HIDDEN void libblake_internal_blake2b_output_digest(struct libblake_blake2b_state *state, size_t output_len, unsigned char *output); #if defined(__clang__) # pragma clang diagnostic ignored "-Wunreachable-code" # pragma clang diagnostic ignored "-Wvla" # pragma clang diagnostic ignored "-Wimplicit-fallthrough" #endif