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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline rapahnder  
#1 Оставлено : 6 октября 2017 г. 17:06:09(UTC)
rapahnder

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

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

Пытаюсь подписать запрос для СМЭВ

не могу понять что не так в итоге ...


Код:
 class sign{
 	public $path = '/home/smev/';
 	public $file;
 	function __construct($data)
 	{
 		$file = rand(0,123).'.txt';
        //$data = iconv('utf-8','windows-1251',$data);
 		file_put_contents($this->path.$file, $data);
 		$this->file = $this->path.$file;
 	}
 	function hash()
 	{
 		exec("cryptcp  -hash  ".$this->file );
 		$hesh = file_get_contents($this->file.".hsh") ;
 		echo "\n\n\n"."hesh:".$hesh."\n\n";
 		return  base64_encode( $hesh );
 	}
 	function sig()
 	{	
 		
 		exec("csptest -keyset -expcert /home/smev/test.cer -sign GOST -in ".$this->file." -out ".$this->file.".sig -container RaUser-SMEV   -export tmp_public.key -keytype exchange -password '1'");

                $sig = file_get_contents($this->file.".sig");
 		echo "\n\n\n"."sig:".$sig."\n".strrev($sig)."\n\n";
 		return base64_encode( strrev($sig) );
 	}
 }





//


$xml = '<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:m0="http://mks.esia.rstyle.ru/" xmlns:smev="http://smev.gosuslugi.ru/rev120315"><soap:Header><wsse:Security soap:actor="http://smev.gosuslugi.ru/actors/smev"><ds:Signature><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/><ds:Reference URI="#body"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/><ds:DigestValue></ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue></ds:SignatureValue><ds:KeyInfo><wsse:SecurityTokenReference><wsse:Reference URI="#CertId" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/></wsse:SecurityTokenReference></ds:KeyInfo></ds:Signature><wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="CertId">
X509v3
</wsse:BinarySecurityToken></wsse:Security></soap:Header><soap:Body wsu:Id="body"><m0:Verification>
<smev:Message>
<smev:Sender>
<smev:Code>XXXXXX</smev:Code>
<smev:Name>XXXXX </smev:Name>
</smev:Sender>
<smev:Recipient>
<smev:Code>ISIA01001</smev:Code>
<smev:Name>Electronic system identification and authentication</smev:Name>
</smev:Recipient>
<smev:Originator>
<smev:Code>XXXXXX </smev:Code>
<smev:Name>XXXXX</smev:Name>
</smev:Originator>
<smev:ServiceName>ISIA01001</smev:ServiceName>
<smev:TypeCode>GSRV</smev:TypeCode>
<smev:Status>REQUEST</smev:Status>
<smev:Date>2017-10-02T15:15:17+03:00</smev:Date>
<smev:ExchangeType>2</smev:ExchangeType>
</smev:Message>
<smev:MessageData>
<smev:AppData>
<m0:passportSeries>XXXXXXXXX </m0:passportSeries>
<m0:passportNumber>XXXXXXXXX </m0:passportNumber>
<m0:firstname> XXXXXXXXX </m0:firstname>
<m0:lastname> XXXXXXXXX </m0:lastname>
<m0:inn>XXXXXXXXX</m0:inn>
</smev:AppData>
</smev:MessageData>
</m0:Verification></soap:Body></soap:Envelope>
';

$dom = new DOMDocument('1.0');
$dom->loadXML($xml);

$Body = $dom->getElementsByTagName('Body')->item(0)->C14N();

$sig = New sign($Body);

$dom->getElementsByTagName('DigestValue')->item(0)->nodeValue = $sig->hash();

$SignedInfo = $dom->getElementsByTagName('SignedInfo')->item(0)->C14N();

$sig = New sign($SignedInfo);

$dom->getElementsByTagName('SignatureValue')->item(0)->nodeValue = $sig->sig(); 

$datasend = html_entity_decode($dom->C14N());

echo $datasend;


Получаю ответ Неверная ЭП сообщения
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.