Собственно, то, что получилось заставить работать и оно работает:
Правим файл /etc/openssl/openssl.cnf
Это пишем вверху:
openssl_conf = openssl_def
Это - внизу:
[openssl_def] engines = engine_section [engine_section] gost = gost_section [gost_section] engine_id = gost dynamic_path = /usr/lib/openssl/engines/libgost.so default_algorithms = ALL CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet
Создаем файл req.xml (должен быть в кодировке cp1251):
<?xml version="1.0" encoding="windows-1251"?> <request> <requestTime>2012-12-29T16:01:01.000+04:00</requestTime> <operatorName>Наименование оператора</operatorName> <inn>1234567890</inn> <ogrn>1234567890123</ogrn> <email>[email protected]</email> </request>
Где-то берём файл ЭЦП, обзываем его zapret-info.pem, подписываем наш файл req.xml
openssl smime -sign -in req.xml -out req.xml.sig -binary -signer zapret-info.pem -outform PEM
На выходе получаем подписанный криптоключом файл req.xml.sig
Качаем скрипт для работы с реестром. Вот тут - http://forum.nag.ru/forum/index.php?showtopic=79836&st=460&p=771480&#entry771480
Или тут, локально - zapret-info
Скрипт ломится на адрес API http://zapret-info.gov.ru и получает файл реестра.
Правим файл zapret_checker.py, меняем req.xml.p7s на req.xml.sig
Ставим pip:
apt-get install python-module-pip
Ставим эгг suds:
pip install suds
Запускаем скрипт:
python zapret_checker.py
Видим что-то вроде
Got code блаблаблатутпишетсякодприсвоенныйзапросу
Trying to get result...
Not ready yet.
Сообщение "Not ready yet" будет повторяться до тех пор пока не будет получен файл списка.
Через время видим месседж "Got it!" и можем наблюдать файлы result.zip и dump.xml, извлеченный из result.zip.
...
PROFIT
P.S.: Про парсинг файла напишу попозже.
UPD: Парсер - тут
UPD: Роскоцензура поменяла адрес выгрузки, подробнее - в этом посте. Надо поменять в скрипте адрес, больше ничего не меняется.