openssl函数-d2i_PublicKey和;d2i_PUBKEY和哪些场景决定应该使用哪种?
openssl函数--openssl函数-d2i_PublicKey和;d2i_PUBKEY和哪些场景决定应该使用哪种?,openssl,private-key,public-key,Openssl,Private Key,Public Key,openssl函数--d2i_公钥和d2i_公钥之间有什么区别?哪些场景决定了应该使用哪个 d2i_公钥正在返回有效的EVP_PKEY对象的应用程序中使用,直到找到一个特定的测试用例,其中返回了NULL。如果函数调用更改为d2i\u PUBKEY,它将返回有效的EVP\u PKEY。但是它只针对这一个测试用例,其余的测试用例使用另一个函数--d2i\u PublicKey。在决定调用哪个函数之前,似乎需要对参数进行一些初始检查/处理。以前是否有人遇到过类似的问题,并且可以在相关信息或代码方面提供
d2i_公钥
和d2i_公钥
之间有什么区别?哪些场景决定了应该使用哪个
d2i_公钥
正在返回有效的EVP_PKEY
对象的应用程序中使用,直到找到一个特定的测试用例,其中返回了NULL
。如果函数调用更改为d2i\u PUBKEY
,它将返回有效的EVP\u PKEY
。但是它只针对这一个测试用例,其余的测试用例使用另一个函数--d2i\u PublicKey
。在决定调用哪个函数之前,似乎需要对参数进行一些初始检查/处理。以前是否有人遇到过类似的问题,并且可以在相关信息或代码方面提供帮助
Variant 1: EVP_PKEY_result_obj = d2i_PublicKey(keyType /*EVP_PKEY_RSA*/, nullptr, &publicKeyData, publicKey.size());
Variant 2: EVP_PKEY_result_obj = d2i_PUBKEY(nullptr, &publicKeyData, publicKey.size());
1.1.0分支文件[1][2]说明了有关这些功能的以下内容:
d2i\u PrivateKey()
使用算法类型对私钥进行解码。它尝试使用任何特定于密钥的格式或PKCS#8未加密的PrivateKeyInfo格式。类型参数应该是公钥算法常量,例如EVP_PKEY_RSA。如果解码的密钥与类型不匹配,则会发生错误。d2i_PublicKey()对公钥执行相同的操作
d2i_PUBKEY()
和i2d_PUBKEY()
使用SubjectPublicKeyInfo格式对EVP_PKEY结构进行解码和编码。否则,它们将遵循其他ASN.1函数的约定,如d2i_X509()