使用OPENSSL的ECDSA

使用OPENSSL的ECDSA,openssl,public-key-encryption,ecdsa,openssl-engine,Openssl,Public Key Encryption,Ecdsa,Openssl Engine,我想在OPENSSL中实现ECDSA。但我的警告越来越少了 ECDSA\u sign已弃用&ECDSA\u do\u verify已弃用 有人能告诉我如何处理这个错误吗 您似乎正在使用OpenSSL的开发版本(将成为OpenSSL 3.0)。这些函数在dev中已弃用,但在最新的稳定版本(1.1.1)中未弃用 在OpenSSL(包括ECDSA)中进行签名的首选方法是使用EVP\u DigestSign*()API 这些功能的手册页如下: 为了使用这些密钥,您需要创建一个包含ECDSA密钥的EVP

我想在OPENSSL中实现ECDSA。但我的警告越来越少了

ECDSA\u sign已弃用&ECDSA\u do\u verify已弃用


有人能告诉我如何处理这个错误吗

您似乎正在使用OpenSSL的开发版本(将成为OpenSSL 3.0)。这些函数在dev中已弃用,但在最新的稳定版本(1.1.1)中未弃用

在OpenSSL(包括ECDSA)中进行签名的首选方法是使用
EVP\u DigestSign*()
API

这些功能的手册页如下:

为了使用这些密钥,您需要创建一个包含ECDSA密钥的
EVP_PKEY
对象。通常通过使用
EVP_PKEY_new()
创建一个空的
EVP_PKEY
,然后使用
EVP_PKEY_assign_EC_KEY
为其分配一个EC_密钥来完成:

这里有使用OpenSSL wiki上的
EVP\u DigestSign*()
API进行签名和验证的示例代码:

使用EVP函数的另一种替代方法是使用当前的稳定版本(1.1.1),其中您尝试使用的函数未被弃用。但请记住,当OpenSSL 3.0发布时,它们将被弃用


第三种选择是忽略弃用警告。这些功能仍然存在并发挥作用。假设您没有指示编译器将警告视为错误,那么您仍然可以构建应用程序。请记住,标记为不推荐的API最终可能会在OpenSSL的某些未来版本中被删除。

非常感谢@Matt Caswellhow在引擎端为上述函数注册函数,例如engine_set_ECDSA?engine_set_pkey_meths()(遗憾的是没有文档记录)。此代码用于RSA: