Skip to content

Commit a233201

Browse files
committed
Add test cases for RSA X931
1 parent e7ed802 commit a233201

File tree

4 files changed

+49
-6
lines changed

4 files changed

+49
-6
lines changed

test/test_pkey.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -96,15 +96,17 @@ int test_pkey_sign(EVP_PKEY *pkey, OSSL_LIB_CTX* libCtx, unsigned char *hash,
9696
if (err == 0) {
9797
err = EVP_PKEY_sign_init(ctx) != 1;
9898
}
99+
/* Signature MD MUST be set before padding for ossl x931 */
100+
if ((err == 0) && (padMode == RSA_PKCS1_PSS_PADDING ||
101+
padMode == RSA_X931_PADDING) && rsaMd != NULL) {
102+
err = EVP_PKEY_CTX_set_signature_md(ctx, rsaMd) <= 0;
103+
}
99104
if ((err == 0) && padMode) {
100105
err = EVP_PKEY_CTX_set_rsa_padding(ctx, padMode) <= 0;
101106
}
102107
if ((err == 0) && padMode == RSA_PKCS1_PSS_PADDING) {
103108
err = EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, -1) < 0;
104109
}
105-
if ((err == 0) && padMode == RSA_PKCS1_PSS_PADDING && rsaMd != NULL) {
106-
err = EVP_PKEY_CTX_set_signature_md(ctx, rsaMd) <= 0;
107-
}
108110
if ((err == 0) && padMode == RSA_PKCS1_PSS_PADDING && rsaMgf1Md != NULL) {
109111
err = EVP_PKEY_CTX_set_rsa_mgf1_md(ctx, rsaMgf1Md) <= 0;
110112
}
@@ -131,15 +133,17 @@ int test_pkey_verify(EVP_PKEY *pkey, OSSL_LIB_CTX* libCtx, unsigned char *hash,
131133
if (err == 0) {
132134
err = EVP_PKEY_verify_init(ctx) != 1;
133135
}
136+
/* Signature MD MUST be set before padding for ossl x931 */
137+
if ((err == 0) && (padMode == RSA_PKCS1_PSS_PADDING ||
138+
padMode == RSA_X931_PADDING) && rsaMd != NULL) {
139+
err = EVP_PKEY_CTX_set_signature_md(ctx, rsaMd) <= 0;
140+
}
134141
if ((err == 0) && padMode) {
135142
err = EVP_PKEY_CTX_set_rsa_padding(ctx, padMode) <= 0;
136143
}
137144
if ((err == 0) && padMode == RSA_PKCS1_PSS_PADDING) {
138145
err = EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, -1) < 0;
139146
}
140-
if ((err == 0) && padMode == RSA_PKCS1_PSS_PADDING && rsaMd != NULL) {
141-
err = EVP_PKEY_CTX_set_signature_md(ctx, rsaMd) <= 0;
142-
}
143147
if ((err == 0) && padMode == RSA_PKCS1_PSS_PADDING && rsaMgf1Md != NULL) {
144148
err = EVP_PKEY_CTX_set_rsa_mgf1_md(ctx, rsaMgf1Md) <= 0;
145149
}

test/test_rsa.c

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,9 @@ static int test_rsa_sign_verify_pad(int padMode, const EVP_MD *md,
269269
if (padMode == RSA_NO_PADDING) {
270270
bufLen = rsaSigLen;
271271
}
272+
else if (padMode == RSA_X931_PADDING) {
273+
bufLen = EVP_MD_size(md);
274+
}
272275
buf = (unsigned char *)OPENSSL_malloc(bufLen);
273276
err = buf == NULL;
274277
}
@@ -452,6 +455,40 @@ int test_rsa_sign_verify_pss(void *data)
452455
return err;
453456
}
454457

458+
int test_rsa_sign_verify_x931(void *data)
459+
{
460+
461+
int err = 0;
462+
463+
(void)data;
464+
465+
/* Use SHA-1 (default) for MD and MGF1 MD. */
466+
err = test_rsa_sign_verify_pad(RSA_X931_PADDING, EVP_sha1(), NULL) == 1;
467+
#ifdef WP_HAVE_SHA256
468+
if (err == 0) {
469+
/* Use SHA-256 for MD. */
470+
err = test_rsa_sign_verify_pad(RSA_X931_PADDING, EVP_sha256(),
471+
NULL) == 1;
472+
}
473+
#endif
474+
#ifdef WP_HAVE_SHA384
475+
if (err == 0) {
476+
/* Use SHA-384 for MD. */
477+
err = test_rsa_sign_verify_pad(RSA_X931_PADDING, EVP_sha384(),
478+
NULL) == 1;
479+
}
480+
#endif
481+
#ifdef WP_HAVE_SHA512
482+
if (err == 0) {
483+
/* Use SHA-512 for MD. */
484+
err = test_rsa_sign_verify_pad(RSA_X931_PADDING, EVP_sha512(),
485+
NULL) == 1;
486+
}
487+
#endif
488+
489+
return err;
490+
}
491+
455492
static int test_rsa_enc_dec(const unsigned char *der, size_t derLen,
456493
int padMode, const EVP_MD *rsaMd,
457494
const EVP_MD *rsaMgf1Md)

test/unit.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ TEST_CASE test_case[] = {
155155
TEST_DECL(test_rsa_sign_sha1, NULL),
156156
TEST_DECL(test_rsa_sign_verify_pkcs1, NULL),
157157
TEST_DECL(test_rsa_sign_verify_pss, NULL),
158+
TEST_DECL(test_rsa_sign_verify_x931, NULL),
158159
TEST_DECL(test_rsa_enc_dec_pkcs1, NULL),
159160
TEST_DECL(test_rsa_enc_dec_oaep, NULL),
160161
TEST_DECL(test_rsa_pkey_keygen, NULL),

test/unit.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,7 @@ int test_pkey_dec_rsa(EVP_PKEY *pkey, unsigned char *msg, size_t msgLen,
231231
int test_rsa_sign_sha1(void *data);
232232
int test_rsa_sign_verify_pkcs1(void *data);
233233
int test_rsa_sign_verify_pss(void *data);
234+
int test_rsa_sign_verify_x931(void *data);
234235
int test_rsa_enc_dec_pkcs1(void *data);
235236
int test_rsa_enc_dec_oaep(void *data);
236237
int test_rsa_pkey_keygen(void *data);

0 commit comments

Comments
 (0)