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

Function SHA512_Transform

freebsd/crypto/sha2/sha512c.c:160–215  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

158 * the 512-bit input block to produce a new state.
159 */
160static void
161SHA512_Transform(uint64_t * state, const unsigned char block[SHA512_BLOCK_LENGTH])
162{
163 uint64_t W[80];
164 uint64_t S[8];
165 int i;
166
167 /* 1. Prepare the first part of the message schedule W. */
168 be64dec_vect(W, block, SHA512_BLOCK_LENGTH);
169
170 /* 2. Initialize working variables. */
171 memcpy(S, state, SHA512_DIGEST_LENGTH);
172
173 /* 3. Mix. */
174 for (i = 0; i < 80; i += 16) {
175 RNDr(S, W, 0, i);
176 RNDr(S, W, 1, i);
177 RNDr(S, W, 2, i);
178 RNDr(S, W, 3, i);
179 RNDr(S, W, 4, i);
180 RNDr(S, W, 5, i);
181 RNDr(S, W, 6, i);
182 RNDr(S, W, 7, i);
183 RNDr(S, W, 8, i);
184 RNDr(S, W, 9, i);
185 RNDr(S, W, 10, i);
186 RNDr(S, W, 11, i);
187 RNDr(S, W, 12, i);
188 RNDr(S, W, 13, i);
189 RNDr(S, W, 14, i);
190 RNDr(S, W, 15, i);
191
192 if (i == 64)
193 break;
194 MSCH(W, 0, i);
195 MSCH(W, 1, i);
196 MSCH(W, 2, i);
197 MSCH(W, 3, i);
198 MSCH(W, 4, i);
199 MSCH(W, 5, i);
200 MSCH(W, 6, i);
201 MSCH(W, 7, i);
202 MSCH(W, 8, i);
203 MSCH(W, 9, i);
204 MSCH(W, 10, i);
205 MSCH(W, 11, i);
206 MSCH(W, 12, i);
207 MSCH(W, 13, i);
208 MSCH(W, 14, i);
209 MSCH(W, 15, i);
210 }
211
212 /* 4. Mix local working variables into global state */
213 for (i = 0; i < 8; i++)
214 state[i] += S[i];
215}
216
217static unsigned char PAD[SHA512_BLOCK_LENGTH] = {

Callers 6

SHA512_PadFunction · 0.70
SHA512_UpdateFunction · 0.70
partial_hash_sha384Function · 0.50
partial_hash_sha512Function · 0.50
partial_hash_sha384Function · 0.50
partial_hash_sha512Function · 0.50

Calls 2

be64dec_vectFunction · 0.70
memcpyFunction · 0.50

Tested by

no test coverage detected