Статус: Участник
Группы: Участники
Зарегистрирован: 20.10.2014(UTC) Сообщений: 16  Откуда: Москва Сказал(а) «Спасибо»: 3 раз
|
Здравствуйте! Отправляю xml и получаю сообшение об ошибке ЭП. Я даже не знаю где теперь искать ошибку. Возможно подскажите. Пишу на php. Хэш DigestValue: Цитата: /opt/cprocsp/bin/amd64/cryptcp -hash -dir /tmp/ -provtype 75 /tmp/some.txt CryptCP 3.41 (c) "Crypto-Pro", 2002-2013. Command prompt Utility for file signature and encryption. Hash algorithm: GOST R 34.11-94 Folder '/tmp/': /tmp/f.txt... OK. [ReturnCode: 0]
Подпись SignatureValue: Цитата: /opt/cprocsp/bin/amd64/csptestf -keyset -sign GOST -in /tmp/f.txt -out /tmp/f2.txt.sig -container Interaktiv -keytype exchange CSP (Type:75) v3.6.5365 KC1 Release Ver:3.6.7777 OS:Linux CPU:AMD64 FastCode:READY:SSSE3. AcquireContext: OK. HCRYPTPROV: 28439587 GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2001 KC1 CSP Container name: "Interaktiv" Exchange key is available. HCRYPTKEY: 0x1b4d663 Hash object created with alg: GOST 0x801E The data buffer has been hashed. Signature length 64 found. Signature was done. Output file (/tmp/f2.txt.sig) has been saved Signature saved into file /tmp/f2.txt.sig
Keys in container: exchange key Total: [ErrorCode: 0x00000000]
// Парсер xml Код:function parser ($xml) {
$sign = new sign(); // класс вызова подписей
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->loadXML($xml);
$Body = $dom->getElementsByTagName('Body')->item(0)->C14N();
$dom->getElementsByTagName('DigestValue')->item(0)->nodeValue = $sign->fileHash($Body); // ХЭШ. Считываю из файла и сохраняю в b64
$SignedInfo = $dom->getElementsByTagName('SignedInfo')->item(0)->C14N();
$dom->getElementsByTagName('SignatureValue')->item(0)->nodeValue = $sign->fileSing($SignedInfo); // ПОДПИСАНИЕ. Считываю байткод из файла, переворачиваю строку и оборачиваю в b64
return $dom->saveXML();
}
Детали по SignatureValue: Сформированную подпись КриптоПРО CSP переворачиваем и заворачиваем в base64: Код:base64_encode(strrev($sign));
Body C14N для расчета хэша: Код:<S:Body xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-20"><ns5:getTaskTypes xmlns="http://smev.gosuslugi.ru/rev111111" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" xmlns:ns3="http://baseTypes.border.webservices.kernel.sx.fms.ru" xmlns:ns4="http://www.w3.org/2004/08/xop/include" xmlns:ns5="http://v2_4_3.incomingRequests.webservices.kernel.sx.fms.ru"><Message><Sender><Code>FMS001001</Code><Name>ФМС России</Name></Sender><Recipient><Code>FMS001001</Code><Name>ФМС России</Name></Recipient><Originator><Code>FMS001001</Code><Name>ФМС России</Name></Originator><TypeCode>GSRV</TypeCode><Status>REQUEST</Status><Date>2013-08-26T16:29:53.304+04:00</Date><ExchangeType>3</ExchangeType><ServiceCode>10000000611</ServiceCode><CaseNumber>oWsI1lJE</CaseNumber><TestMsg>FMS control example</TestMsg></Message><MessageData><AppData><ns3:user><ns3:organization>10000001022</ns3:organization><ns3:person><ns3:id>4713967</ns3:id><ns3:firstName>Тест</ns3:firstName><ns3:secondName>Тестович</ns3:secondName><ns3:lastName>Тестов</ns3:lastName></ns3:person></ns3:user></AppData></MessageData></ns5:getTaskTypes></S:Body>
SignedInfo C14N для подписания: Код:<ds:SignedInfo xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:CanonicalizationMethod><ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"></ds:SignatureMethod><ds:Reference URI="#id-20"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"></ds:DigestMethod><ds:DigestValue>g7eF+/QXnT8eOEUQY1vLvtidJI2r/gnLJAjZOYo0UDY=</ds:DigestValue></ds:Reference></ds:SignedInfo>
Итого: Код:<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
S:actor="http://smev.gosuslugi.ru/actors/smev">
<wsse:BinarySecurityToken
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
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-FCBC7CBD76712097E1137752019331328">
SomeX509
</wsse:BinarySecurityToken>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature-19">
<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="#id-20">
<ds:Transforms>
<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>g7eF+/QXnT8eOEUQY1vLvtidJI2r/gnLJAjZOYo0UDY=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
Ry8vRPCVdG5eeXH0TPJiHwd3uVL8bh4FJIC4bWhIvEfiunl4eioyiehjT8TVgrwuLbJAJGbBEVdUG3vnf2IX6A==
</ds:SignatureValue>
<ds:KeyInfo Id="KeyId-FCBC7CBD76712097E1137752019331329">
<wsse:SecurityTokenReference
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
wsu:Id="STRId-FCBC7CBD76712097E1137752019331330">
<wsse:Reference URI="#CertId-FCBC7CBD76712097E1137752019331328"
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:Security>
</S:Header>
<S:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
wsu:Id="id-20">
<ns5:getTaskTypes xmlns="http://smev.gosuslugi.ru/rev111111" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#"
xmlns:ns3="http://baseTypes.border.webservices.kernel.sx.fms.ru"
xmlns:ns4="http://www.w3.org/2004/08/xop/include"
xmlns:ns5="http://v2_4_3.incomingRequests.webservices.kernel.sx.fms.ru">
<Message>
<Sender><Code>FMS001001</Code>
<Name>ФМС России</Name>
</Sender>
<Recipient><Code>FMS001001</Code>
<Name>ФМС России</Name>
</Recipient>
<Originator><Code>FMS001001</Code>
<Name>ФМС России</Name>
</Originator>
<TypeCode>GSRV</TypeCode>
<Status>REQUEST</Status>
<Date>2013-08-26T16:29:53.304+04:00</Date>
<ExchangeType>3</ExchangeType>
<ServiceCode>10000000611</ServiceCode>
<CaseNumber>oWsI1lJE</CaseNumber>
<TestMsg>FMS control example</TestMsg>
</Message>
<MessageData>
<AppData>
<ns3:user>
<ns3:organization>10000001022</ns3:organization>
<ns3:person>
<ns3:id>4713967</ns3:id>
<ns3:firstName>Тест</ns3:firstName>
<ns3:secondName>Тестович</ns3:secondName>
<ns3:lastName>Тестов</ns3:lastName>
</ns3:person>
</ns3:user>
</AppData>
</MessageData>
</ns5:getTaskTypes>
</S:Body>
</S:Envelope>
Отредактировано пользователем 31 октября 2014 г. 11:05:42(UTC)
| Причина: Не указана
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close