Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Наши способы организации безопасного удалённого доступа к рабочим местам и корпоративным ресурсам
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline ibz  
#1 Оставлено : 17 сентября 2019 г. 16:00:09(UTC)
ibz

Статус: Новичок

Группы: Участники
Зарегистрирован: 06.08.2019(UTC)
Сообщений: 8
Российская Федерация

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 3 раз в 2 постах
Кто знает, помогите пожалуйста.
Итак, электронные больничные. Пытаюсь скрестить с нашей МИС (почти самописной) на PHP. Сервер на centos

прошел практически все этапы сложного квеста - установил всяческие утилиты cryptopro, собрал модуль phpcades, установил сертификаты
научился каноникализации (по крайней мере понял что это), научился правильно расчитывать хеш, научился правильно рассчитывать подпись, (даже понял что ее надо отреверсивить побайтно)- если кстати у кого-то вопросы - готов научить, остановился на пункте с шифрованием.
хитростью и ваершарком удалось получить пример такого шифрованного xml - чтобы понимать куда, в каком направлении двигаться. какие примерно данные подготовить
Для того чтобы отправить шифрованный запрос (насколько я понял) надо знать и подготовить три параметра
1 - публичный сертификат пользователя (с помощь которого фсс зашифрует ответ и отдаст его мне, а я в свою очередь смогу расшифровать его своим секретным ключом)
2 - случайный сессионный ключ
3 - само уже зашифрованное сообщение

с 1 параметром никаких проблем, непонятки с 2 и 3.
просмотрев код phpcades - придумал зашифровать запрос с помощью CPEnvelopedData указав в качестве сертификата публичный сертификат ФСС
Цитата:


// $fss_cer = "/srv/FSS_PROD_CERT_2019_34.10-2012.cer";
$fss_cer = "/srv/FSS_TEST_CERT_2019_34.10-2012.cer";

$content = base64_encode(file_get_contents("/srv/req.xml")); /* здесь у нас правильный сформированый запрос,
успешно протестированый на https://docs-test.fss.ru...ileOperationsLnPort?WSDL - т.е. без шифрования */

$cert = new CPCertificate();

$cert->Import(file_get_contents($fss_cer));
print "get_SerialNumber : ".$cert->get_SerialNumber()."\n";
print "get_Thumbprint : ".$cert->get_Thumbprint()."\n";
print "get_SubjectName : ".$cert->get_SubjectName()."\n";
print "get_IssuerName : ".$cert->get_IssuerName()."\n";
print "get_Version : ".$cert->get_Version()."\n";
print "get_ValidToDate : ".$cert->get_ValidToDate()."\n";
print "get_ValidFromDate : ".$cert->get_ValidFromDate()."\n";

$obj = new CPEnvelopedData();
$obj->set_Content($content);
$obj->get_Recipients()->Add($cert);
$v = $obj->Encrypt(BASE64_TO_BINARY);

file_put_contents('test_asn1_struc.pem',wordwrap( base64_encode($v),64,"\n",TRUE)); //эту структуру я и загнал в https://lapo.it/asn1js/
}
catch (Exception $e)
{
printf($e->getMessage());
}




на выходе получил ASN.1 структуру
https://lapo.it/asn1js/#...GMMUL1IG0E+188sZkyMdQ7Y=

заметил что структура сессионного ключа, которую я получил хитростью и ваершарком
https://lapo.it/asn1js/#...vdXk8kqexWBAgvkcnUStx2pg

очень похожая есть, в том, что я получил с помощью CPEnvelopedData
а в конце - как раз все очень похоже на сами зашифрованные данные.

Подскажите пожалуйста, прав ли я, или ошибаюсь, ибо заполнив все эти параметры и отправив полученный xml курлом на https://docs-test.fss.ru...ileOperationsLnPort?WSDL
я получаю 500-ю ошибку

