ECDSA с OPENSSL

Я хочу внедрить ECDSA в OPENSSL. Но я получаю ниже предупреждения

ECDSA_sign устарела, а ECDSA_do_verify устарела.

Может кто-нибудь, пожалуйста, сообщите мне, как справиться с этой ошибкой.

Всего 1 ответ


Похоже, что вы используете dev-версию OpenSSL (которая станет OpenSSL 3.0). Эти функции устарели в dev, но не устарели в последней стабильной версии (1.1.1).

Предпочтительный метод создания подписей в OpenSSL (в том числе с ECDSA) заключается в использовании API-интерфейсов EVP_DigestSign*() .

Справочные страницы для этих функций находятся здесь:

https://www.openssl.org/docs/man1.1.1/man3/EVP_DigestSignInit.html

Чтобы использовать их, вам нужно создать объект EVP_PKEY содержащий ключ ECDSA. Обычно это делается путем создания пустого EVP_PKEY с использованием EVP_PKEY_new() и последующего присвоения ему EC_KEY с использованием EVP_PKEY_assign_EC_KEY :

https://www.openssl.org/docs/man1.1.1/man3/EVP_PKEY_assign_EC_KEY.html

Вот пример кода для подписи и проверки с помощью API-интерфейсов EVP_DigestSign*() в вики OpenSSL здесь:

https://wiki.openssl.org/index.php/EVP_Signing_and_Verifying

Другой альтернативой использованию функций EVP является использование текущей стабильной версии (1.1.1), где функции, которые вы пытаетесь использовать, не устарели. Но имейте в виду, что они станут устаревшими, когда выйдет OpenSSL 3.0.

Третий вариант - просто игнорировать предупреждения об устаревании. Функции все еще присутствуют и работают. Предполагая, что вы не указали компилятору обрабатывать предупреждения как ошибки, вы все равно сможете создавать свое приложение. Имейте в виду, что API, помеченные как устаревшие, могут в конечном итоге быть удалены в некоторых будущих версиях OpenSSL.


Есть идеи?

10000