Atom Лента - Форум КриптоПро - Тема:Методы и свойства CPSignedData - как вытащить ИНН из подписи? - 10Форум КриптоПро - Atom Лентаurn:https:--www-cryptopro-ru:AtomLenta:ForumKriptoPro:Tema:MetodyisvojjstvaCPSignedData-kakvytashchit'INNizpodpisi?-10:1Copyright 2024 Форум КриптоПро2024-03-28T15:24:06Zhttps://www.cryptopro.ru/forum2/Images/YAFLogo.pngForum Adminhttps://www.cryptopro.ruforum@cryptopro.ruGTAlexhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=61188&name=GTAlexGTAlexhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=61188&name=GTAlexАндрей *https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=15008&name=Андрей *GTAlexhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=61188&name=GTAlexGTAlexhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=61188&name=GTAlexGTAlexhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=61188&name=GTAlexTolikTipaTut1https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=49415&name=TolikTipaTut1GTAlexhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=61188&name=GTAlexYetAnotherForum.NETurn:https:--www-cryptopro-ru:ftPosts:st1:meid130232:1Методы и свойства CPSignedData - как вытащить ИНН из подписи?<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Андрей * <a href="/forum2/default.aspx?g=posts&m=130230#post130230"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Вот так ещё можно:<br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote>function getOID($OID, $certificate)<br />{<br /> preg_match('/\/' . $OID . '=([^\/]+)/', $certificate, $matches);<br /> if ($matches)<br /> return $matches[1];<br /> <br /> return "";<br />}<br />$certBase64 = $cert->Export(0);<br /> //echo ', "Certificate": '. json_encode($certBase64);<br /> $certPEM = "-----BEGIN CERTIFICATE-----\n" . $certBase64 . "\n" . "-----END CERTIFICATE-----\n";<br /> $res = openssl_x509_read($certPEM);<br /><br /> $CertData = openssl_x509_parse($res); <br /> $SNILS = getOID('1.2.643.100.3',$CertData['name'] );<br /> $INN = getOID('1.2.643.3.131.1.1',$CertData['name'] );<br /> $OGRN = getOID('1.2.643.100.1',$CertData['name'] ); </div></div></div></div><br /><br />так не взлетело $CertData['name'] в какой то кодировке, регулярка не отрабатывает<br /><br />'name' => string '/ST=54 \xD0\x9E\xD0\x91\xD0\x9B\xD0\x90\xD0\xA1\xD0\xA2\xD0\xAC \xD0\x9D\xD0\x9E\xD0\x92\xD0\x9E ....</td></tr></table>2022-01-12T10:26:57+03:002022-01-12T10:26:57+03:00GTAlex<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Андрей * <a href="/forum2/default.aspx?g=posts&m=130230#post130230"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Вот так ещё можно:<br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote>function getOID($OID, $certificate)<br />{<br /> preg_match('/\/' . $OID . '=([^\/]+)/', $certificate, $matches);<br /> if ($matches)<br /> return $matches[1];<br /> <br /> return "";<br />}<br />$certBase64 = $cert->Export(0);<br /> //echo ', "Certificate": '. json_encode($certBase64);<br /> $certPEM = "-----BEGIN CERTIFICATE-----\n" . $certBase64 . "\n" . "-----END CERTIFICATE-----\n";<br /> $res = openssl_x509_read($certPEM);<br /><br /> $CertData = openssl_x509_parse($res); <br /> $SNILS = getOID('1.2.643.100.3',$CertData['name'] );<br /> $INN = getOID('1.2.643.3.131.1.1',$CertData['name'] );<br /> $OGRN = getOID('1.2.643.100.1',$CertData['name'] ); </div></div></div></div><br /><br />так не взлетело $CertData['name'] в какой то кодировке, регулярка не отрабатывает<br /><br />'name' => string '/ST=54 \xD0\x9E\xD0\x91\xD0\x9B\xD0\x90\xD0\xA1\xD0\xA2\xD0\xAC \xD0\x9D\xD0\x9E\xD0\x92\xD0\x9E ....</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid130230:1Методы и свойства CPSignedData - как вытащить ИНН из подписи?<table class="content postContainer" width="100%"><tr><td>Вот так ещё можно:<br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote>function getOID($OID, $certificate)<br />{<br /> preg_match('/\/' . $OID . '=([^\/]+)/', $certificate, $matches);<br /> if ($matches)<br /> return $matches[1];<br /> <br /> return "";<br />}<br />$certBase64 = $cert->Export(0);<br /> //echo ', "Certificate": '. json_encode($certBase64);<br /> $certPEM = "-----BEGIN CERTIFICATE-----\n" . $certBase64 . "\n" . "-----END CERTIFICATE-----\n";<br /> $res = openssl_x509_read($certPEM);<br /><br /> $CertData = openssl_x509_parse($res); <br /> $SNILS = getOID('1.2.643.100.3',$CertData['name'] );<br /> $INN = getOID('1.2.643.3.131.1.1',$CertData['name'] );<br /> $OGRN = getOID('1.2.643.100.1',$CertData['name'] ); </div></div></td></tr></table>2022-01-12T10:10:12+03:002022-01-12T10:10:12+03:00Андрей *<table class="content postContainer" width="100%"><tr><td>Вот так ещё можно:<br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote>function getOID($OID, $certificate)<br />{<br /> preg_match('/\/' . $OID . '=([^\/]+)/', $certificate, $matches);<br /> if ($matches)<br /> return $matches[1];<br /> <br /> return "";<br />}<br />$certBase64 = $cert->Export(0);<br /> //echo ', "Certificate": '. json_encode($certBase64);<br /> $certPEM = "-----BEGIN CERTIFICATE-----\n" . $certBase64 . "\n" . "-----END CERTIFICATE-----\n";<br /> $res = openssl_x509_read($certPEM);<br /><br /> $CertData = openssl_x509_parse($res); <br /> $SNILS = getOID('1.2.643.100.3',$CertData['name'] );<br /> $INN = getOID('1.2.643.3.131.1.1',$CertData['name'] );<br /> $OGRN = getOID('1.2.643.100.1',$CertData['name'] ); </div></div></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid130227:1Методы и свойства CPSignedData - как вытащить ИНН из подписи?<table class="content postContainer_Alt" width="100%"><tr><td>уффф, наконец то нашел<br />var_dump($certObj->get_SubjectName());<br /><br />такую документацию врагу не пожелаешь<br />благо на форуме похожую <a rel="nofollow" href="https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=5690" title="https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=5690">ветку</a> нашел</td></tr></table>2022-01-12T09:52:15+03:002022-01-12T09:52:15+03:00GTAlex<table class="content postContainer_Alt" width="100%"><tr><td>уффф, наконец то нашел<br />var_dump($certObj->get_SubjectName());<br /><br />такую документацию врагу не пожелаешь<br />благо на форуме похожую <a rel="nofollow" href="https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=5690" title="https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=5690">ветку</a> нашел</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid130224:1Методы и свойства CPSignedData - как вытащить ИНН из подписи?<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: TolikTipaTut1 <a href="/forum2/default.aspx?g=posts&m=130220#post130220"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Добрый день!<br /><br />Мне кажется, что ИНН надо извлекать не из подписи самой, а из сертификата подписанта.</div></div><br /><br />Вы правы!<br /><br />$certObj = $sObj->get_Certificate();<br />var_dump(iconv('windows-1251', 'utf-8', $certObj->GetInfo(CERT_INFO_SUBJECT_SIMPLE_NAME)));<br /><br />ура! получил таки ФИО<br />теперь ИНН надыть найти :)<br /><br /></td></tr></table>2022-01-12T09:32:56+03:002022-01-12T09:32:56+03:00GTAlex<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: TolikTipaTut1 <a href="/forum2/default.aspx?g=posts&m=130220#post130220"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Добрый день!<br /><br />Мне кажется, что ИНН надо извлекать не из подписи самой, а из сертификата подписанта.</div></div><br /><br />Вы правы!<br /><br />$certObj = $sObj->get_Certificate();<br />var_dump(iconv('windows-1251', 'utf-8', $certObj->GetInfo(CERT_INFO_SUBJECT_SIMPLE_NAME)));<br /><br />ура! получил таки ФИО<br />теперь ИНН надыть найти :)<br /><br /></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid130222:1Методы и свойства CPSignedData - как вытащить ИНН из подписи?<br />имя - значение<br /><br />4294967295<br />4294967295<br /><br />0<br />4294967295<br /><br />1<br />4294967295<br /><br />4294967295<br />4294967295<br /><br />4294967295<br />4294967295<br /><br />2022-01-12T09:27:18+03:002022-01-12T09:27:18+03:00GTAlex<br />имя - значение<br /><br />4294967295<br />4294967295<br /><br />0<br />4294967295<br /><br />1<br />4294967295<br /><br />4294967295<br />4294967295<br /><br />4294967295<br />4294967295<br /><br />urn:https:--www-cryptopro-ru:ftPosts:st1:meid130220:1Методы и свойства CPSignedData - как вытащить ИНН из подписи?<br />$signedData = new \CPSignedData();<br />...<br />$signedData->VerifyCades($signature, CADES_BES, 1);<br />$signObject = $signedData->get_Signers();<br />if ($signObject) {<br /> $sObj = $signObject->get_Item(1);<br /><br />// такого свойства не находит<br />// $SigningTimeTSP = $sObj->get_SignatureTimeStampTime(); <br /><br />// такое находит!<br /> $SigningTime = $sObj->get_SigningTime(); // 10.01.2022 15:01:37<br /><br />// как вытащить ИНН и другие?<br />}<br />2022-01-12T09:07:16+03:002022-01-12T09:07:16+03:00TolikTipaTut1<br />$signedData = new \CPSignedData();<br />...<br />$signedData->VerifyCades($signature, CADES_BES, 1);<br />$signObject = $signedData->get_Signers();<br />if ($signObject) {<br /> $sObj = $signObject->get_Item(1);<br /><br />// такого свойства не находит<br />// $SigningTimeTSP = $sObj->get_SignatureTimeStampTime(); <br /><br />// такое находит!<br /> $SigningTime = $sObj->get_SigningTime(); // 10.01.2022 15:01:37<br /><br />// как вытащить ИНН и другие?<br />}<br />urn:https:--www-cryptopro-ru:ftPosts:st1:meid130218:1Методы и свойства CPSignedData - как вытащить ИНН из подписи?<br />$signedData = new \CPSignedData();<br />...<br />$signedData->VerifyCades($signature, CADES_BES, 1);<br />$signObject = $signedData->get_Signers();<br />if ($signObject) {<br /> $sObj = $signObject->get_Item(1);<br /><br />// такого свойства не находит<br />// $SigningTimeTSP = $sObj->get_SignatureTimeStampTime(); <br /><br />// такое находит!<br /> $SigningTime = $sObj->get_SigningTime(); // 10.01.2022 15:01:37<br /><br />// как вытащить ИНН и другие?<br />}<br />2022-01-12T08:55:11+03:002022-01-12T08:55:11+03:00GTAlex<br />$signedData = new \CPSignedData();<br />...<br />$signedData->VerifyCades($signature, CADES_BES, 1);<br />$signObject = $signedData->get_Signers();<br />if ($signObject) {<br /> $sObj = $signObject->get_Item(1);<br /><br />// такого свойства не находит<br />// $SigningTimeTSP = $sObj->get_SignatureTimeStampTime(); <br /><br />// такое находит!<br /> $SigningTime = $sObj->get_SigningTime(); // 10.01.2022 15:01:37<br /><br />// как вытащить ИНН и другие?<br />}<br />