diff options
author | Tomas Mraz <tomas@openssl.org> | 2021-04-14 16:35:28 +0200 |
---|---|---|
committer | Tomas Mraz <tomas@openssl.org> | 2021-04-15 18:09:37 +0200 |
commit | a56fcf20da9e2bbc73aa3cf503204bdb44cb023f (patch) | |
tree | 9f04ad6944ca3b36cda4200903ad3f3b339d6866 /providers/implementations/signature | |
parent | ddf0d149e2fd0d894eec08f7237f5a686fc85575 (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.c | 59 |
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); |