带 OPENSSL 的 ECDSA
ECDSA with OPENSSL
我想在 OPENSSL 中实现 ECDSA。但我收到了以下警告
ECDSA_sign 已弃用 & ECDSA_do_verify 已弃用。
谁能指导我如何处理这个错误。
看来您使用的是 OpenSSL 的开发版本(将成为 OpenSSL 3.0)。这些功能在开发中已弃用,但在最新的稳定版本 (1.1.1) 中并未弃用。
在 OpenSSL(包括使用 ECDSA)中进行签名的首选方法是使用 EVP_DigestSign*()
API。
这些函数的手册页在这里:
https://www.openssl.org/docs/man1.1.1/man3/EVP_DigestSignInit.html
为了使用它们,您需要创建一个包含 ECDSA 密钥的 EVP_PKEY
对象。通常这是通过使用 EVP_PKEY_new()
创建一个空的 EVP_PKEY
然后使用 EVP_PKEY_assign_EC_KEY
:
为其分配一个 EC_KEY 来完成的
https://www.openssl.org/docs/man1.1.1/man3/EVP_PKEY_assign_EC_KEY.html
这里有使用 OpenSSL wiki 上的 EVP_DigestSign*()
API 进行签名和验证的示例代码:
https://wiki.openssl.org/index.php/EVP_Signing_and_Verifying
另一种使用 EVP 函数的替代方法是使用当前稳定版本 (1.1.1),其中您尝试使用的函数未被弃用。但请记住,当 OpenSSL 3.0 发布时,它们将被弃用。
第三种选择是忽略弃用警告。这些功能仍然存在并且可以工作。假设您没有指示编译器将警告视为错误,您应该仍然能够构建您的应用程序。请记住,标记为已弃用的 API 最终可能会在某些未来版本的 OpenSSL 中被删除。
我想在 OPENSSL 中实现 ECDSA。但我收到了以下警告
ECDSA_sign 已弃用 & ECDSA_do_verify 已弃用。
谁能指导我如何处理这个错误。
看来您使用的是 OpenSSL 的开发版本(将成为 OpenSSL 3.0)。这些功能在开发中已弃用,但在最新的稳定版本 (1.1.1) 中并未弃用。
在 OpenSSL(包括使用 ECDSA)中进行签名的首选方法是使用 EVP_DigestSign*()
API。
这些函数的手册页在这里:
https://www.openssl.org/docs/man1.1.1/man3/EVP_DigestSignInit.html
为了使用它们,您需要创建一个包含 ECDSA 密钥的 EVP_PKEY
对象。通常这是通过使用 EVP_PKEY_new()
创建一个空的 EVP_PKEY
然后使用 EVP_PKEY_assign_EC_KEY
:
https://www.openssl.org/docs/man1.1.1/man3/EVP_PKEY_assign_EC_KEY.html
这里有使用 OpenSSL wiki 上的 EVP_DigestSign*()
API 进行签名和验证的示例代码:
https://wiki.openssl.org/index.php/EVP_Signing_and_Verifying
另一种使用 EVP 函数的替代方法是使用当前稳定版本 (1.1.1),其中您尝试使用的函数未被弃用。但请记住,当 OpenSSL 3.0 发布时,它们将被弃用。
第三种选择是忽略弃用警告。这些功能仍然存在并且可以工作。假设您没有指示编译器将警告视为错误,您应该仍然能够构建您的应用程序。请记住,标记为已弃用的 API 最终可能会在某些未来版本的 OpenSSL 中被删除。