>Что за "вставьте после" и "получается вот так", блин? patch и diff
>для кого сделаны? Когда написано как написано, то несколько проще понять, что именно сделано и почему. А если понять, то этот же алгоритм можно применить к любому другому продукту, использующему OpenSSL.
Собственно, есть два основных условия, после которых с ГОСТ начинает работать любой OpenSSL-enabled продукт:
1. Подгружается engine, реализующая ГОСТ (либо через зачитывание openssl.cnf вызовом OPENSSL_config(NULL), либо если продукт имеет собственные средства работы с engine, то через них. Тогда надо еще убедиться что он вызывает ENGINE_set_default(e,ENGINE_METHOD_ALL)). Обратите внимание, что engine должна быть загружена до SSL_library_init. Поскольку иначе SSL_library_init не найдет доступных реализаций алгоритмов ГОСТ и запретит гостовские шифрсьюты.
2. В списке разрешенных шифрсьютов, задаваемых SSL_set_cipher_list лии SSL_CTX_set_cipher_list присутствует GOST2001-GOST89-GOST89. (в случае патченной OpenSSL 0.9.8 должны еще быть явно запрещены шифрсьюты с DSA, поскольку они конфликтуют. В 0.9.9 этой проблемы нет)
Есть еще третье условие - для загрузки секретного ключа (если у нас сервер или если используется клиентский сертификат) не должна использоваться функция
SSL_use_RSAPrivateKey_file, которая, по очевидным причинам, ключи ГОСТ грузить не умеет.
Заменить её на более общую SSL_use_PrivateKey_file