История изменений
Исправление k0valenk0_igor, (текущая версия) :
Я вроде разобрался почему так происходит.
M2Crypto - это обвязка над OpenSSL и коль скоро это так, она не проводит инициализацию OpenSSL, оставляя это на долю автора приложения, что в общем-то вроде как находится в полном согласии с мануалом OpenSSL
It is strongly recommended that all new applications call OPENSSL_config() or the more sophisticated functions such as CONF_modules_load() during initialization (that is before starting any threads). By doing this an application does not need to keep track of all configuration options and some new functionality can be supported automatically. It is also possible to automatically call OPENSSL_config() when an application calls OPENSSL_add_all_algorithms() by compiling an application with the preprocessor symbol OPENSSL_LOAD_CONF #define'd. In this way configuration can be added without source changes.
Однако проблема в том, что доступа ни к OPENSSL_config(), ни к OPENSSL_add_all_algorithms() обвязка M2Crypto не предоставляет. За бортом оказались и ряд других весьма полезных функций позволяющих на ручнике добавлять алгоритмы и шифрсьюты. Например OPENSSL_add_all_algorithms и OPENSSL_add_all_ciphers
Обычно эта проблема себя не проявляет, однако в ситуации когда шифрсьюты и алгоритмы обитают во внешнем движке, она встает в полный рост. Потому что без этих функций становится невозможным ни подключить движок путем объявления его в конфиге, ни заявить о движке, алгоритмах и шифрсьютах на ручнике.
Причем M2Crypto отнюдь не одинок в таких косяках. Две остальные известные мне обвязки предоставляют доступ к еще меньшему количеству функционала, а автор curl (который вроде как полноценное приложение и должен делать инициализацию сам) багу на который ему указали присвоил статус «closed-later» и на этом расслабился, как я понимаю... Во всяком случае внешние движки openssl'я curl не видит до сих пор.
Короче, все очень грустно.
Исправление k0valenk0_igor, :
Я вроде разобрался почему так происходит.
M2Crypto - это обвязка над OpenSSL и коль скоро это так, она не проводит инициализацию OpenSSL, оставляя это на долю автора приложения, что в общем-то вроде как находится в полном согласии с мануалом OpenSSL
It is strongly recommended that all new applications call OPENSSL_config() or the more sophisticated functions such as CONF_modules_load() during initialization (that is before starting any threads). By doing this an application does not need to keep track of all configuration options and some new functionality can be supported automatically. It is also possible to automatically call OPENSSL_config() when an application calls OPENSSL_add_all_algorithms() by compiling an application with the preprocessor symbol OPENSSL_LOAD_CONF #define'd. In this way configuration can be added without source changes.
Однако проблема в том, что доступа ни к OPENSSL_config(), ни к OPENSSL_add_all_algorithms() обвязка M2Crypto не предоставляет. За бортом оказались и ряд других весьма полезных функций позволяющих на ручнике добавлять алгоритмы и шифрсьюты. Например OPENSSL_add_all_algorithms и OPENSSL_add_all_ciphers
Обычно эта проблема себя не проявляет, однако в ситуации когда шифрсьюты и алгоритмы обитают во внешнем движке, она встает в полный рост. Потому что без этих функций становится невозможным ни подключить движок путем объявления его в конфиге, ни заявить о движке, алгоритмах и шифрсьютах не ручнике. Патовая ситуация.
Причем M2Crypto отнюдь не одинок в таких косяках. Две остальные известные мне обвязки предоставляют доступ к еще меньшему количеству функционала, а автор curl (который вроде как полноценное приложение и должен делать инициализацию сам) багу на который ему указали присвоил статус «closed-later» и на этом расслабился, как я понимаю... Во всяком случае внешние движки openssl'я curl не видит до сих пор.
Короче, все очень грустно.
Исходная версия k0valenk0_igor, :
Я вроде разобрался почему так происходит.
M2Crypto - это обвязка над OpenSSL и коль скоро это так, она не проводит инициализацию библиотеки, оставляя это на долю автора приложения, что в общем-то вроде как находится в полном согласии с мануалом OpenSSL
It is strongly recommended that all new applications call OPENSSL_config() or the more sophisticated functions such as CONF_modules_load() during initialization (that is before starting any threads). By doing this an application does not need to keep track of all configuration options and some new functionality can be supported automatically. It is also possible to automatically call OPENSSL_config() when an application calls OPENSSL_add_all_algorithms() by compiling an application with the preprocessor symbol OPENSSL_LOAD_CONF #define'd. In this way configuration can be added without source changes.
Однако проблема в том, что доступа ни к OPENSSL_config(), ни к OPENSSL_add_all_algorithms() обвязка M2Crypto не предоставляет. За бортом оказались и ряд других весьма полезных функций позволяющих на ручнике добавлять алгоритмы и шифрсьюты. Например OPENSSL_add_all_algorithms и OPENSSL_add_all_ciphers
Обычно эта проблема себя не проявляет, однако в ситуации когда шифрсьюты и алгоритмы обитают во внешнем движке, она встает в полный рост. Потому что без этих функций становится невозможным ни подключить движок путем объявления его в конфиге, ни заявить о движке, алгоритмах и шифрсьютах не ручнике. Патовая ситуация.
Причем M2Crypto отнюдь не одинок в таких косяках. Две остальные известные мне обвязки предоставляют доступ к еще меньшему количеству функционала, а автор curl (который вроде как полноценное приложение и должен делать инициализацию сам) багу на который ему указали присвоил статус «closed-later» и на этом расслабился, как я понимаю... Во всяком случае внешние движки openssl'я curl не видит до сих пор.
Короче, все очень грустно.