Сегодня открыл для себя существование в питоне модуля сtypes.
А так же то, что некоторые добрые люди выложили на Google Code интерфесы к некоторым интересным мне функциям OpenSSL, сделанные посредством этого модуля.
Конечно, у них
а) в 64-битном линуксе ничего не работает и злобно сегфолтится (проблема лечится буквально несколькими строчками, я им багрепорт написал)
б) OpenSSL-евские сообщения об ошибках в питон не пробрасываются (тут уже изменения посерьезнее, надо логику работы немножко менять).
в) интерфейса для подгрузки энджина с гостовскими алгоритмами не написано (ну тоже на полчаса мероприятие).
Теперь вот сижу рисую интерфейс к низкоуровневым фукнциям подписи и проверки (включая доставание ключа из сертификата). Чтобы избавиться в текущем проекте от вызова openssl через subprocess совсем. Оставлю только вызов openssl cms -verify.
Не то чтобы я собрался по этому поводу совсем отказываться от использования pyasn1. хотя часть функциональности явно будет дублироваться. Но боюсь, что нужные мне извраты с ASN1 через ctypes не сделать - в OpenSSL в этом месте очень любят препроцессор.
А так же то, что некоторые добрые люди выложили на Google Code интерфесы к некоторым интересным мне функциям OpenSSL, сделанные посредством этого модуля.
Конечно, у них
а) в 64-битном линуксе ничего не работает и злобно сегфолтится (проблема лечится буквально несколькими строчками, я им багрепорт написал)
б) OpenSSL-евские сообщения об ошибках в питон не пробрасываются (тут уже изменения посерьезнее, надо логику работы немножко менять).
в) интерфейса для подгрузки энджина с гостовскими алгоритмами не написано (ну тоже на полчаса мероприятие).
Теперь вот сижу рисую интерфейс к низкоуровневым фукнциям подписи и проверки (включая доставание ключа из сертификата). Чтобы избавиться в текущем проекте от вызова openssl через subprocess совсем. Оставлю только вызов openssl cms -verify.
Не то чтобы я собрался по этому поводу совсем отказываться от использования pyasn1. хотя часть функциональности явно будет дублироваться. Но боюсь, что нужные мне извраты с ASN1 через ctypes не сделать - в OpenSSL в этом месте очень любят препроцессор.