Обновите библиотеку Indy, чтобы использовать новейшую библиотеку OpenSSL - PullRequest
0 голосов
/ 23 мая 2018

Как происходит обновление библиотеки Indy, написанной на Delphi, для использования последней библиотеки OpenSSL, имеющей новейшие функции (например, TLS v1.3)?

Последняя найденная мной версия библиотеки Indy использует libssl32.DLL и ssleay32.dll DLL.Последняя библиотека OpenSSL создает библиотеки DLL libssl-1_1.dll и libcrypto-1_1.dll.Изменяя имена библиотек DLL в Indy, динамическая загрузка библиотек DLL OpenSSL завершается сбоем, поскольку многие функции, определенные в Indy, не соответствуют функциям библиотек DLL OpenSSL.Таким образом, OpenSSL API был изменен.

Насколько я понимаю, исходные файлы Delphi IdSSL * .pas библиотеки Indy должны быть обновлены:

  • IdSSL.pas
  • IdSSLDotNET.pas
  • IdSSLOpenSSL.pas
  • IdSSLOpenSSLHeaders.pas
  • IdSSLOpenSSLHeaders_static.pas
  • IdSSLOpenSSLUtils.pas

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Из-за несовместимости API между библиотекой OpenSSL с новейшими функциями 1.1.x и поддерживаемой библиотекой OpenSSL 1.0.x, код Indy должен быть переработан.Для такого обновления не существует простого / общего процесса.

0 голосов
/ 23 мая 2018

Как вы заметили, OpenSSL 1.1 имеет другой API.В настоящее время Indy использует только вызовы 1.0 и не использует специфические функции 1.1, такие как асинхронная обработка.И пусть Indy переключиться на Open SLL 1.1 будет большим рефакторингом (см. Комментарии Реми ниже).

Но библиотеки OpenSSL, используемые Indy, не устарели. Справочный веб-сайт Fulgan в настоящее время имеет, например, openssl-1.0.2o-i386-win32.zip, что является последней стабильной версией , доступной в ветви, , как указано в официальном исходном коде OpenSSL .Вы путаете ветки (1.0 против 1.1 = изменения API) и ревизии (1.0.2a против 1.0.2o = новые исправления).

Так что не беспокойтесь об этом.Если вы используете Indy с надлежащим списком имен Cypher и последними DLL-библиотеками Fulgan, вы достаточно современны и безопасны.Иногда безопаснее, чем какой-либо старый дистрибутив Linux, который может отставать от ревизии, поставляемой с системой.Даже TLS 1.3 все еще далеко не обязателен, так как он еще не включен на стороне клиента.Я уверен, что команда Indy будет поддерживать 1.1, когда некоторые ее функции станут обязательными (или перейдут на Windows SChannel API).

...