36 0x428a2f98u, 0x71374491u, 0xb5c0fbcfu, 0xe9b5dba5u, 0x3956c25bu, 0x59f111f1u, 0x923f82a4u, 0xab1c5ed5u,
37 0xd807aa98u, 0x12835b01u, 0x243185beu, 0x550c7dc3u, 0x72be5d74u, 0x80deb1feu, 0x9bdc06a7u, 0xc19bf174u,
38 0xe49b69c1u, 0xefbe4786u, 0x0fc19dc6u, 0x240ca1ccu, 0x2de92c6fu, 0x4a7484aau, 0x5cb0a9dcu, 0x76f988dau,
39 0x983e5152u, 0xa831c66du, 0xb00327c8u, 0xbf597fc7u, 0xc6e00bf3u, 0xd5a79147u, 0x06ca6351u, 0x14292967u,
40 0x27b70a85u, 0x2e1b2138u, 0x4d2c6dfcu, 0x53380d13u, 0x650a7354u, 0x766a0abbu, 0x81c2c92eu, 0x92722c85u,
41 0xa2bfe8a1u, 0xa81a664bu, 0xc24b8b70u, 0xc76c51a3u, 0xd192e819u, 0xd6990624u, 0xf40e3585u, 0x106aa070u,
42 0x19a4c116u, 0x1e376c08u, 0x2748774cu, 0x34b0bcb5u, 0x391c0cb3u, 0x4ed8aa4au, 0x5b9cca4fu, 0x682e6ff3u,
43 0x748f82eeu, 0x78a5636fu, 0x84c87814u, 0x8cc70208u, 0x90befffau, 0xa4506cebu, 0xbef9a3f7u, 0xc67178f2u};
49static void _sha256_block(uint32_t state[8],
const unsigned char block[64]) {
51 uint32_t a = state[0], b = state[1], c = state[2], d = state[3];
52 uint32_t e = state[4], f = state[5], g = state[6], h = state[7];
55 for (i = 0; i < 16; i++)
56 w[i] = ((uint32_t)block[i * 4] << 24) | ((uint32_t)block[i * 4 + 1] << 16) | ((uint32_t)block[i * 4 + 2] << 8) |
57 (uint32_t)block[i * 4 + 3];
58 for (i = 16; i < 64; i++) {
62 w[i] = w[i - 16] + s0 + w[i - 7] + s1;
64 for (i = 0; i < 64; i++) {
66 uint32_t ch = (e & f) ^ (~e & g);
67 uint32_t t1 = h + s1 + ch +
_sha256_k[i] + w[i];
69 uint32_t maj = (a & b) ^ (a & c) ^ (b & c);
70 uint32_t t2 = s0 + maj;