SM2国密算法证书解析
来源:互联网 发布:叙利亚失败的国家 知乎 编辑:程序博客网 时间:2024/05/16 12:07
from http://www.jonllen.com/jonllen/work/174.aspx
一、数字证书的组成
1)证书数据结构
数字证书使用ASN.1编码,证书文件以二进制或Base64格式存放,数据格式使用TLV(Tag Length Value)形式,T代表类型标识符,L是长度值标识符,V代表值编码。数字证书中的每一项都有个对应的类型T。一个数字证书就是一个大的TLV序列,然后V又由多个TLV组合而成。
SM2证书数据和RSA算法证书一样,包含证书版本、序列号、颁发者、使用者主体信息、使用者公钥、有效期、证书扩展项等,只不过SM2证书的公钥算法是使用ECC算法的Oid标识(1.2.840.10045.2.1),然后公钥参数使用SM2国密算法的Oid标识(1.2.156.10197.1.301)。
2)签名算法
SM2证书配套的签名算法是基于SM3的SM2签名算法,算法Oid标识为1.2.156.10197.1.501,另外SM2国密算法还定义基于SHA_1、SHA_256的签名,以及使用SM3算法的RSA的签名,只不过签名算法Oid标识不一样。
3)签名数据
SM2的签名数据由2个BigInteger大数组成,再使用Der编码存放签名数据。证书的签名数据由根证书私钥进行签名,使用根证书公钥验证,顶级根证书使用自己的证书公钥验证。
二、数字证书的对象标识符
数字证书的每项都有对象标识Oid,SM2数字证书的主要区别就是公钥算法、公钥参数、签名算法标识不一样,其余的都是X509里标准项。数字证书常见得对象标识有如下:
三、数字证书的解析
数字证书的解析主要是根据ASN.1语法和对象标识符来获取值,然后再是证书的有效期、颁发机构根证书、CRL吊销状态和使用目的等验证。RSA证书是标准算法大部分平台都可以解析,而SM2国密算法证书的解析就不是那么通用的。在Windows的一些较高版本打开SM2证书会显示“验证信任关系时,系统层上出现了一个错误”,这是因为Windows还不支持SM2算法证书验证,不能识别SM2签名的算法标识,因此需要自行验证SM2证书的签名数据,可基于BouncyCastle开源加密库来实现SM2验证签名,详细参见我的国密算法SM2证书制作。
- SM2国密算法证书解析
- SM2国密算法证书解析
- SM2国密算法证书解析
- java 解析国密SM2算法证书(修改版)
- 国密算法SM2证书制作
- 国密算法SM2证书制作
- 国密算法SM2证书制作
- 国密算法SM2证书制作
- 关于解析SM2证书
- 用gmssl制作国密SM2证书
- 使用miracl实现国密sm2算法
- SM2算法第二十四篇:谈谈PBOC3.0中使用的国密SM2算法
- PBOC3.0 SM2 算法各种证书、数字签名的验证
- JS版SM2国密算法的签名验证
- 谈谈PBOC3.0中使用的国密SM2算法
- 谈谈PBOC3.0中使用的国密SM2算法
- Openssl源码方式添加国密SM2算法
- 关于国密算法 SM1,SM2,SM3,SM4 的笔记
- @media媒体查询
- HTK实现孤立词语音识别
- myEclipse2014集成MyBatis插件自动生成代码
- Linux下动态库的创建与链接
- AbstractQueuedSynchronizer在工具类ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier中的应用
- SM2国密算法证书解析
- VS2012 有效注册密钥
- 2017面试如何回答自己有什么缺点
- Java中关于supper和this的理解
- C++实现二叉树数组
- EntityManager 查询指定字段
- Maven
- SolrCloud集群环境搭建
- Centos下源码安装mysql