标准 rfc2459.X509.pdf
Infineon-TPM_ECC_Root_CA-C-v01_00-EN.cer 为例
Asn1View.exe 工具查看如下
国密签名算法OID: 1.2.156.10197.1.501
国密公钥参数: 1.2.156.10197.1.301
不认识的公钥参数
IOException: Unknown named curve: 1.2.156.10197.1.301 ?
SM2国密证书制作之算法参数"1.2.156.10197.1.301"
构造 SubjectPublicKeyInfo 对象
ASN1EncodableVector subJectPublicVector = new ASN1EncodableVector();
subJectPublicVector.add(new AlgorithmIdentifier(new ASN1ObjectIdentifier("1.2.840.10045.2.1"), new ASN1ObjectIdentifier("1.2.156.10197.1.301")));
// 未压缩公钥 前缀04+x坐标+y坐标
// 压缩公钥 前缀03+x(如果y是奇数),前缀02+x(如果y是偶数)
subJectPublicVector.add(new DERBitString(HexUtil.decodeHex("045580AECD1A6EE38C03610EC0AC981BE4FC0312C784DC9F6D03D8319DF10D37E589FE3D5F587CB3B5E0CB11C9BBCD9F35F928F92619A186426EA65B6FC49A2BDB")));
try {
SubjectPublicKeyInfo rootSubjectPublicKeyInfo = SubjectPublicKeyInfo.getInstance(new DERSequence(subJectPublicVector).getEncoded());
} catch (IOException e) {
e.printStackTrace();
}
ECC384长度密钥证书, 证书签名里面包含了TLV结构
ecc384:
以下解析SM2自签证书:
SM2自签发的证书,签名值也带TLV结构
SM2公钥值带04总共65字节:
04000ddf91b0f95a8317985b4377b12ae9516b7fccae03d1161d339fe14be071781bf7b6c2a6d288a4238e56c816c8df76b783022291dfd0934ef2b2dc2153eda4
公钥信息: