63 #include "../../internal.h"
64 #include "../digest/md32_common.h"
70 sha->
h[0] = 0xc1059ed8UL;
71 sha->
h[1] = 0x367cd507UL;
72 sha->
h[2] = 0x3070dd17UL;
73 sha->
h[3] = 0xf70e5939UL;
74 sha->
h[4] = 0xffc00b31UL;
75 sha->
h[5] = 0x68581511UL;
76 sha->
h[6] = 0x64f98fa7UL;
77 sha->
h[7] = 0xbefa4fa4UL;
84 sha->
h[0] = 0x6a09e667UL;
85 sha->
h[1] = 0xbb67ae85UL;
86 sha->
h[2] = 0x3c6ef372UL;
87 sha->
h[3] = 0xa54ff53aUL;
88 sha->
h[4] = 0x510e527fUL;
89 sha->
h[5] = 0x9b05688cUL;
90 sha->
h[6] = 0x1f83d9abUL;
91 sha->
h[7] = 0x5be0cd19UL;
137 &
c->num,
c->Nh,
c->Nl, 1);
147 assert(
c->md_len % 4 == 0);
148 const size_t out_words =
c->md_len / 4;
149 for (
size_t i = 0;
i < out_words;
i++) {
173 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL, 0x3956c25bUL,
174 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL, 0xd807aa98UL, 0x12835b01UL,
175 0x243185beUL, 0x550c7dc3UL, 0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL,
176 0xc19bf174UL, 0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL,
177 0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL, 0x983e5152UL,
178 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL, 0xc6e00bf3UL, 0xd5a79147UL,
179 0x06ca6351UL, 0x14292967UL, 0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL,
180 0x53380d13UL, 0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL,
181 0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL, 0xd192e819UL,
182 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL, 0x19a4c116UL, 0x1e376c08UL,
183 0x2748774cUL, 0x34b0bcb5UL, 0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL,
184 0x682e6ff3UL, 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL,
185 0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL};
189 (CRYPTO_rotr_u32((x), 2) ^ CRYPTO_rotr_u32((x), 13) ^ \
190 CRYPTO_rotr_u32((x), 22))
192 (CRYPTO_rotr_u32((x), 6) ^ CRYPTO_rotr_u32((x), 11) ^ \
193 CRYPTO_rotr_u32((x), 25))
195 (CRYPTO_rotr_u32((x), 7) ^ CRYPTO_rotr_u32((x), 18) ^ ((x) >> 3))
197 (CRYPTO_rotr_u32((x), 17) ^ CRYPTO_rotr_u32((x), 19) ^ ((x) >> 10))
199 #define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
200 #define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
202 #define ROUND_00_15(i, a, b, c, d, e, f, g, h) \
204 T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
205 h = Sigma0(a) + Maj(a, b, c); \
210 #define ROUND_16_63(i, a, b, c, d, e, f, g, h, X) \
212 s0 = X[(i + 1) & 0x0f]; \
214 s1 = X[(i + 14) & 0x0f]; \
216 T1 = X[(i) & 0x0f] += s0 + s1 + X[(i + 9) & 0x0f]; \
217 ROUND_00_15(i, a, b, c, d, e, f, g, h); \
222 uint32_t a,
b,
c,
d, e,
f,
g, h, s0, s1,
T1;
285 for (
i = 16;
i < 64;
i += 8) {
307 #endif // !SHA256_ASM