上传到网站的文件
其中一些是数字签名的
有一个确定此签名数据(序列号、作者、日期)的工作版本:
但如果该文件由 CryptoPro 签名,则会发生未知算法异常。
实际上,脚本从文件中提取出某个签名并以某种方式对其进行解析
$seq = Sequence::fromDER($binaryData);
$signed_data = $seq->getTagged(0)->asExplicit()->asSequence();
$ecac = $signed_data->getTagged(0)->asImplicit(Element::TYPE_SET)->asSet();
$ecoc = $ecac->at($ecac->count() - 1);
$cert = Certificate::fromASN1($ecoc->asSequence());
$tbsCert = $cert->tbsCertificate();
签名看起来像这样
...
312c 302a 0603 5504 030c 23d0 9cd0 b8d0
bdd0 bad0 bed0 bcd1 81d0 b2d1 8fd0 b7d1
8c20 d0a0 d0be d181 d181 d0b8 d0b8 301e
170d 3138 3037 3036 3132 3138 3036 5a17
0d33 3630 3730 3131 3231 3830 365a 3082
0124 311e 301c 0609 2a86 4886 f70d 0109
0116 0f64 6974 406d 696e 7376 7961 7a2e
7275 310b 3009 0603 5504 0613 0252 5531
1830 1606 0355 0408 0c0f 3737 20d0 9cd0
bed1 81d0 bad0 b2d0 b031 1930 1706 0355
0407 0c10 d0b3 2e20 d09c d0be d181 d0ba
d0b2 d0b0 312e 302c 0603 5504 090c 25d1
...
这是发生异常的地方。
我在 Debian 上安装了 CryptoPro,并试图找到一个实用程序来解析这个签名。
也许有人遇到过这个?如何提取签名数据?