Go to the documentation of this file.
63 #include "../../internal.h"
64 #include "../digest/md32_common.h"
70 sha->
h[0] = 0x67452301UL;
71 sha->
h[1] = 0xefcdab89UL;
72 sha->
h[2] = 0x98badcfeUL;
73 sha->
h[3] = 0x10325476UL;
74 sha->
h[4] = 0xc3d2e1f0UL;
87 #if !defined(SHA1_ASM)
114 #define Xupdate(a, ix, ia, ib, ic, id) \
116 (a) = ((ia) ^ (ib) ^ (ic) ^ (id)); \
117 (ix) = (a) = CRYPTO_rotl_u32((a), 1); \
120 #define K_00_19 0x5a827999UL
121 #define K_20_39 0x6ed9eba1UL
122 #define K_40_59 0x8f1bbcdcUL
123 #define K_60_79 0xca62c1d6UL
130 #define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
131 #define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
132 #define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
133 #define F_60_79(b, c, d) F_20_39(b, c, d)
135 #define BODY_00_15(i, a, b, c, d, e, f, xi) \
137 (f) = (xi) + (e) + K_00_19 + CRYPTO_rotl_u32((a), 5) + \
138 F_00_19((b), (c), (d)); \
139 (b) = CRYPTO_rotl_u32((b), 30); \
142 #define BODY_16_19(i, a, b, c, d, e, f, xi, xa, xb, xc, xd) \
144 Xupdate(f, xi, xa, xb, xc, xd); \
145 (f) += (e) + K_00_19 + CRYPTO_rotl_u32((a), 5) + F_00_19((b), (c), (d)); \
146 (b) = CRYPTO_rotl_u32((b), 30); \
149 #define BODY_20_31(i, a, b, c, d, e, f, xi, xa, xb, xc, xd) \
151 Xupdate(f, xi, xa, xb, xc, xd); \
152 (f) += (e) + K_20_39 + CRYPTO_rotl_u32((a), 5) + F_20_39((b), (c), (d)); \
153 (b) = CRYPTO_rotl_u32((b), 30); \
156 #define BODY_32_39(i, a, b, c, d, e, f, xa, xb, xc, xd) \
158 Xupdate(f, xa, xa, xb, xc, xd); \
159 (f) += (e) + K_20_39 + CRYPTO_rotl_u32((a), 5) + F_20_39((b), (c), (d)); \
160 (b) = CRYPTO_rotl_u32((b), 30); \
163 #define BODY_40_59(i, a, b, c, d, e, f, xa, xb, xc, xd) \
165 Xupdate(f, xa, xa, xb, xc, xd); \
166 (f) += (e) + K_40_59 + CRYPTO_rotl_u32((a), 5) + F_40_59((b), (c), (d)); \
167 (b) = CRYPTO_rotl_u32((b), 30); \
170 #define BODY_60_79(i, a, b, c, d, e, f, xa, xb, xc, xd) \
172 Xupdate(f, xa, xa, xb, xc, xd); \
173 (f) = (xa) + (e) + K_60_79 + CRYPTO_rotl_u32((a), 5) + \
174 F_60_79((b), (c), (d)); \
175 (b) = CRYPTO_rotl_u32((b), 30); \
191 #if !defined(SHA1_ASM)
195 uint32_t XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7, XX8, XX9, XX10,
196 XX11, XX12, XX13, XX14, XX15;
254 BODY_16_19(16,
C, D, E,
T,
A, B,
X(0),
X(0),
X(2),
X(8),
X(13));
255 BODY_16_19(17, B,
C, D, E,
T,
A,
X(1),
X(1),
X(3),
X(9),
X(14));
256 BODY_16_19(18,
A, B,
C, D, E,
T,
X(2),
X(2),
X(4),
X(10),
X(15));
257 BODY_16_19(19,
T,
A, B,
C, D, E,
X(3),
X(3),
X(5),
X(11),
X(0));
259 BODY_20_31(20, E,
T,
A, B,
C, D,
X(4),
X(4),
X(6),
X(12),
X(1));
260 BODY_20_31(21, D, E,
T,
A, B,
C,
X(5),
X(5),
X(7),
X(13),
X(2));
261 BODY_20_31(22,
C, D, E,
T,
A, B,
X(6),
X(6),
X(8),
X(14),
X(3));
262 BODY_20_31(23, B,
C, D, E,
T,
A,
X(7),
X(7),
X(9),
X(15),
X(4));
263 BODY_20_31(24,
A, B,
C, D, E,
T,
X(8),
X(8),
X(10),
X(0),
X(5));
264 BODY_20_31(25,
T,
A, B,
C, D, E,
X(9),
X(9),
X(11),
X(1),
X(6));
265 BODY_20_31(26, E,
T,
A, B,
C, D,
X(10),
X(10),
X(12),
X(2),
X(7));
266 BODY_20_31(27, D, E,
T,
A, B,
C,
X(11),
X(11),
X(13),
X(3),
X(8));
267 BODY_20_31(28,
C, D, E,
T,
A, B,
X(12),
X(12),
X(14),
X(4),
X(9));
268 BODY_20_31(29, B,
C, D, E,
T,
A,
X(13),
X(13),
X(15),
X(5),
X(10));
269 BODY_20_31(30,
A, B,
C, D, E,
T,
X(14),
X(14),
X(0),
X(6),
X(11));
270 BODY_20_31(31,
T,
A, B,
C, D, E,
X(15),
X(15),
X(1),
X(7),
X(12));
272 BODY_32_39(32, E,
T,
A, B,
C, D,
X(0),
X(2),
X(8),
X(13));
273 BODY_32_39(33, D, E,
T,
A, B,
C,
X(1),
X(3),
X(9),
X(14));
274 BODY_32_39(34,
C, D, E,
T,
A, B,
X(2),
X(4),
X(10),
X(15));
275 BODY_32_39(35, B,
C, D, E,
T,
A,
X(3),
X(5),
X(11),
X(0));
276 BODY_32_39(36,
A, B,
C, D, E,
T,
X(4),
X(6),
X(12),
X(1));
277 BODY_32_39(37,
T,
A, B,
C, D, E,
X(5),
X(7),
X(13),
X(2));
278 BODY_32_39(38, E,
T,
A, B,
C, D,
X(6),
X(8),
X(14),
X(3));
279 BODY_32_39(39, D, E,
T,
A, B,
C,
X(7),
X(9),
X(15),
X(4));
281 BODY_40_59(40,
C, D, E,
T,
A, B,
X(8),
X(10),
X(0),
X(5));
282 BODY_40_59(41, B,
C, D, E,
T,
A,
X(9),
X(11),
X(1),
X(6));
283 BODY_40_59(42,
A, B,
C, D, E,
T,
X(10),
X(12),
X(2),
X(7));
284 BODY_40_59(43,
T,
A, B,
C, D, E,
X(11),
X(13),
X(3),
X(8));
285 BODY_40_59(44, E,
T,
A, B,
C, D,
X(12),
X(14),
X(4),
X(9));
286 BODY_40_59(45, D, E,
T,
A, B,
C,
X(13),
X(15),
X(5),
X(10));
287 BODY_40_59(46,
C, D, E,
T,
A, B,
X(14),
X(0),
X(6),
X(11));
288 BODY_40_59(47, B,
C, D, E,
T,
A,
X(15),
X(1),
X(7),
X(12));
289 BODY_40_59(48,
A, B,
C, D, E,
T,
X(0),
X(2),
X(8),
X(13));
290 BODY_40_59(49,
T,
A, B,
C, D, E,
X(1),
X(3),
X(9),
X(14));
291 BODY_40_59(50, E,
T,
A, B,
C, D,
X(2),
X(4),
X(10),
X(15));
292 BODY_40_59(51, D, E,
T,
A, B,
C,
X(3),
X(5),
X(11),
X(0));
293 BODY_40_59(52,
C, D, E,
T,
A, B,
X(4),
X(6),
X(12),
X(1));
294 BODY_40_59(53, B,
C, D, E,
T,
A,
X(5),
X(7),
X(13),
X(2));
295 BODY_40_59(54,
A, B,
C, D, E,
T,
X(6),
X(8),
X(14),
X(3));
296 BODY_40_59(55,
T,
A, B,
C, D, E,
X(7),
X(9),
X(15),
X(4));
297 BODY_40_59(56, E,
T,
A, B,
C, D,
X(8),
X(10),
X(0),
X(5));
298 BODY_40_59(57, D, E,
T,
A, B,
C,
X(9),
X(11),
X(1),
X(6));
299 BODY_40_59(58,
C, D, E,
T,
A, B,
X(10),
X(12),
X(2),
X(7));
300 BODY_40_59(59, B,
C, D, E,
T,
A,
X(11),
X(13),
X(3),
X(8));
302 BODY_60_79(60,
A, B,
C, D, E,
T,
X(12),
X(14),
X(4),
X(9));
303 BODY_60_79(61,
T,
A, B,
C, D, E,
X(13),
X(15),
X(5),
X(10));
304 BODY_60_79(62, E,
T,
A, B,
C, D,
X(14),
X(0),
X(6),
X(11));
305 BODY_60_79(63, D, E,
T,
A, B,
C,
X(15),
X(1),
X(7),
X(12));
306 BODY_60_79(64,
C, D, E,
T,
A, B,
X(0),
X(2),
X(8),
X(13));
307 BODY_60_79(65, B,
C, D, E,
T,
A,
X(1),
X(3),
X(9),
X(14));
308 BODY_60_79(66,
A, B,
C, D, E,
T,
X(2),
X(4),
X(10),
X(15));
309 BODY_60_79(67,
T,
A, B,
C, D, E,
X(3),
X(5),
X(11),
X(0));
310 BODY_60_79(68, E,
T,
A, B,
C, D,
X(4),
X(6),
X(12),
X(1));
311 BODY_60_79(69, D, E,
T,
A, B,
C,
X(5),
X(7),
X(13),
X(2));
312 BODY_60_79(70,
C, D, E,
T,
A, B,
X(6),
X(8),
X(14),
X(3));
313 BODY_60_79(71, B,
C, D, E,
T,
A,
X(7),
X(9),
X(15),
X(4));
314 BODY_60_79(72,
A, B,
C, D, E,
T,
X(8),
X(10),
X(0),
X(5));
315 BODY_60_79(73,
T,
A, B,
C, D, E,
X(9),
X(11),
X(1),
X(6));
316 BODY_60_79(74, E,
T,
A, B,
C, D,
X(10),
X(12),
X(2),
X(7));
317 BODY_60_79(75, D, E,
T,
A, B,
C,
X(11),
X(13),
X(3),
X(8));
318 BODY_60_79(76,
C, D, E,
T,
A, B,
X(12),
X(14),
X(4),
X(9));
319 BODY_60_79(77, B,
C, D, E,
T,
A,
X(13),
X(15),
X(5),
X(10));
320 BODY_60_79(78,
A, B,
C, D, E,
T,
X(14),
X(0),
X(6),
X(11));
321 BODY_60_79(79,
T,
A, B,
C, D, E,
X(15),
X(1),
X(7),
X(12));
#define BODY_00_15(i, a, b, c, d, e, f, xi)
void SHA1_Transform(SHA_CTX *c, const uint8_t data[SHA_CBLOCK])
int SHA1_Init(SHA_CTX *sha)
static struct test_ctx ctx
static void * OPENSSL_memset(void *dst, int c, size_t n)
#define T(upbtypeconst, upbtype, ctype, default_value)
int SHA1_Final(uint8_t out[SHA_DIGEST_LENGTH], SHA_CTX *c)
uint8_t * SHA1(const uint8_t *data, size_t len, uint8_t out[SHA_DIGEST_LENGTH])
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)
static void CRYPTO_store_u32_be(void *out, uint32_t v)
#define BODY_16_19(i, a, b, c, d, e, f, xi, xa, xb, xc, xd)
#define BODY_32_39(i, a, b, c, d, e, f, xa, xb, xc, xd)
static uint32_t CRYPTO_load_u32_be(const void *in)
#define BODY_20_31(i, a, b, c, d, e, f, xi, xa, xb, xc, xd)
int SHA1_Update(SHA_CTX *c, const void *data, size_t len)
static void sha1_block_data_order(uint32_t *state, const uint8_t *data, size_t num)
#define SHA_DIGEST_LENGTH
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)
#define BODY_60_79(i, a, b, c, d, e, f, xa, xb, xc, xd)
#define BODY_40_59(i, a, b, c, d, e, f, xa, xb, xc, xd)
grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:12