【发布时间】:2021-02-08 12:39:00
【问题描述】:
使用 ECDSA 签名分析 X.509 证书我发现了一个无法解释的 0x00 字节。
X.509 证书的签名应该在 ASN.1 BIT STRING 结构中给出。
对于 ECDSA,签名由两个整数 (r, s) 组成,编码为两个 ASN.1 INTEGER 的 ASN.1 SEQUENCE。
在我的示例中(使用 openssl 生成)我得到了这个:
ASN.1 tag for BIT STRING
| length
| |
| | ASN.1 tag for SEQEUNCE
| | | length
| | | |
| | | | ASN.1 tag for INTEGER ASN.1 tag for INTEGER
| | | | | length | length
| | | | | | | |
| | | | | | 0x21 bytes integer value | | 0x21 bytes integer value
| | | | | | ____________|____________ | | ____________|____________
v v v v v v / \ v v / \
... 03 49 00 30 46 02 21 00 D5 F4 76 43 ... A2 BD 95 02 21 00 DF 01 30 24 ... 50 12 32
^
|
why is there a 0x00 byte?
为什么在 ASN.1 SEQUENCE 标签前多了一个 0x00 字节?
【问题讨论】: