Merge pull request #8875 from kareem-wolfssl/zd20035

Fix SRP wolfCrypt test on lower FP_MAX/SP_INT_BITS configs
pull/8900/head
David Garske 2025-06-18 08:59:09 -07:00 committed by GitHub
commit 74de689941
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 34 additions and 6 deletions

View File

@ -24152,7 +24152,6 @@ out:
#endif /* !NO_DSA */ #endif /* !NO_DSA */
#ifdef WOLFCRYPT_HAVE_SRP #ifdef WOLFCRYPT_HAVE_SRP
static wc_test_ret_t generate_random_salt(byte *buf, word32 size) static wc_test_ret_t generate_random_salt(byte *buf, word32 size)
{ {
wc_test_ret_t ret = WC_TEST_RET_ENC_NC; wc_test_ret_t ret = WC_TEST_RET_ENC_NC;
@ -24170,14 +24169,21 @@ static wc_test_ret_t generate_random_salt(byte *buf, word32 size)
return ret; return ret;
} }
#if ((defined(FP_MAX_BITS) && (FP_MAX_BITS >= 3072)) \
|| (defined(SP_INT_BITS) && (SP_INT_BITS >= 3072)))
#define SRP_TEST_BUFFER_SIZE 192
#else
#define SRP_TEST_BUFFER_SIZE 128
#endif
static wc_test_ret_t srp_test_digest(SrpType dgstType) static wc_test_ret_t srp_test_digest(SrpType dgstType)
{ {
wc_test_ret_t r; wc_test_ret_t r;
byte clientPubKey[192]; /* A */ byte clientPubKey[SRP_TEST_BUFFER_SIZE]; /* A */
byte serverPubKey[192]; /* B */ byte serverPubKey[SRP_TEST_BUFFER_SIZE]; /* B */
word32 clientPubKeySz = 192; word32 clientPubKeySz = SRP_TEST_BUFFER_SIZE;
word32 serverPubKeySz = 192; word32 serverPubKeySz = SRP_TEST_BUFFER_SIZE;
byte username[] = "user"; byte username[] = "user";
word32 usernameSz = 4; word32 usernameSz = 4;
@ -24185,6 +24191,26 @@ static wc_test_ret_t srp_test_digest(SrpType dgstType)
byte password[] = "password"; byte password[] = "password";
word32 passwordSz = 8; word32 passwordSz = 8;
#if SRP_TEST_BUFFER_SIZE == 128
WOLFSSL_SMALL_STACK_STATIC const byte N[] = {
0xEE, 0xAF, 0x0A, 0xB9, 0xAD, 0xB3, 0x8D, 0xD6,
0x9C, 0x33, 0xF8, 0x0A, 0xFA, 0x8F, 0xC5, 0xE8,
0x60, 0x72, 0x61, 0x87, 0x75, 0xFF, 0x3C, 0x0B,
0x9E, 0xA2, 0x31, 0x4C, 0x9C, 0x25, 0x65, 0x76,
0xD6, 0x74, 0xDF, 0x74, 0x96, 0xEA, 0x81, 0xD3,
0x38, 0x3B, 0x48, 0x13, 0xD6, 0x92, 0xC6, 0xE0,
0xE0, 0xD5, 0xD8, 0xE2, 0x50, 0xB9, 0x8B, 0xE4,
0x8E, 0x49, 0x5C, 0x1D, 0x60, 0x89, 0xDA, 0xD1,
0x5D, 0xC7, 0xD7, 0xB4, 0x61, 0x54, 0xD6, 0xB6,
0xCE, 0x8E, 0xF4, 0xAD, 0x69, 0xB1, 0x5D, 0x49,
0x82, 0x55, 0x9B, 0x29, 0x7B, 0xCF, 0x18, 0x85,
0xC5, 0x29, 0xF5, 0x66, 0x66, 0x0E, 0x57, 0xEC,
0x68, 0xED, 0xBC, 0x3C, 0x05, 0x72, 0x6C, 0xC0,
0x2F, 0xD4, 0xCB, 0xF4, 0x97, 0x6E, 0xAA, 0x9A,
0xFD, 0x51, 0x38, 0xFE, 0x83, 0x76, 0x43, 0x5B,
0x9F, 0xC6, 0x1D, 0x2F, 0xC0, 0xEB, 0x06, 0xE3
};
#else
WOLFSSL_SMALL_STACK_STATIC const byte N[] = { WOLFSSL_SMALL_STACK_STATIC const byte N[] = {
0xfc, 0x58, 0x7a, 0x8a, 0x70, 0xfb, 0x5a, 0x9a, 0xfc, 0x58, 0x7a, 0x8a, 0x70, 0xfb, 0x5a, 0x9a,
0x5d, 0x39, 0x48, 0xbf, 0x1c, 0x46, 0xd8, 0x3b, 0x5d, 0x39, 0x48, 0xbf, 0x1c, 0x46, 0xd8, 0x3b,
@ -24211,14 +24237,16 @@ static wc_test_ret_t srp_test_digest(SrpType dgstType)
0xb9, 0x26, 0x03, 0xba, 0xb5, 0x58, 0x6f, 0x6c, 0xb9, 0x26, 0x03, 0xba, 0xb5, 0x58, 0x6f, 0x6c,
0x8b, 0x08, 0xa1, 0x7b, 0x6f, 0x42, 0xc9, 0x53 0x8b, 0x08, 0xa1, 0x7b, 0x6f, 0x42, 0xc9, 0x53
}; };
#endif
/* Generator is 2 for both cases. */
WOLFSSL_SMALL_STACK_STATIC const byte g[] = { WOLFSSL_SMALL_STACK_STATIC const byte g[] = {
0x02 0x02
}; };
byte salt[10]; byte salt[10];
byte verifier[192]; byte verifier[SRP_TEST_BUFFER_SIZE];
word32 v_size = (word32)sizeof(verifier); word32 v_size = (word32)sizeof(verifier);
word32 clientProofSz = SRP_MAX_DIGEST_SIZE; word32 clientProofSz = SRP_MAX_DIGEST_SIZE;