Compare commits

...

3 Commits

Author SHA1 Message Date
Tianjia Zhang 55ae352927
Merge b1d75d2df8 into c64b6af5e2 2025-07-24 00:19:04 -07:00
Tianjia Zhang b1d75d2df8 pkcs7: support sm2 public algorithm
Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
2023-08-11 15:48:55 +08:00
Tianjia Zhang 11348dc644 evp: Supports getting pkey type from keymgmt
If the public key type is EVP_PKEY_KEYMGMT, errors may occur in
some cases. It is necessary to obtain the exact type of the public
key from keymgmt.

Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
2023-08-11 15:48:47 +08:00
2 changed files with 11 additions and 2 deletions

View File

@ -1024,12 +1024,19 @@ DH *EVP_PKEY_get1_DH(EVP_PKEY *pkey)
int EVP_PKEY_get_id(const EVP_PKEY *pkey)
{
if (pkey->type == EVP_PKEY_KEYMGMT) {
const char *name = EVP_KEYMGMT_get0_name(pkey->keymgmt);
int type = evp_pkey_name2type(name);
if (type != NID_undef)
return type;
}
return pkey->type;
}
int EVP_PKEY_get_base_id(const EVP_PKEY *pkey)
{
return EVP_PKEY_type(pkey->type);
return EVP_PKEY_type(EVP_PKEY_get_id(pkey));
}
/*

View File

@ -375,7 +375,9 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey,
V_ASN1_NULL, NULL))
return 0;
if (EVP_PKEY_is_a(pkey, "EC") || EVP_PKEY_is_a(pkey, "DSA"))
if (EVP_PKEY_is_a(pkey, "EC")
|| EVP_PKEY_is_a(pkey, "DSA")
|| EVP_PKEY_is_a(pkey, "SM2"))
return pkcs7_ecdsa_or_dsa_sign_verify_setup(p7i, 0);
if (EVP_PKEY_is_a(pkey, "RSA"))
return pkcs7_rsa_sign_verify_setup(p7i, 0);