ahs9 / eds-checker
该软件包最新版本(1.0)没有可用的许可信息。
1.0
2022-08-25 09:59 UTC
Requires
- php: ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0
- fgrosse/phpasn1: ^2.4
README
安装
$ composer require ahs9/eds-checker
使用
使用此库比较用户数据(来自数据库或POST)与证书(电子数字签名)中的数据。
示例
创建模板
证书结构不同。模板显示解析器用户数据的位置。如果模板不够深入,解析器将找到oid的重复。例如,证书有几个键 1.2.643.3.131.1.1
。OID重复将抛出异常。模板示例
$template = [ ParserAsn::TEMPLATE_SEQUENCE => [ ParserAsn::TEMPLATE_ARRAY => [ 0 => [ ParserAsn::TEMPLATE_ARRAY => [ 0 => null, 1 => null, 2 => null, 3 => null, 4 => null, 5 => ParserAsn::TEMPLATE_RESULT ] ] ] ] ];
创建解析器对象
$parser = new ParserAsn( $signature, // base64 encoded binary certificate [ CertificateItem::OID_INN, CertificateItem::OID_SURNAME, CertificateItem::OID_GIVEN_NAME, ], $template );
调试模板
要调试您的模板,请使用 ParserAsn::getSplitedAsn()。您可以在逐步填充模板时导出结果。模板的每一步都应该加深ASN对象。您需要获取没有oid重复的证书部分。
$template = [ ParserAsn::TEMPLATE_SEQUENCE => [] ]; var_dump($parser->getSplitedAsn());
然后
$template = [ ParserAsn::TEMPLATE_SEQUENCE => [ ParserAsn::TEMPLATE_ARRAY => [ 0 => [] ] ] ]; var_dump($parser->getSplitedAsn());
越来越深入,直到您获取用户数据
获取解析结果
$certificateData = $parser->getComparedData();
从POST创建用于比较的数据对象
$userData = new ComparedData( [ CertificateItem::OID_INN => $post['inn'], CertificateItem::OID_SURNAME => $post['surname'] CertificateItem::OID_GIVEN_NAME => $post['secondName'] . ' ' . $post['lastName'] ] );
比较
$checker = new Checker($userData, $certificateData); if (!$checker->compare()) { var_dump($checker->getErrors()); } // do staff