79#ifndef _MHD_GET_32BIT_LE_UNALIGNED
94#define F_FUNC(x,y,z) ((((y) ^ (z)) & (x)) ^ (z))
97#ifndef MHD_FAVOR_SMALL_CODE
98# define G_FUNC_1(x,y,z) ((~(z)) & (y))
99# define G_FUNC_2(x,y,z) ((z) & (x))
101# define G_FUNC_1(x,y,z) ((((x) ^ (y)) & (z)) ^ (y))
102# define G_FUNC_2(x,y,z) UINT32_C(0)
104#define H_FUNC(x,y,z) ((x) ^ (y) ^ (z))
106#define I_FUNC(x,y,z) (((~(z)) | (x)) ^ (y))
111#define MD5STEP_R1(va,vb,vc,vd,vX,vs,vT) do { \
112 (va) += (vX) + (vT); \
113 (va) += F_FUNC((vb),(vc),(vd)); \
114 (va) = _MHD_ROTL32((va),(vs)) + (vb); } while (0)
118#define GET_X_FROM_DATA(buf,t) \
119 _MHD_GET_32BIT_LE (((const uint32_t*) (buf)) + (t))
124#define MD5STEP_R2(va,vb,vc,vd,vX,vs,vT) do { \
125 (va) += (vX) + (vT); \
126 (va) += G_FUNC_1((vb),(vc),(vd)); \
127 (va) += G_FUNC_2((vb),(vc),(vd)); \
128 (va) = _MHD_ROTL32((va),(vs)) + (vb); } while (0)
133#define MD5STEP_R3(va,vb,vc,vd,vX,vs,vT) do { \
134 (va) += (vX) + (vT); \
135 (va) += H_FUNC((vb),(vc),(vd)); \
136 (va) = _MHD_ROTL32((va),(vs)) + (vb); } while (0)
141#define MD5STEP_R4(va,vb,vc,vd,vX,vs,vT) do { \
142 (va) += (vX) + (vT); \
143 (va) += I_FUNC((vb),(vc),(vd)); \
144 (va) = _MHD_ROTL32((va),(vs)) + (vb); } while (0)
146#if ! defined(MHD_FAVOR_SMALL_CODE)
150#if _MHD_BYTE_ORDER == _MHD_LITTLE_ENDIAN
151 if ((
const void *)
X ==
M)
401#ifndef MHD_FAVOR_SMALL_CODE
447#define MD5_SIZE_OF_LEN_ADD_BITS 64
452#define MD5_SIZE_OF_LEN_ADD (MD5_SIZE_OF_LEN_ADD_BITS / 8)
511#ifndef _MHD_PUT_32BIT_LE_UNALIGNED
530#ifndef MHD_FAVOR_SMALL_CODE
534#if ! defined(MHD_FAVOR_SMALL_CODE) || defined(_MHD_PUT_32BIT_LE_UNALIGNED)
#define MD5STEP_R3(va, vb, vc, vd, vX, vs, vT)
void MHD_MD5_finish(struct Md5Ctx *ctx, uint8_t digest[MD5_DIGEST_SIZE])
#define GET_X_FROM_DATA(buf, t)
static MHD_DATA_TRUNCATION_RUNTIME_CHECK_DISABLE_ void md5_transform(uint32_t H[MD5_HASH_SIZE_WORDS], const void *M)
#define MD5STEP_R2(va, vb, vc, vd, vX, vs, vT)
void MHD_MD5_update(struct Md5Ctx *ctx, const uint8_t *data, size_t length)
#define MD5_SIZE_OF_LEN_ADD
#define MD5STEP_R4(va, vb, vc, vd, vX, vs, vT)
void MHD_MD5_init(struct Md5Ctx *ctx)
#define MD5STEP_R1(va, vb, vc, vd, vX, vs, vT)
Calculation of MD5 digest.
#define MD5_DIGEST_SIZE_WORDS
#define MD5_BLOCK_SIZE_WORDS
#define MD5_HASH_SIZE_WORDS
#define MD5_BYTES_IN_WORD
#define _MHD_UINT32_ALIGN
macros for bits manipulations
_MHD_static_inline void _MHD_PUT_64BIT_LE_SAFE(void *dst, uint64_t value)
#define _MHD_PUT_32BIT_LE(addr, value32)
#define MHD_DATA_TRUNCATION_RUNTIME_CHECK_DISABLE_
#define MHD_DATA_TRUNCATION_RUNTIME_CHECK_RESTORE_
uint32_t buffer[MD5_BLOCK_SIZE_WORDS]
uint32_t H[MD5_HASH_SIZE_WORDS]