Skip to content

Commit 49d65ba

Browse files
committed
Re-roll main loop with SHA512_SMALLER
Saves 1924 bytes (same measurement as before).
1 parent 0270ed9 commit 49d65ba

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

library/sha512.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,25 @@ int mbedtls_internal_sha512_process( mbedtls_sha512_context *ctx,
256256
for( i = 0; i < 8; i++ )
257257
A[i] = ctx->state[i];
258258

259+
#if defined(MBEDTLS_SHA512_SMALLER)
260+
for( i = 0; i < 80; i++ )
261+
{
262+
if( i < 16 )
263+
{
264+
GET_UINT64_BE( W[i], data, i << 3 );
265+
}
266+
else
267+
{
268+
W[i] = S1(W[i - 2]) + W[i - 7] +
269+
S0(W[i - 15]) + W[i - 16];
270+
}
271+
272+
P( A[0], A[1], A[2], A[3], A[4], A[5], A[6], A[7], W[i], K[i] );
273+
274+
temp1 = A[7]; A[7] = A[6]; A[6] = A[5]; A[5] = A[4]; A[4] = A[3];
275+
A[3] = A[2]; A[2] = A[1]; A[1] = A[0]; A[0] = temp1;
276+
}
277+
#else /* MBEDTLS_SHA512_SMALLER */
259278
for( i = 0; i < 16; i++ )
260279
{
261280
GET_UINT64_BE( W[i], data, i << 3 );
@@ -280,6 +299,7 @@ int mbedtls_internal_sha512_process( mbedtls_sha512_context *ctx,
280299
P( A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[0], W[i], K[i] ); i++;
281300
}
282301
while( i < 80 );
302+
#endif /* MBEDTLS_SHA512_SMALLER */
283303

284304
for( i = 0; i < 8; i++ )
285305
ctx->state[i] += A[i];

0 commit comments

Comments
 (0)