Dec. 22nd, 2006

vitus_wagner: My photo 2005 (Default)
Интересные всё-таки люди писали в Ruby модуль OpenSSL.
Они не поленились написать биндинги практически ко всему API (чего по-моему нет ни в одном другом скриптовом языке), в том числе и к API engines, но совершенно забили на документирование всего этого безобразия. Во всяком случае http://www.ruby-doc.org на тему криптографических модулей молчит как рыба об лед. Только список файлов и классов показывает.

Ну ладно, я всё-таки в нижележащем API кое-чего понимаю. Беглым рассматриванием исходника обнаружиаю, что нужный мне метод называется OpenSSL::Engine::by_id. Вписываю в тестовый скрипт OpenSSL::Engine::by_id("gost"), а оно мне и говорит
"нету такой engine". Как нету? Я ж сам libgost.so туда клал (туда - это где openssl её искатб будет). Ставлю LD_LIBRARY_PATH на место, где лежит libcrypto.so с отладочной информацией, лезу в отладчик. Всё честно - вызываем ENGINE_by_id с правильным ID, оно не находит в списке загруженных, и пытается инициализировать engine dynamic, чтобы динамически подгрузить то, что просили. И тут-то его настигает облом. Нету engine dynamic. Как нету? Я ж сам видел в исходниках ENGINE_load_builtin_engines? Лезу в код, смотрю, и вижу что где-то между версией 1.8.2 которая не собирается с OpenSSL 0.9.8 (даже и нормальным, непатченным), и 1.8.5 этот вызов закоментарили. Злые они. Раскоментарил, пересобрал, сертификат читается и подпись под сообщением проверяется.

Ключевая фраза

engine = Engine::by_id("gost")


Дальше, надеюсь, все пойдет как по рельсям. Правда, нужно разобраться есть ли у них generic объект для секретных ключей.
А то во всех примерах Key::RSA::new. А мне RSA не нужен. А писать Key::GOST, естественно, лень. Не царское это дело (не скриптовое в смысле), думать о том какой алгоритм с открытым ключом используется при работе. Есть ключ, в нем OID написан, нехай нижележащая библииотека разбирается.

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

May 2025

S M T W T F S
    1 2 3
4 56 7 8 9 10
11 12 131415 1617
1819202122 2324
252627 282930 31

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 31st, 2025 02:15 pm
Powered by Dreamwidth Studios