aboutsummaryrefslogblamecommitdiffstats
path: root/common.h
blob: 3f9dce0439017ad7d8e9f73300c2bce26f7b7aee (plain) (tree)
1
2
3
4
5
6
7






                                                         





                                                 

                                                 

                                

      



                                                 


                     



                                                              

               

























                                                                

      






            






                                                                                                                          


                                                                                                                





                                                                                                                                    
/* See LICENSE file for copyright and license details. */
#include "libblake.h"

#include <ctype.h>
#include <inttypes.h>
#include <string.h>

#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

#if defined(__x86_64__) || defined(__i386__)
# define LITTLE_ENDIAN
#else
# error Endian is unknown
#endif

#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_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);