Certificate 在线解码

Certificate数据结构包含:

  • Version:是证书格式的版本号,此字段应设置为“3”;
  • Type:指示证书是显式的或隐式的还是其他的。对于显式证书,此字段应设置为01,对于隐式证书或其他,此字段应设置为02;
  • Issuer:证书的签发方;
  • ToBeSigned: 证书的内容。对于显式证书,在生成或校验证书签名时,该字段是哈希函数的输入;对于隐式证书,在基于重构值生成或校验公钥时,该字段是哈希函数的输入。该字段的编码细节参见ToBeSignedCertificate;
  • Signature:包含在ExplicitCertificate中。它由Issuer字段中标识的签名者在toBeSigned的散列上计算的签名。哈希计算时使用:
  • Data 输入是对toBeSigned字段的COER编码;
  • Signer identifier输入取决于验证类型,而验证类型又取决于issuer(发行者)指示的选择。如果issuer(发行者)指示的是self,则验证类型是自签名的,signer identifier (签名者标识符)输入是空字符串;如果issuer(发行者)指示的选择不是self,则验证类型是证书,signer identifier (签名者标识符)输入是发行者指示的证书的规范化COER编码。
  • 对于所有椭圆曲线上的点,toBeSigned采用LSB方式的压缩编码,也即这些点选择compressed-y-0或 compressed-y-1;

    证书(Cert)合法性校验:解码证书得到issuer信息,tbs待签数据信息,公钥信息,签名信息。在验签工具中,userid为issuer的32字节完整数据(hashid32)部分。其他数据为证书本来解码得到。hashid32由签名证书的上级证书机构的证书(CA Cert)执行sm3 hash得到。在V2X中,根证书的userid默认为31 32 33 34 35 36 37 38 31 32 33 34 35 36 37 38