25 #ifndef BR_BEARSSL_HASH_H__ 26 #define BR_BEARSSL_HASH_H__ 269 void (*
init)(
const br_hash_class **ctx);
285 void (*
update)(
const br_hash_class **ctx,
const void *data,
size_t len);
300 void (*
out)(
const br_hash_class *
const *ctx,
void *dst);
316 uint64_t (*
state)(
const br_hash_class *
const *ctx,
void *dst);
328 const void *stb, uint64_t count);
331 #ifndef BR_DOXYGEN_IGNORE 332 #define BR_HASHDESC_ID(id) ((uint32_t)(id) << BR_HASHDESC_ID_OFF) 333 #define BR_HASHDESC_ID_OFF 0 334 #define BR_HASHDESC_ID_MASK 0xFF 336 #define BR_HASHDESC_OUT(size) ((uint32_t)(size) << BR_HASHDESC_OUT_OFF) 337 #define BR_HASHDESC_OUT_OFF 8 338 #define BR_HASHDESC_OUT_MASK 0x7F 340 #define BR_HASHDESC_STATE(size) ((uint32_t)(size) << BR_HASHDESC_STATE_OFF) 341 #define BR_HASHDESC_STATE_OFF 15 342 #define BR_HASHDESC_STATE_MASK 0xFF 344 #define BR_HASHDESC_LBLEN(ls) ((uint32_t)(ls) << BR_HASHDESC_LBLEN_OFF) 345 #define BR_HASHDESC_LBLEN_OFF 23 346 #define BR_HASHDESC_LBLEN_MASK 0x0F 348 #define BR_HASHDESC_MD_PADDING ((uint32_t)1 << 28) 349 #define BR_HASHDESC_MD_PADDING_128 ((uint32_t)1 << 29) 350 #define BR_HASHDESC_MD_PADDING_BE ((uint32_t)1 << 30) 376 #define br_md5_SIZE 16 394 #ifndef BR_DOXYGEN_IGNORE 395 unsigned char buf[64];
471 #define br_sha1_SIZE 20 489 #ifndef BR_DOXYGEN_IGNORE 490 unsigned char buf[64];
561 #define br_sha224_ID 3 566 #define br_sha224_SIZE 28 584 #ifndef BR_DOXYGEN_IGNORE 585 unsigned char buf[64];
652 const void *stb, uint64_t count);
657 #define br_sha256_ID 4 662 #define br_sha256_SIZE 32 669 #ifdef BR_DOXYGEN_IGNORE 696 #ifdef BR_DOXYGEN_IGNORE 708 void br_sha256_update(br_sha256_context *ctx,
const void *data,
size_t len);
710 #define br_sha256_update br_sha224_update 727 #if BR_DOXYGEN_IGNORE 742 #define br_sha256_state br_sha224_state 745 #if BR_DOXYGEN_IGNORE 756 const void *stb, uint64_t count);
758 #define br_sha256_set_state br_sha224_set_state 764 #define br_sha384_ID 5 769 #define br_sha384_SIZE 48 787 #ifndef BR_DOXYGEN_IGNORE 788 unsigned char buf[128];
855 const void *stb, uint64_t count);
860 #define br_sha512_ID 6 865 #define br_sha512_SIZE 64 872 #ifdef BR_DOXYGEN_IGNORE 899 #ifdef BR_DOXYGEN_IGNORE 911 void br_sha512_update(br_sha512_context *ctx,
const void *data,
size_t len);
913 #define br_sha512_update br_sha384_update 930 #ifdef BR_DOXYGEN_IGNORE 945 #define br_sha512_state br_sha384_state 948 #ifdef BR_DOXYGEN_IGNORE 959 const void *stb, uint64_t count);
961 #define br_sha512_set_state br_sha384_set_state 977 #define br_md5sha1_ID 0 982 #define br_md5sha1_SIZE 36 1000 #ifndef BR_DOXYGEN_IGNORE 1001 unsigned char buf[64];
1003 uint32_t val_md5[4];
1004 uint32_t val_sha1[5];
1069 const void *stb, uint64_t count);
1108 #ifndef BR_DOXYGEN_IGNORE 1109 unsigned char buf[128];
1111 uint32_t val_32[25];
1112 uint64_t val_64[16];
1113 const br_hash_class *impl[6];
1143 int id,
const br_hash_class *impl)
1149 ctx->impl[
id - 1] = impl;
1163 static inline const br_hash_class *
1166 return ctx->impl[
id - 1];
1191 const void *data,
size_t len);
1239 typedef void (*
br_ghash)(
void *y,
const void *h,
const void *data,
size_t len);
1253 void br_ghash_ctmul(
void *y,
const void *h,
const void *data,
size_t len);
1269 void br_ghash_ctmul32(
void *y,
const void *h,
const void *data,
size_t len);
1284 void br_ghash_ctmul64(
void *y,
const void *h,
const void *data,
size_t len);
1302 void br_ghash_pclmul(
void *y,
const void *h,
const void *data,
size_t len);
1328 void br_ghash_pwr8(
void *y,
const void *h,
const void *data,
size_t len);
br_sha1_context sha1
Definition: bearssl_hash.h:1080
SHA-224 context.
Definition: bearssl_hash.h:579
Class type for hash function implementations.
Definition: bearssl_hash.h:222
const br_hash_class * vtable
Pointer to vtable for this context.
Definition: bearssl_hash.h:999
br_sha224_context sha224
Definition: bearssl_hash.h:1081
br_md5sha1_context md5sha1
Definition: bearssl_hash.h:1085
MD5+SHA-1 context.
Definition: bearssl_hash.h:995
void(* set_state)(const br_hash_class **ctx, const void *stb, uint64_t count)
Set running state.
Definition: bearssl_hash.h:327
SHA-384 context.
Definition: bearssl_hash.h:782
Multi-hasher context structure.
Definition: bearssl_hash.h:1107
void(* out)(const br_hash_class *const *ctx, void *dst)
Produce hash output.
Definition: bearssl_hash.h:300
Aggregate context for configurable hash function support.
Definition: bearssl_hash.h:1077
SHA-256 context.
Definition: bearssl_hash.h:676
const br_hash_class * vtable
Pointer to vtable for this context.
Definition: bearssl_hash.h:488
br_sha384_context sha384
Definition: bearssl_hash.h:1083
MD5 context.
Definition: bearssl_hash.h:389
uint32_t desc
Descriptor word that contains information about the hash function.
Definition: bearssl_hash.h:257
const br_hash_class * vtable
Pointer to vtable for this context.
Definition: bearssl_hash.h:883
void(* init)(const br_hash_class **ctx)
Initialisation method.
Definition: bearssl_hash.h:269
br_sha256_context sha256
Definition: bearssl_hash.h:1082
uint64_t(* state)(const br_hash_class *const *ctx, void *dst)
Get running state.
Definition: bearssl_hash.h:316
size_t context_size
Size (in bytes) of the context structure appropriate for computing this hash function.
Definition: bearssl_hash.h:227
const br_hash_class * vtable
Definition: bearssl_hash.h:1078
const br_hash_class * vtable
Pointer to vtable for this context.
Definition: bearssl_hash.h:786
br_sha512_context sha512
Definition: bearssl_hash.h:1084
br_md5_context md5
Definition: bearssl_hash.h:1079
void(* update)(const br_hash_class **ctx, const void *data, size_t len)
Data injection method.
Definition: bearssl_hash.h:285
const br_hash_class * vtable
Pointer to vtable for this context.
Definition: bearssl_hash.h:583
const br_hash_class * vtable
Pointer to vtable for this context.
Definition: bearssl_hash.h:680
SHA-512 context.
Definition: bearssl_hash.h:879
SHA-1 context.
Definition: bearssl_hash.h:484
const br_hash_class * vtable
Pointer to vtable for this context.
Definition: bearssl_hash.h:393