Код:
* About to connect() to docs-test.fss.ru port 443 (#0)
*   Trying 193.148.44.188... connected
* Connected to docs-test.fss.ru (193.148.44.188) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* SSL connection using TLS_RSA_WITH_RC4_128_MD5
* Server certificate:
*       subject: CN=*.fss.ru,OU=job,O=The Fund of Social Insurance of the Russian Federation,L=Moscow,C=RU
*       start date: Aug 14 00:00:00 2018 GMT
*       expire date: Aug 13 12:00:00 2020 GMT
*       common name: *.fss.ru
*       issuer: CN=Thawte RSA CA 2018,OU=www.digicert.com,O=DigiCert Inc,C=US
> POST /WSLnCryptoV11/FileOperationsLnPort?WSDL HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: docs-test.fss.ru
> Accept: */*
> Content-Type: text/xml
> Content-Length: 25
>
< HTTP/1.1 500 Internal Server Error
< Date: Mon, 16 Sep 2019 10:33:48 GMT
< Server: GlassFish Server Open Source Edition  4.1.2
< X-Powered-By: Servlet/3.1 JSP/2.3 (GlassFish Server Open Source Edition  4.1.2  Java/Oracle Corporation/1.8)
< Content-Type: text/xml; charset=utf-8
< Connection: close
< Transfer-Encoding: chunked
<
<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope"><faultcode>S:Client</faultcode><faultstring>Couldn't create SOAP message due to exception: XML reader error: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '/' (code 47) in prolog; expected '&lt;'
* Closing connection #0
 at [row,col {unknown-source}]: [1,1]</faultstring></S:Fault></S:Body></S:Envelope>



Offline two_oceans  
#2 Оставлено : 18 сентября 2019 г. 8:32:19(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,058
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 69 раз
Поблагодарили: 240 раз в 226 постах
Автор: ibz Перейти к цитате
Для того чтобы отправить шифрованный запрос (насколько я понял) надо знать и подготовить три параметра
1 - публичный сертификат пользователя (с помощь которого фсс зашифрует ответ и отдаст его мне, а я в свою очередь смогу расшифровать его своим секретным ключом)
2 - случайный сессионный ключ
3 - само уже зашифрованное сообщение

с 1 параметром никаких проблем, непонятки с 2 и 3.
просмотрев код phpcades - придумал зашифровать запрос с помощью CPEnvelopedData указав в качестве сертификата публичный сертификат ФСС ... на выходе получил ASN.1 структуру
Да, в принципе логика правильная. По идее на шифрование подаете сертификат ФСС, а в собранном зашифрованном xml указываете свой сертификат, на который в случае успеха ФСС зашифрует ответ. Соответственно Вы сможете расшифровать ответ закрытым ключом того сертификата который указали. Детали могут отличаться, потому что у Вас самый простой вариант, а в соседней теме пришлось еще пару свойств объекту поставить. И объект вроде был выдающий готовый XML а не asn1 данные.
Автор: ibz Перейти к цитате
https://lapo.it/asn1js/#MIJE3QYJKoZIhvcNAQcDoIJEzjCCRMoCAQAxggIR...

заметил что структура сессионного ключа, которую я получил хитростью и ваершарком
https://lapo.it/asn1js/#...vdXk8kqexWBAgvkcnUStx2pg

очень похожая есть, в том, что я получил с помощью CPEnvelopedData
а в конце - как раз все очень похоже на сами зашифрованные данные.
Это не смотрел, позже посмотрю. Сдается мне что "сходство" притянуто за уши.
Автор: ibz Перейти к цитате
Подскажите пожалуйста, прав ли я, или ошибаюсь, ибо заполнив все эти параметры и отправив полученный xml курлом на https://docs-test.fss.ru...ileOperationsLnPort?WSDL
я получаю 500-ю ошибку

Код:
<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope"><faultcode>S:Client</faultcode><faultstring>Couldn't create SOAP message due to exception: XML reader error: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '/' (code 47) in prolog; expected '&lt;'
* Closing connection #0
 at [row,col {unknown-source}]: [1,1]</faultstring></S:Fault></S:Body></S:Envelope>
так, а где сам зашифрованный xml отправленный curl и исходный req.xml? Понимаю, что расшифровать не смогу, раз зашифровано на сертификат ФСС, но могут быть проблемы в самой сборке Xml, "полученного хитростью" и лучше бы увидеть что именно отправляется курлом на тестовый сервер. Ошибка-то вернулась "Couldn't create SOAP message due to exception: XML reader error", то есть в структуре отправленного или расшифрованного xml что-то не так. поэтому логичнее просмотреть xml чем asn1 данные. А в идеале использовать объект выдающий готовый XML и не изобретать сборку XML снова (кроме возможно замены сертификата).

Отредактировано пользователем 18 сентября 2019 г. 8:41:49(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил two_oceans за этот пост.
ibz оставлено 18.09.2019(UTC)
Offline ibz  
#3 Оставлено : 18 сентября 2019 г. 10:55:15(UTC)
ibz

Статус: Новичок

Группы: Участники
Зарегистрирован: 06.08.2019(UTC)
Сообщений: 8
Российская Федерация

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 3 раз в 2 постах
Исходный req.xml - прикладываю req.xml (7kb) загружен 13 раз(а). Когда с ним обращаешся на фсс-ный сервис без шифрования - он без проблем возвращает ответ с новым номером ЭЛН
То что удалось получить ваершарком из их программы "ФСС АРМ ЛПУ" (просто поставил адрес сервиса как http:// и подслушал что он отправляет) - real_fss_prod_req.xml (14kb) загружен 8 раз(а)..
То что в итоге собрал я с помощью CPEnvelopedData - encr_req.xml (28kb) загружен 6 раз(а).

в предыдущем сообщении - я понял почему была именно такая ошибка с курлом
отправлял запрос
Код:
curl -v -X POST \
        -H "Content-Type: text/xml" \
        --data-binary "/srv/encr_req.xml" \
        "https://docs-test.fss.ru/WSLnCryptoV11/FileOperationsLnPort?WSDL"

- забыл совсем поставить @ перед именем файла, поэтому и Content-Length: 25 всего

сейчас отправляю уже правильно, и ответ получаю уже другой, но все равно не тот что хотелось бы :)

Код:
[root@server]# curl -v -X POST \
        -H "Content-Type: text/xml" \
        --data-binary "@/srv/encr_req.xml" \
        "https://docs-test.fss.ru/WSLnCryptoV11/FileOperationsLnPort?WSDL"
* About to connect() to docs-test.fss.ru port 443 (#0)
*   Trying 193.148.44.188... connected
* Connected to docs-test.fss.ru (193.148.44.188) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* SSL connection using TLS_RSA_WITH_RC4_128_MD5
* Server certificate:
*       subject: CN=*.fss.ru,OU=job,O=The Fund of Social Insurance of the Russian Federation,L=Moscow,C=RU
*       start date: Aug 14 00:00:00 2018 GMT
*       expire date: Aug 13 12:00:00 2020 GMT
*       common name: *.fss.ru
*       issuer: CN=Thawte RSA CA 2018,OU=www.digicert.com,O=DigiCert Inc,C=US
> POST /WSLnCryptoV11/FileOperationsLnPort?WSDL HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: docs-test.fss.ru
> Accept: */*
> Content-Type: text/xml
> Content-Length: 27966
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
< HTTP/1.1 500 Internal Server Error
< Date: Wed, 18 Sep 2019 07:22:53 GMT
< Server: GlassFish Server Open Source Edition  4.1.2
< X-Powered-By: Servlet/3.1 JSP/2.3 (GlassFish Server Open Source Edition  4.1.2  Java/Oracle Corporation/1.8)
< Content-Type: text/xml; charset=utf-8
< Content-Length: 693
< Connection: close
<
* Closing connection #0
<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope"><faultcode>S:Server</faultcode><faultstring>ru.ibs.cryptoprto.jcp.wrapper.eln.ws.client.generated.CryptoException_Exception: Не удалось расшифровать сообщение. Возможно сообщение зашифровано на ключе отличном от ключа уполномоченного лица ФСС. Проверьте правильность и актуальность ключа уполномоченного лица ФСС.</faultstring></S:Fault></S:Body></S:Envelope>



меня смущает то, что в запросе который я получил с помощью ваершарка - длина шифрованных данных гораздо меньше, чем то что я получил с помошью CPEnvelopedData.
Но я пока не нашел как с помощью phpcades и зашифровать данные сертификатом, и при этом еще получить тот пресловутый сессионный ключ...
Offline two_oceans  
#4 Оставлено : 18 сентября 2019 г. 13:38:57(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,058
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 69 раз
Поблагодарили: 240 раз в 226 постах
Да, размер конечно смущает. Насколько я понимаю, сессионный ключ должен быть симметричным, то есть не менять размер данных. Перед шифрованием к данным может быть применен паддинг от 0 до 7 байт. К самим данным после шифрования, но перед кодированием нужно добавить синхропосылку (8 байт), то есть декодированный из base64 размер шифроданных должен быть на 8-15 байт (паддинг + синхропосылка) длиннее чем шифруемый файл. Что примерно и наблюдаем в real_fss_prod_req.xml (8396 байт в base64, 6296 байт декодированное; req.xml 6384 байт, точно не сошлось видимо запросы были разные). В собранном файле encr_req.xml размер шифроданных больше (22700 байт в base64, 17024 байт декодированное), откула взялось еще 10-11 кб непонятно.

Если сравнить с asn структурой из сообщения 1, то там общий размер 17633, размер шифроданных 17024. Похоже синхропосылку 8 байт не добавили в начало данных, просто выдрали шифроданные и применили base64, начало файла будет испорчено и "артефакты" каждые 1024 байт. В asn также указаны параметры шифрования верба-о (хотя в данных ключа вроде правильные TK 26 Z), это лучше перепроверить. asn ключа на вид похоже на верное.
thanks 1 пользователь поблагодарил two_oceans за этот пост.
ibz оставлено 18.09.2019(UTC)
Offline two_oceans  
#5 Оставлено : 19 сентября 2019 г. 6:14:46(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,058
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 69 раз
Поблагодарили: 240 раз в 226 постах
По поводу размера: скорее всего надо указать правильные кодировки входа и выхода. у объекта CPEnvelopedData есть дополнительное свойство ContentEncoding, в котором надо указать входную кодировку base64 (насколько помню значение 1) раз передаете base64, по умолчанию считается на входе строка без base64. Кроме того, есть примечание что на выходе всегда base64, так что BASE64_TO_BINARY в Encrypt похоже бесполезна и тогда base64_encode($v) излишняя.

Еще нужно обратить внимание, что считывается из файла - в идеале надо считывать в двоичном режиме чтобы кодировку не исказило. Так сразу не вспомню как читает file_get_contents, хотя бы по размеру проверьте что считалось. Вот что в примерах PHP ("rb" под Windows):

Отредактировано пользователем 19 сентября 2019 г. 6:45:04(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил two_oceans за этот пост.
ibz оставлено 19.09.2019(UTC)
Offline ibz  
#6 Оставлено : 19 сентября 2019 г. 16:07:47(UTC)
ibz

Статус: Новичок

Группы: Участники
Зарегистрирован: 06.08.2019(UTC)
Сообщений: 8
Российская Федерация

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 3 раз в 2 постах
Цитата:
По поводу размера: скорее всего надо указать правильные кодировки входа и выхода. у объекта CPEnvelopedData есть дополнительное свойство ContentEncoding, в котором надо указать входную кодировку base64 (насколько помню значение 1)


да, все верно, после создания обьекта и перед загрузкой данных, надо указать что данные в base64
Код:

    $obj = new CPEnvelopedData();
    $v = $obj->set_ContentEncoding(BASE64_TO_BINARY);
    $v = $obj->set_Content($content);

Теперь размер шифрованных данных получается меньше, и больше похож на правду
ASN1 struct

Однако пока победить не могу.
С помощью ваершарка сделал дамп одного и того же запроса (на получение нового номера), из их программы АРМ ФСС ЛПУ, с шифрованием enx.xml (14kb) загружен 2 раз(а)., и без шифрования clear.xml (7kb) загружен 3 раз(а).
заметил что без шифрования запрос получается размером 6318 байт (как и мой кстати тестовый), а в файле с шифрованием размер шифрованных данных 6296 байт.
Т.е. если учитывать что там добавляется 8 байт вектора инициализации, плюс выравнивание от 0 до 7 байт - значит размер нешифрованного запроса должен быть длиной от 6281 до 6288 байт.
Может там надо еще убирать "<?xml version='1.1' encoding='UTF-8'?>" ?

Offline two_oceans  
#7 Оставлено : 23 сентября 2019 г. 6:53:15(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,058
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 69 раз
Поблагодарили: 240 раз в 226 постах
Автор: ibz Перейти к цитате
Теперь размер шифрованных данных получается меньше, и больше похож на правду
ASN1 struct

Однако пока победить не могу.
С помощью ваершарка сделал дамп одного и того же запроса (на получение нового номера), из их программы АРМ ФСС ЛПУ, с шифрованием enx.xml (14kb) загружен 2 раз(а)., и без шифрования clear.xml (7kb) загружен 3 раз(а).
заметил что без шифрования запрос получается размером 6318 байт (как и мой кстати тестовый), а в файле с шифрованием размер шифрованных данных 6296 байт.
Т.е. если учитывать что там добавляется 8 байт вектора инициализации, плюс выравнивание от 0 до 7 байт - значит размер нешифрованного запроса должен быть длиной от 6281 до 6288 байт.
Может там надо еще убирать "<?xml version='1.1' encoding='UTF-8'?>" ?
По enx.xml: если выравнивание используется, как правило размер выравнивания указан в последнем байте выравнивания (он же последний байт при декодировании из base64), в данном случае последний байт равен 2, то есть длина шифрованных данных с выравниванием 6296 - 8 (вектор инициализации) - 2 (выравнивание) = 6286 (длина нешифрованных данных). Длина <?xml.. ?> 38, 6318 минус 38 было бы 6280, не сходится. Собственно, по форме нешифрованного запроса тоже есть что сказать (например, у SignedInfo и Signature отличаются префиксы что дает избыточную длину запроса; Signature расположена раньше чем BinarySecurityToken, на который ссылается и т.д. мелкие некритичные нарушения), но если сервис выдает именно ошибку расшифровки, то пока что проблема не в исходных данных, а в том как они зашифрованы. Предлагаю решать по мере поступления и пока разобраться с шифрованием (ведь соединение на нешифрованный сервис прошло нормально). Конкретно интересует какое выравнивание и какие параметры гост-89 использованы.

В структуре не совсем понятно - был файл 6318, стал последний элемент структуры 6320 (в структуре вектор инициализации отдельно) разница 2, но последний байт равен 8, то есть предположительно использован какой-то другой паддинг не вписывающий размер выравнивания в последний байт. С учетом того, что в норме используется выравнивание, которое заполняет байты (кроме последнего) случайными числами, возможно достаточно будет вписать разницу 2 в последний байт из 6320. На base64 соответственно передавать склейку из 8 байт вектора инициализации (в начале передаваемых данных, в структуре это скорее всего ближайшее 8 байтное число 2C8979CA2903A47C)+6320 байт из структуры (с последним байтом равным разнице размера шифрованного и нешифрованного 6320-6318=2).

И останется собственно вопрос почему в структуре стоит 1.2.643.2.2.31.1 (параметры шифрования верба-О). Предположу, что надо либо указать правильные для конкретного объекта CPEnvelopedData либо исправить общесистемные. На всякий случай посмотрите, что стоит в панели управления КриптоПро закладка "Алгоритмы" для провайдера гост-2012 256 бит в строке "Параметры алгоритма шифрования". У меня стоит "гост 28147-89, параметры шифрования TK 26 Z".

По умолчанию изменение оидов параметров заблокировано. Для изменения нужно 1) разблокировать оиды в реестре (подробнее было где-то в соседних темах) и 2) запустить от администратора. Либо раз уж полезли в реестр, просто стереть сохраненные параметры оидов, тогда сбросится на параметры по умолчанию.
thanks 1 пользователь поблагодарил two_oceans за этот пост.
ibz оставлено 11.10.2019(UTC)
Offline ibz  
#8 Оставлено : 11 октября 2019 г. 8:47:17(UTC)
ibz

