国密接口总结
接口 | 接口释义 |
---|---|
i2d_RSA_PUBKEY | 获取PKCS8格式的RSA公钥(oid+公钥) |
i2d_RSAPublicKey | 获取PKCS1格式的RSA公钥(XY) |
i2d_RSAPublicKey | 获取PKCS1格式的RSA公钥(XY) |
i2d_PUBKEY | 获取PKCS8格式的公钥(oid+XY) |
i2d_PublicKey | 获取PKCS1格式的公钥(XY) |
EVP_PKEY_get0_EC_KEY | 从PKEY获取ec_key |
EVP_PKEY_get0_RSA | 从PKEY获取rsa_key |
d2i_X509 | 读取DER格式证书 |
PEM_read_bio_X509 | 读取PEM格式证书 |
-
打印key
-
EC_KEY_print_fp(stdout, EVP_PKEY_get0_EC_KEY(pkey), 0);
打印X509证书
-
X509_print_fp(stdout, x509);
打印P7
-
BIO *m_out = BIO_new_fp(stdout, BIO_NOCLOSE);
-
PKCS7_print_ctx(m_out, v_p7, 0, NULL);
从证书获取公钥
-
X509_get0_pubkey(const X509 * x)
获取密钥用法
-
X509_get_key_usage
获取公钥算法
-
EVP_PKEY_base_id
获取公私钥以及XY并转换格式
-
const BIGNUM *p_prikey = EC_KEY_get0_private_key(pkey->pkey.ec);
len = BN_bn2bin(p_prikey, priv_data); -
EC_POINT *pubkey = EC_KEY_get0_public_key(pkey->pkey.ec);
int X_len = BN_bn2bin(&pubkey->X, pub_X);
int Y_len = BN_bn2bin(&pubkey->Y, pub_Y); -
EC_POINT *pubkey = EC_KEY_get0_public_key(eckey);
unsigned char pub[65] = {0};
BIGNUM *xy = EC_POINT_point2bn(EC_KEY_get0_group(eckey), pubkey, POINT_CONVERSION_UNCOMPRESSED, NULL, NULL);
int pub_len = BN_bn2bin(xy, pub);
BN_free(xy);
print_hex(“pub”, pub, pub_len);