88#ifndef _MHD_GET_32BIT_BE_UNALIGNED
96 data = (
const void *)
W;
103#define Ch(x,y,z) ( (z) ^ ((x) & ((y) ^ (z))) )
104#define Maj(x,y,z) ( ((x) & (y)) ^ ((z) & ((x) ^ (y))) )
111#define SIG0(x) (_MHD_ROTR32 ((x), 2) ^ _MHD_ROTR32 ((x), 13) ^ \
112 _MHD_ROTR32 ((x), 22) )
113#define SIG1(x) (_MHD_ROTR32 ((x), 6) ^ _MHD_ROTR32 ((x), 11) ^ \
114 _MHD_ROTR32 ((x), 25) )
115#define sig0(x) (_MHD_ROTR32 ((x), 7) ^ _MHD_ROTR32 ((x), 18) ^ \
117#define sig1(x) (_MHD_ROTR32 ((x), 17) ^ _MHD_ROTR32 ((x),19) ^ \
127#define SHA2STEP32(vA,vB,vC,vD,vE,vF,vG,vH,kt,wt) do { \
128 (vD) += ((vH) += SIG1 ((vE)) + Ch ((vE),(vF),(vG)) + (kt) + (wt)); \
129 (vH) += SIG0 ((vA)) + Maj ((vA),(vB),(vC)); } while (0)
137#define GET_W_FROM_DATA(buf,t) \
138 _MHD_GET_32BIT_BE ((const void*)(((const uint8_t*) (buf)) + \
139 (t) * SHA256_BYTES_IN_WORD))
146#define Wgen(w,t) ( (w)[(t - 16) & 0xf] + sig1 ((w)[((t) - 2) & 0xf]) \
147 + (w)[((t) - 7) & 0xf] + sig0 ((w)[((t) - 15) & 0xf]) )
149#ifndef MHD_FAVOR_SMALL_CODE
160#if _MHD_BYTE_ORDER == _MHD_BIG_ENDIAN
161 if ((
const void *)
W ==
data)
357#define SHA2STEP32RV(vA,vB,vC,vD,vE,vF,vG,vH,kt,wt) do { \
358 uint32_t tmp_h_ = (vH); \
359 SHA2STEP32((vA),(vB),(vC),(vD),(vE),(vF),(vG),tmp_h_,(kt),(wt)); \
367 (vA) = tmp_h_; } while (0)
372 for (
t = 0;
t < 16; ++
t)
381 for (
t = 16;
t < 64; ++
t)
383 SHA2STEP32RV (
a,
b,
c,
d,
e,
f,
g,
h,
K[
t],
W[
t & 15] =
Wgen (
W,
t));
418#ifndef MHD_FAVOR_SMALL_CODE
464#define SHA256_SIZE_OF_LEN_ADD (64 / 8)
517#ifndef _MHD_PUT_32BIT_BE_UNALIGNED
540#ifndef MHD_FAVOR_SMALL_CODE
544#if ! defined(MHD_FAVOR_SMALL_CODE) || defined(_MHD_PUT_32BIT_BE_UNALIGNED)
#define _MHD_UINT32_ALIGN
macros for bits manipulations
_MHD_static_inline void _MHD_PUT_64BIT_BE_SAFE(void *dst, uint64_t value)
#define _MHD_PUT_32BIT_BE(addr, value32)
#define MHD_DATA_TRUNCATION_RUNTIME_CHECK_DISABLE_
#define MHD_DATA_TRUNCATION_RUNTIME_CHECK_RESTORE_
#define SHA256_SIZE_OF_LEN_ADD
void MHD_SHA256_update(struct Sha256Ctx *ctx, const uint8_t *data, size_t length)
void MHD_SHA256_init(struct Sha256Ctx *ctx)
void MHD_SHA256_finish(struct Sha256Ctx *ctx, uint8_t digest[SHA256_DIGEST_SIZE])
static MHD_DATA_TRUNCATION_RUNTIME_CHECK_DISABLE_ void sha256_transform(uint32_t H[SHA256_DIGEST_SIZE_WORDS], const void *data)
#define SHA2STEP32(vA, vB, vC, vD, vE, vF, vG, vH, kt, wt)
#define GET_W_FROM_DATA(buf, t)
Calculation of SHA-256 digest.
#define SHA256_BYTES_IN_WORD
#define SHA256_DIGEST_SIZE_WORDS
#define SHA256_DIGEST_SIZE
#define SHA256_BLOCK_SIZE
#define SHA256_BLOCK_SIZE_WORDS
uint32_t H[SHA256_DIGEST_SIZE_WORDS]
uint32_t buffer[SHA256_BLOCK_SIZE_WORDS]