是否有像 SSL_CTX_use_*PrivateKey for ECDSA 这样的 OpenSSL 函数?
Is there an OpenSSL function like SSL_CTX_use_*PrivateKey for ECDSA?
我是加密的新手,尤其是 OpenSSL。我仍处于学习阶段,正在查看文档(甚至是源代码)。我看到函数称为:
SSL_CTX_use_PrivateKey
SSL_CTX_use_RSAPrivateKey
但我没有看到一个类似于 SSL_CTX_use_ECDSAPrivateKey 的东西。
有没有这样的功能,就是找不到?还是 ECDSA 是以另一种方式处理的?
您应该对 ECDSA 使用 SSL_CTX_use_PrivateKey
。此函数是处理所有键类型的通用函数。事实上,在即将推出的 OpenSSL 3.0 中,SSL_CTX_use_RSAPrivateKey
已被弃用,SSL_CTX_use_PrivateKey
是包括 RSA 在内的所有密钥类型的首选函数。
为了使用 SSL_CTX_use_PrivateKey
,您需要将密钥作为 EVP_PKEY
对象传递。如果您拥有 EC_KEY
对象形式的密钥,那么您可以使用 EVP_PKEY_new()
创建一个新的 EVP_PKEY
,然后使用 EVP_PKEY_set1_EC_KEY
将您的 EC_KEY
分配给它或 EVP_PKEY_assign_EC_KEY
。参见:
https://www.openssl.org/docs/man1.1.1/man3/EVP_PKEY_new.html
https://www.openssl.org/docs/man1.1.1/man3/EVP_PKEY_set1_EC_KEY.html
作为替代方案,您可以使用 SSL_CTX_use_PrivateKey_file
,它将自动从文件中加载密钥。同样,您可以将此函数用于任何密钥类型(包括 RSA 和 ECDSA)。
我是加密的新手,尤其是 OpenSSL。我仍处于学习阶段,正在查看文档(甚至是源代码)。我看到函数称为: SSL_CTX_use_PrivateKey SSL_CTX_use_RSAPrivateKey
但我没有看到一个类似于 SSL_CTX_use_ECDSAPrivateKey 的东西。
有没有这样的功能,就是找不到?还是 ECDSA 是以另一种方式处理的?
您应该对 ECDSA 使用 SSL_CTX_use_PrivateKey
。此函数是处理所有键类型的通用函数。事实上,在即将推出的 OpenSSL 3.0 中,SSL_CTX_use_RSAPrivateKey
已被弃用,SSL_CTX_use_PrivateKey
是包括 RSA 在内的所有密钥类型的首选函数。
为了使用 SSL_CTX_use_PrivateKey
,您需要将密钥作为 EVP_PKEY
对象传递。如果您拥有 EC_KEY
对象形式的密钥,那么您可以使用 EVP_PKEY_new()
创建一个新的 EVP_PKEY
,然后使用 EVP_PKEY_set1_EC_KEY
将您的 EC_KEY
分配给它或 EVP_PKEY_assign_EC_KEY
。参见:
https://www.openssl.org/docs/man1.1.1/man3/EVP_PKEY_new.html https://www.openssl.org/docs/man1.1.1/man3/EVP_PKEY_set1_EC_KEY.html
作为替代方案,您可以使用 SSL_CTX_use_PrivateKey_file
,它将自动从文件中加载密钥。同样,您可以将此函数用于任何密钥类型(包括 RSA 和 ECDSA)。