Уважаемые знатоки, помогите пожалуйста разобраться с документацией.
В данный момент ТЗ - вытащить из присоединённой подписи ИНН, ФИО, КПП, ОРГН (для дальнейшей сверки подписанта с данными организации)
Подпись проходит проверку, а так же вытаскиваю время подписи
$signedData = new \CPSignedData();
...
$signedData->VerifyCades($signature, CADES_BES, 1);
$signObject = $signedData->get_Signers();
if ($signObject) {
$sObj = $signObject->get_Item(1);
// такого свойства не находит
// $SigningTimeTSP = $sObj->get_SignatureTimeStampTime();
// такое находит!
$SigningTime = $sObj->get_SigningTime(); // 10.01.2022 15:01:37
// как вытащить ИНН и другие?
}
Изучаю данный код и не могу разобраться с документацией, например хочу посмотреть методы и свойства класса CPSignedData ...
нашел в документации нечто похожее
https://docs.cryptopro.r...om_class/cadessigneddataметод VerifyCades() есть, но не вижу метода get_Signers() - какой объект возвращает?
поиском нашел get_Signers тут, но судя по описанию - не то, возвращает HRESULT и вообще метод не того интерфейса
https://docs.cryptopro.r...erface/isignedxmlsignersдалее вопросы по цепочке - результирующий объект какого класса? как найти описание метода get_Item() ?
поиском нашел get_Item
https://docs.cryptopro.r...erface/icpattributesitemи окончательно запутался :( и это рабочий код ...
в доке cadessigneddata тыкаю на свойство Signers - кидает на сайт майкрософта, хотя вроде это объект cpsigners
и на сайте есть к нему дока
https://docs.cryptopro.r...cadescom_class/cpsignersкак получить ИНН ?
PS
все эти интересующие меня поля легко получаются с ком.строки
/opt/cprocsp/bin/amd64/cryptcp -nochain -vsignf blank.pdf -f blank.pdf.sgn
но раз уж связался с phpcades - хочу добиться получения нужных данных именно с помощью этого расширения
PPS
в идеале ещё бы и примеры в документации глянуть к данным классам
я так полагаю далее нужно получить сертификат подписанта
$certObj = $sObj->get_Certificate();
и какими то методами оттуда достать ИНН?
попробую пойти снизу вверх от CPSignedData через подписантов
ИНН, КПП и т.д. - это какой то OID (можно найти)
https://docs.cryptopro.r...escom/cadescom_class/oidOID - это свойство объекта класса CPAttribute
https://docs.cryptopro.r...descom_class/cpattribute...
далее нужно как то до CPSignedData добраться (напрямую от CPSignedData до OID не получается)
если сверху вниз скорее всего так
CPSignedData -> get_Signers()
CPSigners -> get_Item(1)
CPSigner -> get_AuthenticatedAttributes()
CPAttributes -> get_Item(1) (тут цикл по всем)
CPAttribute -> get_OID()
CPOID -> get_Value()
получил такое :)
1.2.840.113549.1.9.32
1.2.840.113549.1.9.53
1.3.6.1.4.1.311.88.2.14
1.2.840.113549.1.9.45
1.2.840.113549.1.9.16.2.47
в другой ветке читал, что OID ИНН = 1.2.643.3.131.1.1
тут такого нет
но у меня сомненья - я брал AuthenticatedAttributes это коллекция аутентифицированных атрибутов, по идее это атрибут подписанный т.е. AuthenticatedAttributes2
но ->get_AuthenticatedAttributes2() не отработал :(
Отредактировано пользователем 12 января 2022 г. 8:55:11(UTC)
| Причина: Не указана