summaryrefslogtreecommitdiffstats
path: root/providers/implementations/signature
diff options
context:
space:
mode:
authorTomas Mraz <tomas@openssl.org>2021-04-14 16:35:28 +0200
committerTomas Mraz <tomas@openssl.org>2021-04-15 18:09:37 +0200
commita56fcf20da9e2bbc73aa3cf503204bdb44cb023f (patch)
tree9f04ad6944ca3b36cda4200903ad3f3b339d6866 /providers/implementations/signature
parentddf0d149e2fd0d894eec08f7237f5a686fc85575 (diff)
Add OID for mdc2WithRSASignature and remove related TODO 3.0
Fixes #14366 Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/14874)
Diffstat (limited to 'providers/implementations/signature')
-rw-r--r--providers/implementations/signature/rsa.c59
1 files changed, 34 insertions, 25 deletions
diff --git a/providers/implementations/signature/rsa.c b/providers/implementations/signature/rsa.c
index bfaa7b4e80..96366a9a6b 100644
--- a/providers/implementations/signature/rsa.c
+++ b/providers/implementations/signature/rsa.c
@@ -222,6 +222,7 @@ static unsigned char *rsa_generate_signature_aid(PROV_RSA_CTX *ctx,
unsigned char *aid = NULL;
int saltlen;
RSA_PSS_PARAMS_30 pss_params;
+ int ret;
if (!WPACKET_init_der(&pkt, aid_buf, buf_len)) {
ERR_raise(ERR_LIB_PROV, ERR_R_MALLOC_FAILURE);
@@ -229,33 +230,41 @@ static unsigned char *rsa_generate_signature_aid(PROV_RSA_CTX *ctx,
}
switch(ctx->pad_mode) {
- case RSA_PKCS1_PADDING:
- if (!ossl_DER_w_algorithmIdentifier_MDWithRSAEncryption(&pkt, -1,
- ctx->mdnid)) {
- ERR_raise(ERR_LIB_PROV, ERR_R_INTERNAL_ERROR);
- goto cleanup;
- }
- break;
- case RSA_PKCS1_PSS_PADDING:
- saltlen = rsa_pss_compute_saltlen(ctx);
- if (saltlen < 0)
- goto cleanup;
- if (!ossl_rsa_pss_params_30_set_defaults(&pss_params)
- || !ossl_rsa_pss_params_30_set_hashalg(&pss_params, ctx->mdnid)
- || !ossl_rsa_pss_params_30_set_maskgenhashalg(&pss_params,
- ctx->mgf1_mdnid)
- || !ossl_rsa_pss_params_30_set_saltlen(&pss_params, saltlen)
- || !ossl_DER_w_algorithmIdentifier_RSA_PSS(&pkt, -1,
- RSA_FLAG_TYPE_RSASSAPSS,
- &pss_params)) {
- ERR_raise(ERR_LIB_PROV, ERR_R_INTERNAL_ERROR);
- goto cleanup;
- }
+ case RSA_PKCS1_PADDING:
+ ret = ossl_DER_w_algorithmIdentifier_MDWithRSAEncryption(&pkt, -1,
+ ctx->mdnid);
+
+ if (ret > 0) {
break;
- default:
- ERR_raise_data(ERR_LIB_PROV, ERR_R_UNSUPPORTED,
- "Algorithm ID generation");
+ } else if (ret == 0) {
+ ERR_raise(ERR_LIB_PROV, ERR_R_INTERNAL_ERROR);
+ goto cleanup;
+ }
+ ERR_raise_data(ERR_LIB_PROV, ERR_R_UNSUPPORTED,
+ "Algorithm ID generation - md NID: %d",
+ ctx->mdnid);
+ goto cleanup;
+ case RSA_PKCS1_PSS_PADDING:
+ saltlen = rsa_pss_compute_saltlen(ctx);
+ if (saltlen < 0)
+ goto cleanup;
+ if (!ossl_rsa_pss_params_30_set_defaults(&pss_params)
+ || !ossl_rsa_pss_params_30_set_hashalg(&pss_params, ctx->mdnid)
+ || !ossl_rsa_pss_params_30_set_maskgenhashalg(&pss_params,
+ ctx->mgf1_mdnid)
+ || !ossl_rsa_pss_params_30_set_saltlen(&pss_params, saltlen)
+ || !ossl_DER_w_algorithmIdentifier_RSA_PSS(&pkt, -1,
+ RSA_FLAG_TYPE_RSASSAPSS,
+ &pss_params)) {
+ ERR_raise(ERR_LIB_PROV, ERR_R_INTERNAL_ERROR);
goto cleanup;
+ }
+ break;
+ default:
+ ERR_raise_data(ERR_LIB_PROV, ERR_R_UNSUPPORTED,
+ "Algorithm ID generation - pad mode: %d",
+ ctx->pad_mode);
+ goto cleanup;
}
if (WPACKET_finish(&pkt)) {
WPACKET_get_total_written(&pkt, aid_len);