Статус: Участник
Группы: Участники
Зарегистрирован: 12.02.2016(UTC) Сообщений: 19 Откуда: самара Сказал(а) «Спасибо»: 2 раз Поблагодарили: 1 раз в 1 постах
|
Доброе время суток - необходимо подписать xml файл хитрым способом вот полный листинг того что делаю Код:
<?php
//Вспомогательные функции предварительной инициализации
function SetupStore($location, $name, $mode)
{
$store = new CPStore();
$store->Open($location, $name, $mode);
return $store;
}
function SetupCertificates($location, $name, $mode)
{
$store = SetupStore($location, $name, $mode);
//die ( "loc: ".$location." | ".$name." | ".$mode);
$certs = $store->get_Certificates();
return $certs;
}
function SetupCertificate($location, $name, $mode,
$find_type, $query, $valid_only,
$number)
{
$certs = SetupCertificates($location, $name, $mode);
if($find_type != NULL)
{
$certs = $certs->Find($find_type, $query, $valid_only);
return $certs->Item($number);
}
else
{
$cert = $certs->Item($number);
return $cert;
}
}
$cert = SetupCertificate(CURRENT_USER_STORE, "My", STORE_OPEN_READ_ONLY,
CERTIFICATE_FIND_SUBJECT_NAME, "Test sertificate", 0,
1);
$signdata = <<<XML
<ns:SenderProvidedRequestData Id="SIGNED_BY_CONSUMER" xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns:ns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1"> <ns:MessageID>72db683d-c7e4-11e4-b8aa-d4c9eff07b77</ns:MessageID><ns2:MessagePrimaryContent><ns1:BreachRequest xmlns:ns1="urn://x-artefacts-gibdd-gov-ru/breach/root-121294027/1.0.0" xmlns:ns2="urn://x-artefacts-gibdd-gov-ru/breach/commons-121294027/1.0.0" xmlns:ns3="urn://x-artefacts-smev-gov-ru/supplementary/commons/1.0.1" Id="PERSONAL_SIGNATURE"> <ns1:RequestedInformation> <ns3:FamilyName>Петров</ns3:FamilyName> <ns3:FirstName>Петр</ns3:FirstName> <ns3:Patronymic>Петрович</ns3:Patronymic> <ns2:RegPointNum>У160УК34</ns2:RegPointNum> </ns1:RequestedInformation> <ns1:Governance> <ns2:Name>ГИБДД РФ</ns2:Name> <ns2:Code>GIBDD</ns2:Code> <ns2:OfficialPerson> <ns3:FamilyName>Андреев</ns3:FamilyName> <ns3:FirstName>Андрей</ns3:FirstName> <ns3:Patronymic>Андреевич</ns3:Patronymic> </ns2:OfficialPerson> </ns1:Governance> </ns1:BreachRequest> </ns2:MessagePrimaryContent></ns:SenderProvidedRequestData>
XML;
$hashAlg = 100 ; //CADESCOM_HASH_ALGORITHM_CP_GOST_3411: 100,
$oHashedData = new CPHashedData;
$oHashedData->set_Algorithm($hashAlg);
$oHashedData->hash($signdata);
$sHashValue1= $oHashedData->get_Value();
$file = '/var/www/html/test.log';
$current = "test1\n"; // в лог пишется
file_put_contents($file, $current);
//все интересное начинается здесь
$rawSignature = new CPRawSignature();
$cert1 = substr($cert->export(0),0,-2); //метод неправильно экспортирует сертификат ( в конце какойто мусор приходится отрезать)
echo "d";
$gg= $rawSignature->SignHash ($oHashedData,$cert); //этот метод вызывает падение php и следом apache2
$current = "test2\n".$gg; //строка в лог уже не пишется
file_put_contents($file, $current);
die ("ff");
на экран ничего не выводится - браузер пишет либо "Соединение было сброшено" либо "ERR_EMPTY_RESPONSE" что впринципе одно и тоже в логах apache2 пишутся вот такие строчки Код:
apache2: /usr/include/boost/smart_ptr/shared_ptr.hpp:653: typename boost::detail::sp_member_access<T>::type boost::shared_ptr<T>::operator->() const [with T = CryptoPro::PKI::CAdES::CPPCadesRawSignatureObject; typename boost::detail::sp_member_access<T>::type = CryptoPro::PKI::CAdES::CPPCadesRawSignatureObject*]: Assertion `px != 0' failed.
apache2: /usr/include/boost/smart_ptr/shared_ptr.hpp:653: typename boost::detail::sp_member_access<T>::type boost::shared_ptr<T>::operator->() const [with T = CryptoPro::PKI::CAdES::CPPCadesRawSignatureObject; typename boost::detail::sp_member_access<T>::type = CryptoPro::PKI::CAdES::CPPCadesRawSignatureObject*]: Assertion `px != 0' failed.
[Mon Apr 10 08:58:10.547142 2017] [core:notice] [pid 13988] AH00052: child pid 13991 exit signal Aborted (6)
[Mon Apr 10 08:58:10.547249 2017] [core:notice] [pid 13988] AH00052: child pid 13992 exit signal Aborted (6)
прошу помощи с подписанием. заранее спасибо теперь о версиях Linux deb-krypto 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 GNU/Linux PHP Version => 5.6.24-0+deb8u1 далее незнаю что надо что не надо ||/ Имя Версия Архитектура Описание +++-=====================================================-===============================-===============================-=============================================================================================================== ii cprocsp-curl-64 4.0.0-4 amd64 CryptoPro Curl shared library and binaris. Build 9708. ii cprocsp-pki-cades 2.0.0-1 amd64 CryptoPro PKI ii cprocsp-pki-plugin 2.0.0-1 amd64 CryptoPro PKI php_CPCSP Version 0.1 Отредактировано пользователем 10 апреля 2017 г. 9:31:39(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
Да, в коде инициализации обьекта CPRawSignature есть ошибка. Вам нужно применить вот такой патч и пересобрать расширение. Цитата:Index: PHPCadesCPRawSignature.cpp =================================================================== --- PHPCadesCPRawSignature.cpp (revision 155173) +++ PHPCadesCPRawSignature.cpp (working copy) @@ -56,6 +56,7 @@ } zend_function_entry raw_sig_methods[] = { + PHP_ME(CPRawSignature, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) PHP_ME(CPRawSignature, VerifyHash, NULL, ZEND_ACC_PUBLIC) PHP_ME(CPRawSignature, SignHash, NULL, ZEND_ACC_PUBLIC){NULL, NULL, NULL}};
Спасибо за сообщение об ошибке. |
|
1 пользователь поблагодарил Анатолий Беляев за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 12.02.2016(UTC) Сообщений: 19 Откуда: самара Сказал(а) «Спасибо»: 2 раз Поблагодарили: 1 раз в 1 постах
|
благодарю за оперативный ответ - после применения фикса и пересборки все работает. Не смотрели почему при экспорте сертификата приходится отрезать 2 последних символа ? substr($cert->export(0),0,-2); Отредактировано пользователем 11 апреля 2017 г. 8:31:19(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
Там перевод строки стоит. Это расширение использует код от ЭЦП Browser plug-in, вроде раньше не было ни у кого с этим проблем. А в каком месте этот перевод строки вам мешает? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 12.02.2016(UTC) Сообщений: 19 Откуда: самара Сказал(а) «Спасибо»: 2 раз Поблагодарили: 1 раз в 1 постах
|
при формировании xml - делаю экспорт и получаю вот такое чудо на выходе
<ds:X509Certificate>MIIJ1DCCCYOgAwIBAgIKFnwxsQADAAAR6DAIBgYqhQMCAgMwggGGMR8wHQYJKoZI hvcNAQkBFhBydWNAc2FtcmVnaW9uLnJ1MUMwQQYDVQQJHjoEQwQ7AC4AIAQcBD4E OwQ+BDQEPgQzBDIEMARABDQENQQ5BEEEOgQwBE8ALAAgBDQALgAgADIAMQAwMVUw UwYDVQQLHkwEIwQ/BEAEMAQyBDsENQQ9BDgENQAgBDgEPQREBD4EQAQ8BDAERgQ4 BD4EPQQ9BD4EOQAgBDEENQQ3BD4EPwQwBEEEPQQ+BEEEQgQ4MRowGAYIKoUDA4ED AQESDDAwNjMxNTg1NjMyNTEYMBYGBSqFA2QBEg0xMDk2MzE1MDAzMDgwMR8wHQYD VQQKHhYEEwQaBCMAIAQhBB4AIAQgBCYEIwQfMRUwEwYDVQQHHgwEIQQwBDwEMARA BDAxMTAvBgNVBAgeKAA2ADMAIAQhBDAEPAQwBEAEQQQ6BDAETwAgBD4EMQQ7BDAE QQRCBEwxCzAJBgNVBAYTAlJVMRkwFwYDVQQDHhAAUgBVAEMAXwBTAE8AXwAyMB4X DTE2MDUyNTA1NDYwMFoXDTE3MDUyNTA1NTEwMFowggJwMRYwFAYFKoUDZAMSCzAw NzU4MDc2OTYwMRgwFgYFKoUDZAESDTEwMjYzMDA5NTk4NzExGjAYBggqhQMDgQMB ARIMMDA2MzE1ODAwMDAxMSAwHgYJKoZIhvcNAQkBFhFjaGVyZXBhbm92QGR5dS5z dTELMAkGA1UEBhMCUlUxMTAvBgNVBAgeKAA2ADMAIAQhBDAEPAQwBEAEQQQ6BDAE TwAgBD4EMQQ7BDAEQQRCBEwxFTATBgNVBAceDAQhBDAEPAQwBEAEMDFjMGEGA1UE Ch5aBBQENQQ/BDAEQARCBDAEPAQ1BD0EQgAgBEMEPwRABDAEMgQ7BDUEPQQ4BE8A IAQ4BDwEQwRJBDUEQQRCBDIEPgQ8ACAEMwAuBD4ALgAgBCEEMAQ8BDAEQAQwMR8w HQYDVQQLHhYEIARDBDoEPgQyBD4ENARBBEIEMgQ+MWMwYQYDVQQDHloEFAQ1BD8E MARABEIEMAQ8BDUEPQRCACAEQwQ/BEAEMAQyBDsENQQ9BDgETwAgBDgEPARDBEkE NQRBBEIEMgQ+BDwAIAQzAC4EPgAuACAEIQQwBDwEMARABDAxOTA3BgNVBAkeMARD BDsALgAgBBsETAQyBDAAIAQiBD4EOwRBBEIEPgQzBD4ALAAgBDQALgAgADIAMDE7 MDkGA1UEDB4yBCAEQwQ6BD4EMgQ+BDQEOARCBDUEOwRMACAENAQ1BD8EMARABEIE MAQ8BDUEPQRCBDAxJzAlBgNVBCoeHgQhBDUEQAQzBDUEOQAgBBgEMgQwBD0EPgQy BDgERzEbMBkGA1UEBB4SBCcENQRABDUEPwQwBD0EPgQyMGMwHAYGKoUDAgITMBIG ByqFAwICJAAGByqFAwICHgEDQwAEQOqXR4t5UB+Q+hDN6VCE2mQCccGQApX/QTR6 BF48ytmi4Om2ZFYip4zFjow9EBSD3g5VqhCtkQhTUzWIrwfOJaCjggThMIIE3TAO BgNVHQ8BAf8EBAMCBPAwGQYJKoZIhvcNAQkPBAwwCjAIBgYqhQMCAhUwSAYDVR0l BEEwPwYIKwYBBQUHAwQGBiqFA2RxAQYGKoUDZHECBgcqhQMCAiIGBggrBgEFBQcD AgYIKoUDBQEYAhMGBiqFA2QCATAdBgNVHQ4EFgQUID4qJ7Nd+DDtVsJvkngT2jVy U1IwggHHBgNVHSMEggG+MIIBuoAUAysSvkSnohVP2BBVFD73bFSDz8OhggGOpIIB ijCCAYYxHzAdBgkqhkiG9w0BCQEWEHJ1Y0BzYW1yZWdpb24ucnUxQzBBBgNVBAke OgRDBDsALgAgBBwEPgQ7BD4ENAQ+BDMEMgQwBEAENAQ1BDkEQQQ6BDAETwAsACAE NAAuACAAMgAxADAxVTBTBgNVBAseTAQjBD8EQAQwBDIEOwQ1BD0EOAQ1ACAEOAQ9 BEQEPgRABDwEMARGBDgEPgQ9BD0EPgQ5ACAEMQQ1BDcEPgQ/BDAEQQQ9BD4EQQRC BDgxGjAYBggqhQMDgQMBARIMMDA2MzE1ODU2MzI1MRgwFgYFKoUDZAESDTEwOTYz MTUwMDMwODAxHzAdBgNVBAoeFgQTBBoEIwAgBCEEHgAgBCAEJgQjBB8xFTATBgNV BAceDAQhBDAEPAQwBEAEMDExMC8GA1UECB4oADYAMwAgBCEEMAQ8BDAEQARBBDoE MARPACAEPgQxBDsEMARBBEIETDELMAkGA1UEBhMCUlUxGTAXBgNVBAMeEABSAFUA QwBfAFMATwBfADKCEADmbwXT1viNSGSXsqIT7gswcwYDVR0fBGwwajA2oDSgMoYw aHR0cDovL3J1Yy5zYW1yZWdpb24ucnUvcnVjc29fY3J5cHRvcHJvXzIwMTUuY3Js MDCgLqAshipodHRwOi8vMTAuMC40MC41OS9ydWNzb19jcnlwdG9wcm9fMjAxNS5j cmwwQAYIKwYBBQUHAQEENDAyMDAGCCsGAQUFBzABhiRodHRwOi8vY2Euc2FtcmVn aW9uLnJ1L29jc3Avb2NzcC5zcmYwKwYDVR0QBCQwIoAPMjAxNjA1MjUwNTQ2MDBa gQ8yMDE3MDUyNTA1NDYwMFowKQYDVR0gBCIwIDAKBggrBgEFBQcDBDAIBgYqhQNk cQEwCAYGKoUDZHECMDYGBSqFA2RvBC0MKyLQmtGA0LjQv9GC0L7Qn9GA0L4gQ1NQ IiAo0LLQtdGA0YHQuNGPIDMuNikwggEzBgUqhQNkcASCASgwggEkDCsi0JrRgNC4 0L/RgtC+0J/RgNC+IENTUCIgKNCy0LXRgNGB0LjRjyAzLjYpDFMi0KPQtNC+0YHR gtC+0LLQtdGA0Y/RjtGJ0LjQuSDRhtC10L3RgtGAICLQmtGA0LjQv9GC0L7Qn9GA 0L4g0KPQpiIg0LLQtdGA0YHQuNC4IDEuNQxP0KHQtdGA0YLQuNGE0LjQutCw0YIg 0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPIOKEliDQodCkLzEyNC0yNzM4INC+0YIg MDEuMDcuMjAxNQxP0KHQtdGA0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC10YLR gdGC0LLQuNGPIOKEliDQodCkLzEyOC0yNzY4INC+0YIgMzEuMTIuMjAxNTAIBgYq hQMCAgMDQQAPj34ZnWRnsMyDZrcLnG039Fde9pI2DUqh9IU9RYB07tz+UJMp32ID o/qlOtWWM2HLA9Yaxeo5Fe43hHg6H5aG �</ds:X509Certificate>
Что естественно не примет ни 1 валидатор. Конечно это не критично - удалить 2 последних символа всегда можно .. но как то это не правильно =)
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
Цитата:Index: PHPCadesCPCertificate.cpp =================================================================== --- PHPCadesCPCertificate.cpp (revision 155179) +++ PHPCadesCPCertificate.cpp (working copy) @@ -125,7 +125,7 @@ str = (char *)ecalloc(len, sizeof(char)); memcpy(str, value.pbData(), len); - RETURN_STRINGL(str, len, 0); + RETURN_STRINGL(str, len - 2 , 0); } PHP_METHOD(CPCertificate, Import) {
Можно так сделать для удобства. |
|
1 пользователь поблагодарил Анатолий Беляев за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 12.02.2016(UTC) Сообщений: 19 Откуда: самара Сказал(а) «Спасибо»: 2 раз Поблагодарили: 1 раз в 1 постах
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close