90#define Ch(x,y,z) ( (z) ^ ((x) & ((y) ^ (z))) )
91#define Maj(x,y,z) ( ((x) & (y)) ^ ((z) & ((x) ^ (y))) )
98#define SIG0(x) (_MHD_ROTR32 ((x), 2) ^ _MHD_ROTR32 ((x), 13) ^ \
99 _MHD_ROTR32 ((x), 22) )
100#define SIG1(x) (_MHD_ROTR32 ((x), 6) ^ _MHD_ROTR32 ((x), 11) ^ \
101 _MHD_ROTR32 ((x), 25) )
102#define sig0(x) (_MHD_ROTR32 ((x), 7) ^ _MHD_ROTR32 ((x), 18) ^ \
104#define sig1(x) (_MHD_ROTR32 ((x), 17) ^ _MHD_ROTR32 ((x),19) ^ \
119#define SHA2STEP32(vA,vB,vC,vD,vE,vF,vG,vH,kt,wt) do { \
120 (vD) += ((vH) += SIG1 ((vE)) + Ch ((vE),(vF),(vG)) + (kt) + (wt)); \
121 (vH) += SIG0 ((vA)) + Maj ((vA),(vB),(vC)); } while (0)
123#ifndef _MHD_GET_32BIT_BE_UNALIGNED
139#define GET_W_FROM_DATA(buf,t) \
140 _MHD_GET_32BIT_BE (((const uint8_t*) (buf)) + (t) * SHA256_BYTES_IN_WORD)
185#define Wgen(w,t) ( (w)[(t - 16) & 0xf] + sig1 ((w)[((t) - 2) & 0xf]) \
186 + (w)[((t) - 7) & 0xf] + sig0 ((w)[((t) - 15) & 0xf]) )
364#define SHA256_SIZE_OF_LEN_ADD (64 / 8)
415#ifndef _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)
void MHD_SHA256_finish(void *ctx_, uint8_t digest[SHA256_DIGEST_SIZE])
#define SHA256_SIZE_OF_LEN_ADD
static void sha256_transform(uint32_t H[_SHA256_DIGEST_LENGTH], const uint8_t data[SHA256_BLOCK_SIZE])
#define SHA2STEP32(vA, vB, vC, vD, vE, vF, vG, vH, kt, wt)
#define GET_W_FROM_DATA(buf, t)
void MHD_SHA256_init(void *ctx_)
void MHD_SHA256_update(void *ctx_, const uint8_t *data, size_t length)
Calculation of SHA-256 digest.
#define SHA256_BYTES_IN_WORD
#define _SHA256_DIGEST_LENGTH
#define SHA256_DIGEST_SIZE
#define SHA256_BLOCK_SIZE
uint8_t buffer[SHA256_BLOCK_SIZE]
uint32_t H[_SHA256_DIGEST_LENGTH]