Skip to content

Commit 79031ca

Browse files
Merged PR 7725881: Fix bug for SymCryptRsakeyGenerate for encrypt-only keys
+ Tweak unittest code to exercise asymmetric key generation code with a single algorithm flag Related work items: #40928629
1 parent ea3b8b1 commit 79031ca

File tree

6 files changed

+107
-60
lines changed

6 files changed

+107
-60
lines changed

inc/symcrypt_internal.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2064,6 +2064,12 @@ SYMCRYPT_ASYM_ALIGN_STRUCT _SYMCRYPT_MODELEMENT {
20642064

20652065
#define SYMCRYPT_RSAKEY_MIN_BITSIZE_MODULUS (256) // Some of our SCS code requires at least 32 bytes...
20662066
#define SYMCRYPT_RSAKEY_MAX_BITSIZE_MODULUS (1 << 16) // Avoid any integer overflows in size calculations
2067+
2068+
// RSA FIPS self-tests require at least 496 bits to avoid fatal
2069+
// Require caller to specify NO_FIPS for up to 1024 bits as running FIPS tests on too-small keys
2070+
// does not make it FIPS certifiable and gives the wrong impression to callers
2071+
#define SYMCRYPT_RSAKEY_FIPS_MIN_BITSIZE_MODULUS (1024)
2072+
20672073
#define SYMCRYPT_RSAKEY_MIN_BITSIZE_PRIME (128)
20682074
#define SYMCRYPT_RSAKEY_MAX_BITSIZE_PRIME (SYMCRYPT_RSAKEY_MAX_BITSIZE_MODULUS / 2)
20692075

lib/rsakey.c

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -502,8 +502,6 @@ SymCryptRsakeyGenerate(
502502
UINT32 cbDivisor = 0;
503503
PSYMCRYPT_DIVISOR pdTmp = NULL;
504504

505-
// dcl - why are we reading an out parameter? Looks like it is really _InOut_
506-
// should there be some level of sanity checking here?
507505
UINT32 ndMod = pkRsakey->nDigitsOfModulus;
508506
UINT32 cbMod = 0;
509507
PSYMCRYPT_INT piPhi = NULL;
@@ -534,6 +532,16 @@ SymCryptRsakeyGenerate(
534532
goto cleanup;
535533
}
536534

535+
// SymCryptRsaSignVerifyTest self-test requires generated key to be at least 496 bits to avoid fatal
536+
// Require caller to specify NO_FIPS for up to 1024 bits as running FIPS tests on too-small keys
537+
// does not make it FIPS certifiable and gives the wrong impression to callers
538+
if ( ( (flags & SYMCRYPT_FLAG_KEY_NO_FIPS) == 0 ) &&
539+
( pkRsakey->nSetBitsOfModulus < SYMCRYPT_RSAKEY_FIPS_MIN_BITSIZE_MODULUS ) )
540+
{
541+
scError = SYMCRYPT_INVALID_ARGUMENT;
542+
goto cleanup;
543+
}
544+
537545
// Handle the default exponent case
538546
if( pu64PubExp == NULL && nPubExp == 0 )
539547
{
@@ -725,11 +733,21 @@ SymCryptRsakeyGenerate(
725733

726734
// Run SignVerify PCT on generated keypair
727735
// Our current understanding is that this PCT is sufficient for both RSA_SIGN and RSA_ENCRYPT
736+
737+
// Unconditionally set the sign flag to enable SignVerify PCT on encrypt-only keypair
738+
pkRsakey->fAlgorithmInfo |= SYMCRYPT_FLAG_RSAKEY_SIGN;
739+
728740
SYMCRYPT_RUN_KEYGEN_PCT(
729741
SymCryptRsaSignVerifyTest,
730742
pkRsakey,
731743
0, /* Do not set any algorithm selftest as run with this PCT */
732744
SYMCRYPT_SELFTEST_KEY_RSA_SIGN );
745+
746+
// Unset the sign flag before returning encrypt-only keypair
747+
if ( ( flags & SYMCRYPT_FLAG_RSAKEY_SIGN ) == 0 )
748+
{
749+
pkRsakey->fAlgorithmInfo ^= SYMCRYPT_FLAG_RSAKEY_SIGN;
750+
}
733751
}
734752

735753
cleanup:

unittest/lib/perf_sc_imp_pattern.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ addRsaKeyGenPerfSymCrypt<ImpXxx>( PrintTable &table )
2929
for( UINT32 i=0; i<ARRAY_SIZE( bitSizes ); i++ )
3030
{
3131
UINT32 bitSize = bitSizes[i];
32+
UINT32 generateFlags = SYMCRYPT_FLAG_RSAKEY_SIGN | SYMCRYPT_FLAG_RSAKEY_ENCRYPT;
33+
if( bitSize < SYMCRYPT_RSAKEY_FIPS_MIN_BITSIZE_MODULUS )
34+
{
35+
generateFlags |= SYMCRYPT_FLAG_KEY_NO_FIPS;
36+
}
3237

3338
UINT64 scTicks;
3439
double scCost;
@@ -44,7 +49,7 @@ addRsaKeyGenPerfSymCrypt<ImpXxx>( PrintTable &table )
4449
UINT64 start = GET_PERF_CLOCK();
4550

4651
PSYMCRYPT_RSAKEY pScKey = ScShimSymCryptRsakeyAllocate( &scRsaParams, 0 );
47-
ScShimSymCryptRsakeyGenerate( pScKey, nullptr, 0, SYMCRYPT_FLAG_RSAKEY_SIGN | SYMCRYPT_FLAG_RSAKEY_ENCRYPT );
52+
ScShimSymCryptRsakeyGenerate( pScKey, nullptr, 0, generateFlags );
4853
ScShimSymCryptRsakeyFree( pScKey );
4954

5055
UINT64 stop = GET_PERF_CLOCK();

unittest/lib/sc_imp_pattern.cpp

Lines changed: 57 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2517,20 +2517,28 @@ ArithImp<ImpXxx, AlgDeveloperTest>::~ArithImp()
25172517
// Table with the RSA keys' sizes and pointers to keys
25182518
struct {
25192519
SIZE_T keySize;
2520+
UINT32 generateFlags;
25202521
PSYMCRYPT_RSAKEY pkRsakey;
25212522
} CONCAT2(g_precomputedRsaKeys, ImpXxx)[] = {
2522-
{ 32, NULL },
2523-
{ 64, NULL },
2524-
{ 128, NULL },
2525-
{ 256, NULL },
2526-
{ 384, NULL },
2527-
{ 512, NULL },
2528-
{1024, NULL },
2523+
{ 32, SYMCRYPT_FLAG_RSAKEY_SIGN, NULL },
2524+
{ 64, SYMCRYPT_FLAG_RSAKEY_SIGN, NULL },
2525+
{ 128, SYMCRYPT_FLAG_RSAKEY_SIGN, NULL },
2526+
{ 256, SYMCRYPT_FLAG_RSAKEY_SIGN, NULL },
2527+
{ 384, SYMCRYPT_FLAG_RSAKEY_SIGN, NULL },
2528+
{ 512, SYMCRYPT_FLAG_RSAKEY_SIGN, NULL },
2529+
{1024, SYMCRYPT_FLAG_RSAKEY_SIGN, NULL },
2530+
{ 32, SYMCRYPT_FLAG_RSAKEY_ENCRYPT, NULL },
2531+
{ 64, SYMCRYPT_FLAG_RSAKEY_ENCRYPT, NULL },
2532+
{ 128, SYMCRYPT_FLAG_RSAKEY_ENCRYPT, NULL },
2533+
{ 256, SYMCRYPT_FLAG_RSAKEY_ENCRYPT, NULL },
2534+
{ 384, SYMCRYPT_FLAG_RSAKEY_ENCRYPT, NULL },
2535+
{ 512, SYMCRYPT_FLAG_RSAKEY_ENCRYPT, NULL },
2536+
{1024, SYMCRYPT_FLAG_RSAKEY_ENCRYPT, NULL },
25292537
};
25302538

25312539
template<>
25322540
void
2533-
SetupRsaKey<ImpXxx>( PBYTE buf1, SIZE_T keySize )
2541+
SetupSymCryptRsaKey<ImpXxx>( PBYTE buf1, SIZE_T keySize, UINT32 generateFlags )
25342542
{
25352543
int i = 0;
25362544
BOOLEAN bFound = FALSE;
@@ -2539,7 +2547,8 @@ SetupRsaKey<ImpXxx>( PBYTE buf1, SIZE_T keySize )
25392547

25402548
for( i=0; i < ARRAY_SIZE(CONCAT2(g_precomputedRsaKeys, ImpXxx)); i++ )
25412549
{
2542-
if ( keySize == CONCAT2(g_precomputedRsaKeys, ImpXxx)[i].keySize )
2550+
if ( keySize == CONCAT2(g_precomputedRsaKeys, ImpXxx)[i].keySize &&
2551+
generateFlags == CONCAT2(g_precomputedRsaKeys, ImpXxx)[i].generateFlags )
25432552
{
25442553
bFound = TRUE;
25452554

@@ -2557,8 +2566,13 @@ SetupRsaKey<ImpXxx>( PBYTE buf1, SIZE_T keySize )
25572566
pkRsakey = ScShimSymCryptRsakeyAllocate( &rsaParams, 0 );
25582567
CHECK( pkRsakey != NULL, "?" );
25592568

2569+
if ( rsaParams.nBitsOfModulus < SYMCRYPT_RSAKEY_FIPS_MIN_BITSIZE_MODULUS )
2570+
{
2571+
generateFlags |= SYMCRYPT_FLAG_KEY_NO_FIPS;
2572+
}
2573+
25602574
// Use default exponent
2561-
scError = ScShimSymCryptRsakeyGenerate( pkRsakey, nullptr, 0, SYMCRYPT_FLAG_RSAKEY_SIGN | SYMCRYPT_FLAG_RSAKEY_ENCRYPT );
2575+
scError = ScShimSymCryptRsakeyGenerate( pkRsakey, nullptr, 0, generateFlags );
25622576
CHECK( scError == SYMCRYPT_NO_ERROR, "?" );
25632577

25642578
CONCAT2(g_precomputedRsaKeys, ImpXxx)[i].pkRsakey = pkRsakey;
@@ -2575,11 +2589,11 @@ SetupRsaKey<ImpXxx>( PBYTE buf1, SIZE_T keySize )
25752589

25762590
template<>
25772591
void
2578-
sc_RsaKeyPerf<ImpXxx>( PBYTE buf1, PBYTE buf2, SIZE_T keySize )
2592+
sc_RsaKeyPerf<ImpXxx>( PBYTE buf1, PBYTE buf2, SIZE_T keySize, UINT32 generateFlags )
25792593
{
25802594
SYMCRYPT_ERROR scError = SYMCRYPT_NO_ERROR;
25812595

2582-
SetupRsaKey<ImpXxx>( buf1, keySize );
2596+
SetupSymCryptRsaKey<ImpXxx>( buf1, keySize, generateFlags );
25832597

25842598
buf2[0] = 0;
25852599
// Don't fill it up so that it is smaller than the modulus
@@ -2627,7 +2641,7 @@ algImpKeyPerfFunction<ImpXxx, AlgRsaSignPkcs1>( PBYTE buf1, PBYTE buf2, PBYTE bu
26272641
SYMCRYPT_ERROR scError = SYMCRYPT_NO_ERROR;
26282642
SIZE_T cbDst = 0;
26292643

2630-
sc_RsaKeyPerf<ImpXxx>( buf1, buf2, keySize );
2644+
sc_RsaKeyPerf<ImpXxx>( buf1, buf2, keySize, SYMCRYPT_FLAG_RSAKEY_SIGN );
26312645

26322646
scError = ScShimSymCryptRsaPkcs1Sign(
26332647
*((PSYMCRYPT_RSAKEY *) buf1),
@@ -2856,7 +2870,7 @@ algImpKeyPerfFunction<ImpXxx, AlgRsaSignPss>( PBYTE buf1, PBYTE buf2, PBYTE buf3
28562870
SYMCRYPT_ERROR scError = SYMCRYPT_NO_ERROR;
28572871
SIZE_T cbDst = 0;
28582872

2859-
sc_RsaKeyPerf<ImpXxx>( buf1, buf2, keySize );
2873+
sc_RsaKeyPerf<ImpXxx>( buf1, buf2, keySize, SYMCRYPT_FLAG_RSAKEY_SIGN );
28602874

28612875
scError = ScShimSymCryptRsaPssSign(
28622876
*((PSYMCRYPT_RSAKEY *) buf1),
@@ -3086,7 +3100,7 @@ algImpKeyPerfFunction<ImpXxx, AlgRsaEncRaw>( PBYTE buf1, PBYTE buf2, PBYTE buf3,
30863100
{
30873101
SYMCRYPT_ERROR scError = SYMCRYPT_NO_ERROR;
30883102

3089-
sc_RsaKeyPerf<ImpXxx>( buf1, buf2, keySize );
3103+
sc_RsaKeyPerf<ImpXxx>( buf1, buf2, keySize, SYMCRYPT_FLAG_RSAKEY_ENCRYPT );
30903104

30913105
scError = ScShimSymCryptRsaRawEncrypt(
30923106
*((PSYMCRYPT_RSAKEY *) buf1),
@@ -3289,7 +3303,7 @@ algImpKeyPerfFunction<ImpXxx, AlgRsaEncPkcs1>( PBYTE buf1, PBYTE buf2, PBYTE buf
32893303
SYMCRYPT_ERROR scError = SYMCRYPT_NO_ERROR;
32903304
SIZE_T cbDst = 0;
32913305

3292-
sc_RsaKeyPerf<ImpXxx>( buf1, buf2, keySize );
3306+
sc_RsaKeyPerf<ImpXxx>( buf1, buf2, keySize, SYMCRYPT_FLAG_RSAKEY_ENCRYPT );
32933307

32943308
scError = ScShimSymCryptRsaPkcs1Encrypt(
32953309
*((PSYMCRYPT_RSAKEY *) buf1),
@@ -3505,7 +3519,7 @@ algImpKeyPerfFunction<ImpXxx, AlgRsaEncOaep>( PBYTE buf1, PBYTE buf2, PBYTE buf3
35053519
SYMCRYPT_ERROR scError = SYMCRYPT_NO_ERROR;
35063520
SIZE_T cbDst = 0;
35073521

3508-
sc_RsaKeyPerf<ImpXxx>( buf1, buf2, keySize );
3522+
sc_RsaKeyPerf<ImpXxx>( buf1, buf2, keySize, SYMCRYPT_FLAG_RSAKEY_ENCRYPT );
35093523

35103524
scError = ScShimSymCryptRsaOaepEncrypt(
35113525
*((PSYMCRYPT_RSAKEY *) buf1),
@@ -3796,7 +3810,7 @@ algImpKeyPerfFunction<ImpXxx, AlgRsaEncOaep>( PBYTE buf1, PBYTE buf2, PBYTE buf3
37963810
BYTE rbResult[1024] = { 0 };
37973811
SIZE_T cbDst = 0;
37983812
3799-
sc_RsaKeyPerf<ImpXxx>( buf1, buf2, keySize );
3813+
sc_RsaKeyPerf<ImpXxx>( buf1, buf2, keySize, SYMCRYPT_FLAG_RSAKEY_ENCRYPT );
38003814
38013815
scError = ScShimSymCryptRsaOaepEncrypt(
38023816
*((PSYMCRYPT_RSAKEY *) buf1),
@@ -4088,7 +4102,7 @@ SetupDlGroup<ImpXxx>( PBYTE buf1, SIZE_T keySize )
40884102

40894103
template<>
40904104
void
4091-
SetupSymCryptDsaAndDh<ImpXxx>( PBYTE buf1, PBYTE buf2, PBYTE buf3 )
4105+
SetupSymCryptDsa<ImpXxx>( PBYTE buf1, PBYTE buf2, PBYTE buf3 )
40924106
{
40934107
SYMCRYPT_ERROR scError = SYMCRYPT_NO_ERROR;
40944108

@@ -4104,7 +4118,7 @@ SetupSymCryptDsaAndDh<ImpXxx>( PBYTE buf1, PBYTE buf2, PBYTE buf3 )
41044118
PUINT32 puiSignatureSize = NULL;
41054119
UINT32 cbAgreedSecret, cbHashValue;
41064120

4107-
UINT32 generateFlags = SYMCRYPT_FLAG_DLKEY_DH | SYMCRYPT_FLAG_DLKEY_DSA | SYMCRYPT_FLAG_KEY_NO_FIPS;
4121+
UINT32 generateFlags = SYMCRYPT_FLAG_DLKEY_DSA;
41084122

41094123
pPtrs[0] = ScShimSymCryptDlkeyCreate( buf2 + buff2Offset, dlkeysize, pDlgroup );
41104124
scError = ScShimSymCryptDlkeyGenerate( generateFlags, pPtrs[0] );
@@ -4123,17 +4137,7 @@ SetupSymCryptDsaAndDh<ImpXxx>( PBYTE buf1, PBYTE buf2, PBYTE buf3 )
41234137

41244138
*puiSignatureSize = signatureSize;
41254139

4126-
// Verify that DH can work
4127-
scError = ScShimSymCryptDhSecretAgreement(
4128-
((PSYMCRYPT_DLKEY *) buf2)[0],
4129-
((PSYMCRYPT_DLKEY *) buf2)[1],
4130-
SYMCRYPT_NUMBER_FORMAT_MSB_FIRST,
4131-
0,
4132-
buf3 + sizeof(UINT32),
4133-
cbAgreedSecret );
4134-
CHECK( scError == SYMCRYPT_NO_ERROR, "SymCryptDhSecretAgreement failed" );
4135-
4136-
// Same for DSA
4140+
// Verify that DSA can work
41374141
cbHashValue = ScShimSymCryptDlkeySizeofPrivateKey( ((PSYMCRYPT_DLKEY *)buf2)[0] );
41384142
scError = ScShimSymCryptDsaSign(
41394143
((PSYMCRYPT_DLKEY *) buf2)[0],
@@ -4167,7 +4171,7 @@ algImpKeyPerfFunction<ImpXxx, AlgDsaSign>( PBYTE buf1, PBYTE buf2, PBYTE buf3, S
41674171
UNREFERENCED_PARAMETER( buf3 );
41684172

41694173
SetupDlGroup<ImpXxx>( buf1, keySize );
4170-
SetupSymCryptDsaAndDh<ImpXxx>( buf1, buf2, buf3 );
4174+
SetupSymCryptDsa<ImpXxx>( buf1, buf2, buf3 );
41714175
}
41724176

41734177
template<>
@@ -4222,7 +4226,7 @@ algImpKeyPerfFunction<ImpXxx, AlgDsaVerify>( PBYTE buf1, PBYTE buf2, PBYTE buf3,
42224226
UNREFERENCED_PARAMETER( buf3 );
42234227

42244228
SetupDlGroup<ImpXxx>( buf1, keySize );
4225-
SetupSymCryptDsaAndDh<ImpXxx>( buf1, buf2, buf3 );
4229+
SetupSymCryptDsa<ImpXxx>( buf1, buf2, buf3 );
42264230
}
42274231

42284232
template<>
@@ -4768,7 +4772,7 @@ SetupSymCryptCurves<ImpXxx>( PBYTE buf1, SIZE_T keySize )
47684772

47694773
template<>
47704774
void
4771-
SetupSymCryptEcdsaAndEcdh<ImpXxx>( PBYTE buf1, PBYTE buf2, PBYTE buf3 )
4775+
SetupSymCryptEckey<ImpXxx>( PBYTE buf1, PBYTE buf2, PBYTE buf3, UINT32 setRandomFlags )
47724776
{
47734777
SYMCRYPT_ERROR scError = SYMCRYPT_NO_ERROR;
47744778

@@ -4780,7 +4784,7 @@ SetupSymCryptEcdsaAndEcdh<ImpXxx>( PBYTE buf1, PBYTE buf2, PBYTE buf3 )
47804784
PSYMCRYPT_ECKEY * pPtrs = ((PSYMCRYPT_ECKEY *) buf2);
47814785
pPtrs[0] = ScShimSymCryptEckeyCreate( buf2 + 32, eckeySize, pCurve );
47824786

4783-
scError = ScShimSymCryptEckeySetRandom( SYMCRYPT_FLAG_ECKEY_ECDSA | SYMCRYPT_FLAG_ECKEY_ECDH, pPtrs[0] );
4787+
scError = ScShimSymCryptEckeySetRandom( setRandomFlags, pPtrs[0] );
47844788
CHECK( scError == SYMCRYPT_NO_ERROR, "?" );
47854789

47864790
pPtrs[1] = (PSYMCRYPT_ECKEY) ((PBYTE)buf2 + 32 + eckeySize); // This will hold the hash of the message
@@ -4795,20 +4799,23 @@ SetupSymCryptEcdsaAndEcdh<ImpXxx>( PBYTE buf1, PBYTE buf2, PBYTE buf3 )
47954799
*puiSignatureSize = signatureSize;
47964800

47974801
// Verify that ECDH can work
4798-
UINT32 cbAgreedSecret = ScShimSymCryptEcurveSizeofFieldElement( *(PSYMCRYPT_ECURVE *) buf1 );
4799-
CHECK( cbAgreedSecret <= *((PUINT32)buf3), "Buffer 3 too small for ECDH");
4800-
scError = ScShimSymCryptEcDhSecretAgreement(
4801-
((PSYMCRYPT_ECKEY *) buf2)[0],
4802-
((PSYMCRYPT_ECKEY *) buf2)[0], // Same private and public key
4803-
SYMCRYPT_NUMBER_FORMAT_MSB_FIRST,
4804-
0,
4805-
buf3 + sizeof(UINT32),
4806-
cbAgreedSecret);
4807-
CHECK( scError == SYMCRYPT_NO_ERROR, "SymCryptEcDhSecretAgreement failed" );
4802+
if ( setRandomFlags & SYMCRYPT_FLAG_ECKEY_ECDH )
4803+
{
4804+
UINT32 cbAgreedSecret = ScShimSymCryptEcurveSizeofFieldElement( *(PSYMCRYPT_ECURVE *) buf1 );
4805+
CHECK( cbAgreedSecret <= *((PUINT32)buf3), "Buffer 3 too small for ECDH");
4806+
scError = ScShimSymCryptEcDhSecretAgreement(
4807+
((PSYMCRYPT_ECKEY *) buf2)[0],
4808+
((PSYMCRYPT_ECKEY *) buf2)[0], // Same private and public key
4809+
SYMCRYPT_NUMBER_FORMAT_MSB_FIRST,
4810+
0,
4811+
buf3 + sizeof(UINT32),
4812+
cbAgreedSecret);
4813+
CHECK( scError == SYMCRYPT_NO_ERROR, "SymCryptEcDhSecretAgreement failed" );
4814+
}
48084815

4809-
if (pCurve->type != SYMCRYPT_ECURVE_TYPE_MONTGOMERY)
4816+
// Verify that ECDSA can work
4817+
if ( (setRandomFlags & SYMCRYPT_FLAG_ECKEY_ECDSA) != 0 )
48104818
{
4811-
// Same for ECDSA
48124819
scError = ScShimSymCryptEcDsaSign(
48134820
pPtrs[0],
48144821
(PBYTE) pPtrs[1],
@@ -4901,7 +4908,7 @@ VOID
49014908
algImpKeyPerfFunction<ImpXxx, AlgEcdsaSign>( PBYTE buf1, PBYTE buf2, PBYTE buf3, SIZE_T keySize )
49024909
{
49034910
SetupSymCryptCurves<ImpXxx>( buf1, keySize );
4904-
SetupSymCryptEcdsaAndEcdh<ImpXxx>( buf1, buf2, buf3 );
4911+
SetupSymCryptEckey<ImpXxx>( buf1, buf2, buf3, SYMCRYPT_FLAG_ECKEY_ECDSA );
49054912
}
49064913

49074914
template<>
@@ -4952,7 +4959,7 @@ VOID
49524959
algImpKeyPerfFunction<ImpXxx, AlgEcdsaVerify>( PBYTE buf1, PBYTE buf2, PBYTE buf3, SIZE_T keySize )
49534960
{
49544961
SetupSymCryptCurves<ImpXxx>( buf1, keySize );
4955-
SetupSymCryptEcdsaAndEcdh<ImpXxx>( buf1, buf2, buf3 );
4962+
SetupSymCryptEckey<ImpXxx>( buf1, buf2, buf3, SYMCRYPT_FLAG_ECKEY_ECDSA );
49564963
}
49574964

49584965
template<>
@@ -5003,7 +5010,7 @@ VOID
50035010
algImpKeyPerfFunction<ImpXxx, AlgEcdh>( PBYTE buf1, PBYTE buf2, PBYTE buf3, SIZE_T keySize )
50045011
{
50055012
SetupSymCryptCurves<ImpXxx>( buf1, keySize );
5006-
SetupSymCryptEcdsaAndEcdh<ImpXxx>( buf1, buf2, buf3 );
5013+
SetupSymCryptEckey<ImpXxx>( buf1, buf2, buf3, SYMCRYPT_FLAG_ECKEY_ECDH );
50075014
}
50085015

50095016
template<>

unittest/lib/sc_implementations.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,11 @@ setupModOperations( PBYTE buf1, PBYTE buf2, PBYTE buf3, SIZE_T keySize );
5151

5252
template<class Implementation>
5353
void
54-
SetupRsaKey( PBYTE buf1, SIZE_T keySize );
54+
SetupSymCryptRsaKey( PBYTE buf1, SIZE_T keySize, UINT32 generateFlags );
5555

5656
template<class Implementation>
5757
void
58-
sc_RsaKeyPerf( PBYTE buf1, PBYTE buf2, SIZE_T keySize );
58+
sc_RsaKeyPerf( PBYTE buf1, PBYTE buf2, SIZE_T keySize, UINT32 generateFlags );
5959

6060
template<class Implementation>
6161
VOID
@@ -67,7 +67,7 @@ SetupDlGroup( PBYTE buf1, SIZE_T keySize );
6767

6868
template<class Implementation>
6969
void
70-
SetupSymCryptDsaAndDh( PBYTE buf1, PBYTE buf2, PBYTE buf3 );
70+
SetupSymCryptDsa( PBYTE buf1, PBYTE buf2, PBYTE buf3 );
7171

7272
template<class Implementation>
7373
PSYMCRYPT_DLKEY
@@ -88,7 +88,7 @@ SetupSymCryptEcpoints( PBYTE buf1, PBYTE buf2, PBYTE buf3 );
8888

8989
template<class Implementation>
9090
void
91-
SetupSymCryptEcdsaAndEcdh( PBYTE buf1, PBYTE buf2, PBYTE buf3 );
91+
SetupSymCryptEckey( PBYTE buf1, PBYTE buf2, PBYTE buf3, UINT32 setRandomFlags );
9292

9393
VOID
9494
trialDivisionSetFakePrime( PSYMCRYPT_TRIALDIVISION_PRIME p )

0 commit comments

Comments
 (0)