Почему EVP_DigestSignUpdate отсутствует в моей сборке OpenSSL? - PullRequest
1 голос
/ 30 апреля 2020

Я собрал OpenSSL 1.1.1g, но функция EVP_DigestSignUpdate отсутствует. И я не могу понять, почему.

Это на Windows 10 с Visual Studio 2019 BuildTools. Я выполнил базовые c шаги.

> perl .\Configure VC-WIN64A
> nmake
> nmake test

Он собирается без ошибок, и все тесты проходят (кроме пропущенных тестов, см. Ниже).

Но при соединении с libcrypto. lib Я получаю сообщение об ошибке:

mac.o : error LNK2019: unresolved external symbol EVP_DigestSignUpdate referenced in function mac_update

Есть несколько других функций, которые также не могут связать, но эта странная, потому что доступны другие функции EVP_DigestSign* (EVP_DigestSignInit , EVP_DigestSignFinal, EVP_DigestSign). Я запустил dumpbin и вижу, что все они экспортируются, кроме EVP_DigestSignUpdate!

Это сводит меня с ума. Любые идеи?

Для справки, это пропущенные тесты:

02-test_errstr.t ............. skipped: This is unsupported on MSYS/MinGW or MSWin32
05-test_md2.t ................ skipped: md2 is not supported by this OpenSSL build
05-test_rc5.t ................ skipped: rc5 is not supported by this OpenSSL build
30-test_afalg.t .............. skipped: test_afalg not supported for this build
40-test_rehash.t ............. skipped: test_rehash is not available on this platform
60-test_x509_store.t ......... skipped: test_rehash is not available on this platform
70-test_wpacket.t ............ skipped: Test disabled in this configuration
80-test_pkcs12.t ............. skipped: Non-Greek system locale
90-test_gost.t ............... skipped: No test GOST engine found
90-test_overhead.t ........... skipped: Only supported in no-shared builds
95-test_external_boringssl.t . skipped: No external tests in this configuration
95-test_external_krb5.t ...... skipped: No external tests in this configuration
95-test_external_pyca.t ...... skipped: No external tests in this configuration

Если кому-то интересно, я пытаюсь собрать Erlang / otp на Windows, и я ' м почти там ... Это другие ошибки компоновщика на случай, если он вызовет напоминание о подобной проблеме:

cipher.o : error LNK2019: unresolved external symbol EVP_CIPHER_mode referenced in function cipher_info_nif
mac.o : error LNK2019: unresolved external symbol EVP_DigestSignUpdate referenced in function mac_update
pkey.o : error LNK2019: unresolved external symbol EVP_PKEY_CTX_set_rsa_padding referenced in function pkey_sign_nif
pkey.o : error LNK2019: unresolved external symbol EVP_PKEY_CTX_set_rsa_pss_saltlen referenced in function pkey_sign_nif
pkey.o : error LNK2019: unresolved external symbol EVP_PKEY_CTX_set_rsa_mgf1_md referenced in function pkey_sign_nif
pkey.o : error LNK2019: unresolved external symbol EVP_PKEY_CTX_set_rsa_oaep_md referenced in function pkey_crypt_nif
pkey.o : error LNK2019: unresolved external symbol EVP_PKEY_CTX_set0_rsa_oaep_label referenced in function pkey_crypt_nif
pkey.o : error LNK2019: unresolved external symbol EVP_PKEY_CTX_set_signature_md referenced in function pkey_sign_nif

1 Ответ

1 голос
/ 30 апреля 2020

Немного покопавшись, я обнаружил, что EVP_DigestSignUpdate - это просто макрос для EVP_DigestUpdate.

Я создал пример программы, которая ссылается на OpenSSL и использовал EVP_DigestSignUpdate, и она работала просто отлично. В моей сборке OpenSSL нет ничего плохого.

В коде Erlang должна быть проблема, возможно, связанная с ужасной оболочкой cc. sh для компилятора VC ++, который должен запускаться в сценариях bash в cygwin / mingw / MSYS. Я задам новый вопрос о построении Erlang в Windows.

...