You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PEM_read_bio_PrivateKey是否存在对应公钥BIO读取等价接口?

OpenSSL通用BIO公钥读取接口说明

你需要的通用公钥BIO读取接口实际是存在的,只是命名和你预期的PEM_read_bio_PublicKey不同,接口名为PEM_read_bio_PUBKEY,它的第一个入参就是BIO指针类型,和PEM_read_bio_PrivateKey的参数逻辑完全对齐,返回通用EVP_PKEY*结构,支持RSA、ECC、SM2等各类算法的公钥读取,不需要调用算法专属的读取函数。

出现这个认知偏差的核心原因是OpenSSL的PEM接口命名规则有特殊约定:

  • 通用公钥相关的接口统一用PUBKEY后缀指代X.509标准SubjectPublicKeyInfo格式的通用公钥,而非PublicKey
  • 你提到的PEM_read_PUBKEY就是PEM_read_bio_PUBKEY对应的FILE*版本,两者是一一对应的配套接口,功能完全一致,仅输入源类型不同

示例代码

// 从PEM格式文件通过BIO读取通用公钥
EVP_PKEY *pubkey = NULL;
BIO *pub_bio = BIO_new_file("public_key.pem", "r");
if (!pub_bio) {
    // 错误处理逻辑
}
pubkey = PEM_read_bio_PUBKEY(pub_bio, &pubkey, NULL, NULL);
BIO_free(pub_bio);

// 公钥使用完成后释放资源
if (pubkey) {
    EVP_PKEY_free(pubkey);
}

OpenSSL早期设计接口时,特意区分了算法绑定的公钥格式和通用公钥格式:前者仅存储对应算法的公钥参数、不带算法标识,接口会带算法前缀比如PEM_read_bio_RSAPublicKey;后者是带算法标识的通用标准格式,用PUBKEY后缀做区分,所以没有用PublicKey作为通用接口的后缀命名。

内容的提问来源于stack exchange,提问作者Sage Gerard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 06:54:04