@@ -228,7 +228,7 @@ int mbedtls_internal_sha512_process( mbedtls_sha512_context *ctx,
228
228
{
229
229
int i ;
230
230
uint64_t temp1 , temp2 , W [80 ];
231
- uint64_t A , B , C , D , E , F , G , H ;
231
+ uint64_t A [ 8 ] ;
232
232
233
233
SHA512_VALIDATE_RET ( ctx != NULL );
234
234
SHA512_VALIDATE_RET ( (const unsigned char * )data != NULL );
@@ -253,6 +253,9 @@ int mbedtls_internal_sha512_process( mbedtls_sha512_context *ctx,
253
253
(d) += temp1; (h) = temp1 + temp2; \
254
254
} while( 0 )
255
255
256
+ for ( i = 0 ; i < 8 ; i ++ )
257
+ A [i ] = ctx -> state [i ];
258
+
256
259
for ( i = 0 ; i < 16 ; i ++ )
257
260
{
258
261
GET_UINT64_BE ( W [i ], data , i << 3 );
@@ -264,37 +267,22 @@ int mbedtls_internal_sha512_process( mbedtls_sha512_context *ctx,
264
267
S0 (W [i - 15 ]) + W [i - 16 ];
265
268
}
266
269
267
- A = ctx -> state [0 ];
268
- B = ctx -> state [1 ];
269
- C = ctx -> state [2 ];
270
- D = ctx -> state [3 ];
271
- E = ctx -> state [4 ];
272
- F = ctx -> state [5 ];
273
- G = ctx -> state [6 ];
274
- H = ctx -> state [7 ];
275
270
i = 0 ;
276
-
277
271
do
278
272
{
279
- P ( A , B , C , D , E , F , G , H , W [i ], K [i ] ); i ++ ;
280
- P ( H , A , B , C , D , E , F , G , W [i ], K [i ] ); i ++ ;
281
- P ( G , H , A , B , C , D , E , F , W [i ], K [i ] ); i ++ ;
282
- P ( F , G , H , A , B , C , D , E , W [i ], K [i ] ); i ++ ;
283
- P ( E , F , G , H , A , B , C , D , W [i ], K [i ] ); i ++ ;
284
- P ( D , E , F , G , H , A , B , C , W [i ], K [i ] ); i ++ ;
285
- P ( C , D , E , F , G , H , A , B , W [i ], K [i ] ); i ++ ;
286
- P ( B , C , D , E , F , G , H , A , W [i ], K [i ] ); i ++ ;
273
+ P ( A [ 0 ], A [ 1 ], A [ 2 ], A [ 3 ], A [ 4 ], A [ 5 ], A [ 6 ], A [ 7 ] , W [i ], K [i ] ); i ++ ;
274
+ P ( A [ 7 ] , A [ 0 ], A [ 1 ], A [ 2 ], A [ 3 ], A [ 4 ], A [ 5 ], A [ 6 ] , W [i ], K [i ] ); i ++ ;
275
+ P ( A [ 6 ], A [ 7 ] , A [ 0 ], A [ 1 ], A [ 2 ], A [ 3 ], A [ 4 ], A [ 5 ] , W [i ], K [i ] ); i ++ ;
276
+ P ( A [ 5 ], A [ 6 ], A [ 7 ] , A [ 0 ], A [ 1 ], A [ 2 ], A [ 3 ], A [ 4 ] , W [i ], K [i ] ); i ++ ;
277
+ P ( A [ 4 ], A [ 5 ], A [ 6 ], A [ 7 ] , A [ 0 ], A [ 1 ], A [ 2 ], A [ 3 ] , W [i ], K [i ] ); i ++ ;
278
+ P ( A [ 3 ], A [ 4 ], A [ 5 ], A [ 6 ], A [ 7 ] , A [ 0 ], A [ 1 ], A [ 2 ] , W [i ], K [i ] ); i ++ ;
279
+ P ( A [ 2 ], A [ 3 ], A [ 4 ], A [ 5 ], A [ 6 ], A [ 7 ] , A [ 0 ], A [ 1 ] , W [i ], K [i ] ); i ++ ;
280
+ P ( A [ 1 ], A [ 2 ], A [ 3 ], A [ 4 ], A [ 5 ], A [ 6 ], A [ 7 ] , A [ 0 ] , W [i ], K [i ] ); i ++ ;
287
281
}
288
282
while ( i < 80 );
289
283
290
- ctx -> state [0 ] += A ;
291
- ctx -> state [1 ] += B ;
292
- ctx -> state [2 ] += C ;
293
- ctx -> state [3 ] += D ;
294
- ctx -> state [4 ] += E ;
295
- ctx -> state [5 ] += F ;
296
- ctx -> state [6 ] += G ;
297
- ctx -> state [7 ] += H ;
284
+ for ( i = 0 ; i < 8 ; i ++ )
285
+ ctx -> state [i ] += A [i ];
298
286
299
287
return ( 0 );
300
288
}
0 commit comments