Статус: Новичок
Группы: Участники
Зарегистрирован: 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;
Получаю ответ Неверная ЭП сообщения
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close