@@ -93,13 +93,13 @@ static int ltc_attribute_sha256 s_sha256_x86_compress(hash_state * md, const uns
9393
9494 LTC_ARGCHK (md != NULL );
9595 LTC_ARGCHK (buf != NULL );
96- LTC_ARGCHK (((uintptr_t )(& md -> sha256_x86 .state [0 ])) % 16 == 0 );
96+ LTC_ARGCHK (((uintptr_t )(& md -> sha256 .state [0 ])) % 16 == 0 );
9797 LTC_ARGCHK (((uintptr_t )(& K [0 ])) % 16 == 0 );
9898 LTC_ARGCHK (sizeof (int ) == 4 );
9999
100100 reverse = _mm_set_epi64x (0x0c0d0e0f08090a0bull , 0x0405060700010203ull );
101- state_0 = _mm_load_si128 (((__m128i const * )(& md -> sha256_x86 .state [0 ])));
102- state_1 = _mm_load_si128 (((__m128i const * )(& md -> sha256_x86 .state [4 ])));
101+ state_0 = _mm_load_si128 (((__m128i const * )(& md -> sha256 .state [0 ])));
102+ state_1 = _mm_load_si128 (((__m128i const * )(& md -> sha256 .state [4 ])));
103103 tmp = _mm_shuffle_epi32 (state_0 , k_shuffle_epi32 (0x2 , 0x3 , 0x0 , 0x1 ));
104104 state_1 = _mm_shuffle_epi32 (state_1 , k_shuffle_epi32 (0x0 , 0x1 , 0x2 , 0x3 ));
105105 state_0 = _mm_alignr_epi8 (tmp , state_1 , k_alignr_epi8 (2 ));
@@ -250,8 +250,8 @@ static int ltc_attribute_sha256 s_sha256_x86_compress(hash_state * md, const uns
250250 state_1 = _mm_shuffle_epi32 (state_1 , k_shuffle_epi32 (0x2 , 0x3 , 0x0 , 0x1 ));
251251 state_0 = ltc_mm_blend_epi32 (tmp , state_1 , k_blend_epi32 (0x1 , 0x1 , 0x0 , 0x0 ));
252252 state_1 = _mm_alignr_epi8 (state_1 , tmp , k_alignr_epi8 (2 ));
253- _mm_store_si128 (((__m128i * )(& md -> sha256_x86 .state [0 ])), state_0 );
254- _mm_store_si128 (((__m128i * )(& md -> sha256_x86 .state [4 ])), state_1 );
253+ _mm_store_si128 (((__m128i * )(& md -> sha256 .state [0 ])), state_0 );
254+ _mm_store_si128 (((__m128i * )(& md -> sha256 .state [4 ])), state_1 );
255255 return CRYPT_OK ;
256256}
257257#undef K
@@ -275,16 +275,18 @@ int sha256_x86_init(hash_state * md)
275275{
276276 LTC_ARGCHK (md != NULL );
277277
278- md -> sha256_x86 .curlen = 0 ;
279- md -> sha256_x86 .length = 0 ;
280- md -> sha256_x86 .state [0 ] = 0x6A09E667UL ;
281- md -> sha256_x86 .state [1 ] = 0xBB67AE85UL ;
282- md -> sha256_x86 .state [2 ] = 0x3C6EF372UL ;
283- md -> sha256_x86 .state [3 ] = 0xA54FF53AUL ;
284- md -> sha256_x86 .state [4 ] = 0x510E527FUL ;
285- md -> sha256_x86 .state [5 ] = 0x9B05688CUL ;
286- md -> sha256_x86 .state [6 ] = 0x1F83D9ABUL ;
287- md -> sha256_x86 .state [7 ] = 0x5BE0CD19UL ;
278+ md -> sha256 .state = LTC_ALIGN_BUF (md -> sha256 .state_buf , 16 );
279+
280+ md -> sha256 .curlen = 0 ;
281+ md -> sha256 .length = 0 ;
282+ md -> sha256 .state [0 ] = 0x6A09E667UL ;
283+ md -> sha256 .state [1 ] = 0xBB67AE85UL ;
284+ md -> sha256 .state [2 ] = 0x3C6EF372UL ;
285+ md -> sha256 .state [3 ] = 0xA54FF53AUL ;
286+ md -> sha256 .state [4 ] = 0x510E527FUL ;
287+ md -> sha256 .state [5 ] = 0x9B05688CUL ;
288+ md -> sha256 .state [6 ] = 0x1F83D9ABUL ;
289+ md -> sha256 .state [7 ] = 0x5BE0CD19UL ;
288290 return CRYPT_OK ;
289291}
290292
@@ -295,7 +297,7 @@ int sha256_x86_init(hash_state * md)
295297 @param inlen The length of the data (octets)
296298 @return CRYPT_OK if successful
297299*/
298- HASH_PROCESS (sha256_x86_process ,s_sha256_x86_compress , sha256_x86 , 64 )
300+ HASH_PROCESS (sha256_x86_process ,s_sha256_x86_compress , sha256 , 64 )
299301
300302/**
301303 Terminate the hash to get the digest
@@ -310,41 +312,41 @@ int sha256_x86_done(hash_state * md, unsigned char *out)
310312 LTC_ARGCHK (md != NULL );
311313 LTC_ARGCHK (out != NULL );
312314
313- if (md -> sha256_x86 .curlen >= sizeof (md -> sha256_x86 .buf )) {
315+ if (md -> sha256 .curlen >= sizeof (md -> sha256 .buf )) {
314316 return CRYPT_INVALID_ARG ;
315317 }
316318
317319
318320 /* increase the length of the message */
319- md -> sha256_x86 .length += md -> sha256_x86 .curlen * 8 ;
321+ md -> sha256 .length += md -> sha256 .curlen * 8 ;
320322
321323 /* append the '1' bit */
322- md -> sha256_x86 .buf [md -> sha256_x86 .curlen ++ ] = (unsigned char )0x80 ;
324+ md -> sha256 .buf [md -> sha256 .curlen ++ ] = (unsigned char )0x80 ;
323325
324326 /* if the length is currently above 56 bytes we append zeros
325327 * then compress. Then we can fall back to padding zeros and length
326328 * encoding like normal.
327329 */
328- if (md -> sha256_x86 .curlen > 56 ) {
329- while (md -> sha256_x86 .curlen < 64 ) {
330- md -> sha256_x86 .buf [md -> sha256_x86 .curlen ++ ] = (unsigned char )0 ;
330+ if (md -> sha256 .curlen > 56 ) {
331+ while (md -> sha256 .curlen < 64 ) {
332+ md -> sha256 .buf [md -> sha256 .curlen ++ ] = (unsigned char )0 ;
331333 }
332- s_sha256_x86_compress (md , md -> sha256_x86 .buf );
333- md -> sha256_x86 .curlen = 0 ;
334+ s_sha256_x86_compress (md , md -> sha256 .buf );
335+ md -> sha256 .curlen = 0 ;
334336 }
335337
336338 /* pad upto 56 bytes of zeroes */
337- while (md -> sha256_x86 .curlen < 56 ) {
338- md -> sha256_x86 .buf [md -> sha256_x86 .curlen ++ ] = (unsigned char )0 ;
339+ while (md -> sha256 .curlen < 56 ) {
340+ md -> sha256 .buf [md -> sha256 .curlen ++ ] = (unsigned char )0 ;
339341 }
340342
341343 /* store length */
342- STORE64H (md -> sha256_x86 .length , md -> sha256_x86 .buf + 56 );
343- s_sha256_x86_compress (md , md -> sha256_x86 .buf );
344+ STORE64H (md -> sha256 .length , md -> sha256 .buf + 56 );
345+ s_sha256_x86_compress (md , md -> sha256 .buf );
344346
345347 /* copy output */
346348 for (i = 0 ; i < 8 ; i ++ ) {
347- STORE32H (md -> sha256_x86 .state [i ], out + (4 * i ));
349+ STORE32H (md -> sha256 .state [i ], out + (4 * i ));
348350 }
349351#ifdef LTC_CLEAN_STACK
350352 zeromem (md , sizeof (hash_state ));
0 commit comments