Статус: Новичок

Группы: Участники
Зарегистрирован: 06.08.2019(UTC)
Сообщений: 8
Российская Федерация

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 3 раз в 2 постах
Автор: two_oceans Перейти к цитате
И останется собственно вопрос почему в структуре стоит 1.2.643.2.2.31.1 (параметры шифрования верба-О). Предположу, что надо либо указать правильные для конкретного объекта CPEnvelopedData либо исправить общесистемные. На всякий случай посмотрите, что стоит в панели управления КриптоПро закладка "Алгоритмы" для провайдера гост-2012 256 бит в строке "Параметры алгоритма шифрования". У меня стоит "гост 28147-89, параметры шифрования TK 26 Z".

По умолчанию изменение оидов параметров заблокировано. Для изменения нужно 1) разблокировать оиды в реестре (подробнее было где-то в соседних темах) и 2) запустить от администратора. Либо раз уж полезли в реестр, просто стереть сохраненные параметры оидов, тогда сбросится на параметры по умолчанию.


Я делаю на линуксе и пхп.
Вобщем в итоге я конечно победил этот фсс, но средствами только лишь phpcades сделать это не удалось - обьект CPEnvelopedData шифрует данные сразу на основе нашего приватного ключа, и публичного ключа получателя, а для ФСС при шифровании используется не сразу наш приватный, а сначала дополнительно генерируется сессионный ключ, и именно на нем и публичном сертификате фсс шифруется все. В методах phpcades функционала для генерации этого сессионного ключа я найти так и не смог, поэтому решил просто написать две отдельные консольные утилиты для шифрования и дешифрования xml файлов.
Написал на С, на основе примеров /opt/cprocsp/src/samples/CSP/EncryptFile и /opt/cprocsp/src/samples/CSP/DecryptFile где уже смог использовать низкоуровневые вызовы криптопро, которых видимо нет в phpcades. Т.е. теперь с помощь php - я готовлю xml файл (вычисляю там хеш, генерирую подпись) - подаю этот xml (кстати действительно без "<?xml version='1.1' encoding='UTF-8'?>" ) - шифровальная утилита выдает мне готовый зашифрованный хмл, получаю ответ от ФСС - скармливаю его дешифровальной утилите - получаю в ответ расшифрованный xml с ответом, опять с помощью уже php проверяю хеш и проверяю подпись
Offline ibz  
#9 Оставлено : 11 октября 2019 г. 9:15:57(UTC)
ibz

Статус: Новичок

Группы: Участники
Зарегистрирован: 06.08.2019(UTC)
Сообщений: 8
Российская Федерация

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 3 раз в 2 постах
source.zip (14kb) загружен 31 раз(а).
прикладываю исходники этих утилит, вдруг кому то полезно будет
распаковать в /opt/cprocsp/src/samples/CSP/
/opt/cprocsp/src/samples/CSP/Makefile.unix - будет заменен, но там на самом деле просто в конце добавляются для компиляции каталоги EncryptFSS и DecryptFSS
compile.sh - скрипт который запустит компиляцию
у меня используется гост 2012, 256 бит
thanks 2 пользователей поблагодарили ibz за этот пост.
yvatest оставлено 19.12.2019(UTC), olgaolga оставлено 21.03.2020(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.