Go to the documentation of this file.
63 #include "../../internal.h"
64 #include "../digest/md32_common.h"
79 md5->h[0] = 0x67452301UL;
80 md5->h[1] = 0xefcdab89UL;
81 md5->h[2] = 0x98badcfeUL;
82 md5->h[3] = 0x10325476UL;
87 #define md5_block_data_order md5_block_asm_data_order
117 #define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
118 #define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
119 #define H(b, c, d) ((b) ^ (c) ^ (d))
120 #define I(b, c, d) (((~(d)) | (b)) ^ (c))
122 #define R0(a, b, c, d, k, s, t) \
124 (a) += ((k) + (t) + F((b), (c), (d))); \
125 (a) = CRYPTO_rotl_u32(a, s); \
129 #define R1(a, b, c, d, k, s, t) \
131 (a) += ((k) + (t) + G((b), (c), (d))); \
132 (a) = CRYPTO_rotl_u32(a, s); \
136 #define R2(a, b, c, d, k, s, t) \
138 (a) += ((k) + (t) + H((b), (c), (d))); \
139 (a) = CRYPTO_rotl_u32(a, s); \
143 #define R3(a, b, c, d, k, s, t) \
145 (a) += ((k) + (t) + I((b), (c), (d))); \
146 (a) = CRYPTO_rotl_u32(a, s); \
157 uint32_t XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7, XX8, XX9, XX10, XX11, XX12,
172 R0(
A, B,
C, D,
X(0), 7, 0xd76aa478L);
175 R0(D,
A, B,
C,
X(1), 12, 0xe8c7b756L);
178 R0(
C, D,
A, B,
X(2), 17, 0x242070dbL);
181 R0(B,
C, D,
A,
X(3), 22, 0xc1bdceeeL);
184 R0(
A, B,
C, D,
X(4), 7, 0xf57c0fafL);
187 R0(D,
A, B,
C,
X(5), 12, 0x4787c62aL);
190 R0(
C, D,
A, B,
X(6), 17, 0xa8304613L);
193 R0(B,
C, D,
A,
X(7), 22, 0xfd469501L);
196 R0(
A, B,
C, D,
X(8), 7, 0x698098d8L);
199 R0(D,
A, B,
C,
X(9), 12, 0x8b44f7afL);
202 R0(
C, D,
A, B,
X(10), 17, 0xffff5bb1L);
205 R0(B,
C, D,
A,
X(11), 22, 0x895cd7beL);
208 R0(
A, B,
C, D,
X(12), 7, 0x6b901122L);
211 R0(D,
A, B,
C,
X(13), 12, 0xfd987193L);
214 R0(
C, D,
A, B,
X(14), 17, 0xa679438eL);
215 R0(B,
C, D,
A,
X(15), 22, 0x49b40821L);
217 R1(
A, B,
C, D,
X(1), 5, 0xf61e2562L);
218 R1(D,
A, B,
C,
X(6), 9, 0xc040b340L);
219 R1(
C, D,
A, B,
X(11), 14, 0x265e5a51L);
220 R1(B,
C, D,
A,
X(0), 20, 0xe9b6c7aaL);
221 R1(
A, B,
C, D,
X(5), 5, 0xd62f105dL);
222 R1(D,
A, B,
C,
X(10), 9, 0x02441453L);
223 R1(
C, D,
A, B,
X(15), 14, 0xd8a1e681L);
224 R1(B,
C, D,
A,
X(4), 20, 0xe7d3fbc8L);
225 R1(
A, B,
C, D,
X(9), 5, 0x21e1cde6L);
226 R1(D,
A, B,
C,
X(14), 9, 0xc33707d6L);
227 R1(
C, D,
A, B,
X(3), 14, 0xf4d50d87L);
228 R1(B,
C, D,
A,
X(8), 20, 0x455a14edL);
229 R1(
A, B,
C, D,
X(13), 5, 0xa9e3e905L);
230 R1(D,
A, B,
C,
X(2), 9, 0xfcefa3f8L);
231 R1(
C, D,
A, B,
X(7), 14, 0x676f02d9L);
232 R1(B,
C, D,
A,
X(12), 20, 0x8d2a4c8aL);
234 R2(
A, B,
C, D,
X(5), 4, 0xfffa3942L);
235 R2(D,
A, B,
C,
X(8), 11, 0x8771f681L);
236 R2(
C, D,
A, B,
X(11), 16, 0x6d9d6122L);
237 R2(B,
C, D,
A,
X(14), 23, 0xfde5380cL);
238 R2(
A, B,
C, D,
X(1), 4, 0xa4beea44L);
239 R2(D,
A, B,
C,
X(4), 11, 0x4bdecfa9L);
240 R2(
C, D,
A, B,
X(7), 16, 0xf6bb4b60L);
241 R2(B,
C, D,
A,
X(10), 23, 0xbebfbc70L);
242 R2(
A, B,
C, D,
X(13), 4, 0x289b7ec6L);
243 R2(D,
A, B,
C,
X(0), 11, 0xeaa127faL);
244 R2(
C, D,
A, B,
X(3), 16, 0xd4ef3085L);
245 R2(B,
C, D,
A,
X(6), 23, 0x04881d05L);
246 R2(
A, B,
C, D,
X(9), 4, 0xd9d4d039L);
247 R2(D,
A, B,
C,
X(12), 11, 0xe6db99e5L);
248 R2(
C, D,
A, B,
X(15), 16, 0x1fa27cf8L);
249 R2(B,
C, D,
A,
X(2), 23, 0xc4ac5665L);
251 R3(
A, B,
C, D,
X(0), 6, 0xf4292244L);
252 R3(D,
A, B,
C,
X(7), 10, 0x432aff97L);
253 R3(
C, D,
A, B,
X(14), 15, 0xab9423a7L);
254 R3(B,
C, D,
A,
X(5), 21, 0xfc93a039L);
255 R3(
A, B,
C, D,
X(12), 6, 0x655b59c3L);
256 R3(D,
A, B,
C,
X(3), 10, 0x8f0ccc92L);
257 R3(
C, D,
A, B,
X(10), 15, 0xffeff47dL);
258 R3(B,
C, D,
A,
X(1), 21, 0x85845dd1L);
259 R3(
A, B,
C, D,
X(8), 6, 0x6fa87e4fL);
260 R3(D,
A, B,
C,
X(15), 10, 0xfe2ce6e0L);
261 R3(
C, D,
A, B,
X(6), 15, 0xa3014314L);
262 R3(B,
C, D,
A,
X(13), 21, 0x4e0811a1L);
263 R3(
A, B,
C, D,
X(4), 6, 0xf7537e82L);
264 R3(D,
A, B,
C,
X(11), 10, 0xbd3af235L);
265 R3(
C, D,
A, B,
X(2), 15, 0x2ad7d2bbL);
266 R3(B,
C, D,
A,
X(9), 21, 0xeb86d391L);
int MD5_Final(uint8_t out[MD5_DIGEST_LENGTH], MD5_CTX *c)
uint8_t * MD5(const uint8_t *data, size_t len, uint8_t out[MD5_DIGEST_LENGTH])
static struct test_ctx ctx
#define R0(a, b, c, d, k, s, t)
static void * OPENSSL_memset(void *dst, int c, size_t n)
static void CRYPTO_store_u32_le(void *out, uint32_t v)
static void crypto_md32_update(crypto_md32_block_func block_func, uint32_t *h, uint8_t *data, size_t block_size, unsigned *num, uint32_t *Nh, uint32_t *Nl, const uint8_t *in, size_t len)
#define R2(a, b, c, d, k, s, t)
#define R3(a, b, c, d, k, s, t)
int MD5_Init(MD5_CTX *md5)
void MD5_Transform(MD5_CTX *c, const uint8_t data[MD5_CBLOCK])
#define R1(a, b, c, d, k, s, t)
#define MD5_DIGEST_LENGTH
int MD5_Update(MD5_CTX *c, const void *data, size_t len)
static uint32_t CRYPTO_load_u32_le(const void *in)
static void md5_block_data_order(uint32_t *state, const uint8_t *data, size_t num)
static void crypto_md32_final(crypto_md32_block_func block_func, uint32_t *h, uint8_t *data, size_t block_size, unsigned *num, uint32_t Nh, uint32_t Nl, int is_big_endian)
grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:23