Entry tags:
Сегодня я узнал...
Версии 1.0.1 и 1.0.2 оказались устроены немножко по-разному в части работы с engine. Engine, который я пишу, подсовывает свой метод RSA и свой метод для работы с эллиптикой. Немножко по-разному, но это мелочи, которые я уже отработал, а одинаково это не делается.
Запускаю для теста команду dgst c 1.0.2 — работает. Подсовываю тот же код в 1.0.1 — вылетает с непонятной диагностикой. Оказалось, что в 1.0.1, получив в командной строке ключ -engine, openssl ожидает, что дайджест и подпись этим engine предоставлены. А в 1.0.2 — нет, и поэтому работает из с методами из стандартной поставки. С ГОСТом мы на это не наступили потому, что там engine по счастью обеспечивает все необходимые алгоритмы.
Следующий номер — загрузка engine. 1.0.2 автоматом цепляет engine и ставит его реализации при загрузке через конфиг. А 1.0.1 потребовала указания строки default_algorithms в том конфиге.
Ну и чтоб два раза не вставать. nginx при сборке с ключом --with-openssl ждёт по указанному пути исходники и линкует их статически. Что, наверное, правильно, но как ему в такой позе подсунуть самосборный engine и конфиг для его загрузки, мне не очевидно.