ahs9/eds-checker

该软件包最新版本(1.0)没有可用的许可信息。

1.0 2022-08-25 09:59 UTC

This package is auto-updated.

Last update: 2024-09-26 07:37:41 UTC


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