MCPcopy Create free account
hub / github.com/F-Stack/f-stack / SHA256_Transform

Function SHA256_Transform

freebsd/crypto/sha2/sha256c.c:134–189  ·  view source on GitHub ↗

* SHA256 block compression function. The 256-bit state is transformed via * the 512-bit input block to produce a new state. */

Source from the content-addressed store, hash-verified

132 * the 512-bit input block to produce a new state.
133 */
134static void
135SHA256_Transform(uint32_t * state, const unsigned char block[64])
136{
137 uint32_t W[64];
138 uint32_t S[8];
139 int i;
140
141 /* 1. Prepare the first part of the message schedule W. */
142 be32dec_vect(W, block, 64);
143
144 /* 2. Initialize working variables. */
145 memcpy(S, state, 32);
146
147 /* 3. Mix. */
148 for (i = 0; i < 64; i += 16) {
149 RNDr(S, W, 0, i);
150 RNDr(S, W, 1, i);
151 RNDr(S, W, 2, i);
152 RNDr(S, W, 3, i);
153 RNDr(S, W, 4, i);
154 RNDr(S, W, 5, i);
155 RNDr(S, W, 6, i);
156 RNDr(S, W, 7, i);
157 RNDr(S, W, 8, i);
158 RNDr(S, W, 9, i);
159 RNDr(S, W, 10, i);
160 RNDr(S, W, 11, i);
161 RNDr(S, W, 12, i);
162 RNDr(S, W, 13, i);
163 RNDr(S, W, 14, i);
164 RNDr(S, W, 15, i);
165
166 if (i == 48)
167 break;
168 MSCH(W, 0, i);
169 MSCH(W, 1, i);
170 MSCH(W, 2, i);
171 MSCH(W, 3, i);
172 MSCH(W, 4, i);
173 MSCH(W, 5, i);
174 MSCH(W, 6, i);
175 MSCH(W, 7, i);
176 MSCH(W, 8, i);
177 MSCH(W, 9, i);
178 MSCH(W, 10, i);
179 MSCH(W, 11, i);
180 MSCH(W, 12, i);
181 MSCH(W, 13, i);
182 MSCH(W, 14, i);
183 MSCH(W, 15, i);
184 }
185
186 /* 4. Mix local working variables into global state */
187 for (i = 0; i < 8; i++)
188 state[i] += S[i];
189}
190
191static unsigned char PAD[64] = {

Callers 6

SHA256_PadFunction · 0.70
SHA256_UpdateFunction · 0.70
partial_hash_sha224Function · 0.50
partial_hash_sha256Function · 0.50
partial_hash_sha224Function · 0.50
partial_hash_sha256Function · 0.50

Calls 2

be32dec_vectFunction · 0.70
memcpyFunction · 0.50

Tested by

no test coverage detected