Skip to content

Commit 110f4ec

Browse files
committed
wolfcrypt/src/sha256.c: in WC_NO_INTERNAL_FUNCTION_POINTERS code path (linuxkm), fix oversight whereby Transform_Sha256_AVX1_Sha() was used on targets with false IS_INTEL_SHA(intel_flags). the former SHA256_AVX1 method id is now split into SHA256_AVX1_SHA and SHA256_AVX1_NOSHA, with corresponding fixes in Sha256_SetTransform(), inline_XTRANSFORM() and inline_XTRANSFORM_LEN().
1 parent cb0048d commit 110f4ec

1 file changed

Lines changed: 13 additions & 7 deletions

File tree

wolfcrypt/src/sha256.c

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -403,9 +403,9 @@ static int InitSha256(wc_Sha256* sha256)
403403

404404
#ifdef WC_NO_INTERNAL_FUNCTION_POINTERS
405405

406-
enum sha_methods { SHA256_UNSET = 0, SHA256_AVX1, SHA256_AVX2,
407-
SHA256_AVX1_RORX, SHA256_AVX2_RORX, SHA256_SSE2,
408-
SHA256_C };
406+
enum sha_methods { SHA256_UNSET = 0, SHA256_AVX1_SHA, SHA256_AVX2,
407+
SHA256_AVX1_RORX, SHA256_AVX1_NOSHA, SHA256_AVX2_RORX,
408+
SHA256_SSE2, SHA256_C };
409409

410410
#ifndef WC_C_DYNAMIC_FALLBACK
411411
static enum sha_methods sha_method = SHA256_UNSET;
@@ -434,7 +434,7 @@ static int InitSha256(wc_Sha256* sha256)
434434
if (IS_INTEL_SHA(intel_flags)) {
435435
#ifdef HAVE_INTEL_AVX1
436436
if (IS_INTEL_AVX1(intel_flags)) {
437-
SHA_METHOD = SHA256_AVX1;
437+
SHA_METHOD = SHA256_AVX1_SHA;
438438
}
439439
else
440440
#endif
@@ -466,7 +466,7 @@ static int InitSha256(wc_Sha256* sha256)
466466
else
467467
#endif
468468
{
469-
SHA_METHOD = SHA256_AVX1;
469+
SHA_METHOD = SHA256_AVX1_NOSHA;
470470
}
471471
}
472472
else
@@ -495,9 +495,12 @@ static int InitSha256(wc_Sha256* sha256)
495495
case SHA256_AVX2_RORX:
496496
ret = Transform_Sha256_AVX2_RORX(S, D);
497497
break;
498-
case SHA256_AVX1:
498+
case SHA256_AVX1_SHA:
499499
ret = Transform_Sha256_AVX1_Sha(S, D);
500500
break;
501+
case SHA256_AVX1_NOSHA:
502+
ret = Transform_Sha256_AVX1(S, D);
503+
break;
501504
case SHA256_AVX1_RORX:
502505
ret = Transform_Sha256_AVX1_RORX(S, D);
503506
break;
@@ -531,9 +534,12 @@ static int InitSha256(wc_Sha256* sha256)
531534
case SHA256_AVX2_RORX:
532535
ret = Transform_Sha256_AVX2_RORX_Len(S, D, L);
533536
break;
534-
case SHA256_AVX1:
537+
case SHA256_AVX1_SHA:
535538
ret = Transform_Sha256_AVX1_Sha_Len(S, D, L);
536539
break;
540+
case SHA256_AVX1_NOSHA:
541+
ret = Transform_Sha256_AVX1_Len(S, D, L);
542+
break;
537543
case SHA256_AVX1_RORX:
538544
ret = Transform_Sha256_AVX1_RORX_Len(S, D, L);
539545
break;

0 commit comments

Comments
 (0)