FILE *fp = fopen(key_info->pub, "r");
if(NULL == fp)
{
log_e("fopen %s failed", key_info->pub);
return NULL;
}
X509 *cert = PEM_read_X509(fp, NULL, NULL, NULL);
if(NULL == cert)
{
log_e("PEM_read_X509 error");
fclose(fp);
return NULL;
}
EVP_PKEY *pkey = X509_get_pubkey(cert);
if(NULL == pkey)
{
log_e("failed to extract public key");
fclose(fp);
X509_free(cert);
return NULL;
}
EC_KEY *ec_key = EC_KEY_new();
if(NULL == ec_key)
{
log_e("generate EC key failed");
fclose(fp);
return NULL;
}
ec_key = EVP_PKEY_get1_EC_KEY(pkey);
if(NULL == ec_key)
{
log_e("EVP_PKEY_get1_EC_KEY error");
fclose(fp);
EC_KEY_free(ec_key);
X509_free(cert);
return NULL;
}
fclose(fp);
X509_free(cert);
从SM2证书中提取公钥转EC_KEY格式
最新推荐文章于 2024-07-27 21:00:41 发布