CN102299801A - 基于链表结构的数字证书解析方法 - Google Patents
基于链表结构的数字证书解析方法 Download PDFInfo
- Publication number
- CN102299801A CN102299801A CN2011102544622A CN201110254462A CN102299801A CN 102299801 A CN102299801 A CN 102299801A CN 2011102544622 A CN2011102544622 A CN 2011102544622A CN 201110254462 A CN201110254462 A CN 201110254462A CN 102299801 A CN102299801 A CN 102299801A
- Authority
- CN
- China
- Prior art keywords
- data
- certificate
- digital certificate
- data block
- asn1
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Storage Device Security (AREA)
Abstract
本发明涉及信息安全技术。本发明解决了现有终端设备使用openssl算法库解析数字证书调用方式繁杂的问题,提供了一种基于链表结构的数字证书解析方法,其技术方案可概括为:首先定义一个解析数据的存储结构,解析时,首先读取数字证书文件的数据,按照数字证书的结构并通过ASN1语法分析,将数字证书中的证书主体、签名算法标识、证书签名三部分数据完整准确解析出来,然后对数字证书主体的数据,依据预先定义的结构内成员的顺序,开始解析,最后用解析函数解析ASN1数据块,并按照之前定义的解析数据的存储结构存储解析出来的各个具体数据。本发明的有益效果是,调用实现简便快捷,适用于基于链表结构的数字证书解析存储。
Description
技术领域
本发明涉及信息安全技术,特别涉及数字证书解析存储的技术。
背景技术
数字证书是在虚拟网络中用以标志用户身份的一定序列数据,在网络通信中识别通信各方的身份,如同现实生活中每个人都要拥有一张证明个人身份的身份证或其他证件来表明其具有的某种身份和资格一样,数字证书是由权威公正的第三方机构(CA中心)签发的,以数字证书为核心的加密技术可以确保网络上传递信息的机密性、完整性,以及交易实体身份的真实性,签名信息的不可否认性,保障网络应用的安全,数字证书的格式遵循ITUTX.509国际标准(简称X509),一个标准的X509数字证书由以下三部分构成:证书主体、证书签名算法标志、证书签名值,而证书主体结构包含以下内容:证书版本号、证书序列号、证书算法标识、证书发行者名称、证书有效期、证书主体名称、证书公钥、证书发行者ID(可选)、证书主体ID(可选)、证书扩展段(可选),X509数字证书的结构是用ASN1(Abstract SyntaxNotation One)进行描述数据结构,并使用ASN1语法进行编码。ASN1编码的数据块一般由标识符、数据长度、数据字段三部分组成,数据块的首字节即为标识符来说明数据类型,而标识符又分为三部分。该字节最高二比特位表示标记类型,分别是universal(00)、application(01)、context-specific(10)和private(11),在证书主体的信息字段中,发行者ID、主体ID、扩展字段数据的标记类型是context-specific,其余的标记类型都是universal。该字节的下一比特位的值若是0表示编码类型为简单类型,是1表示结构类型。简单类型就是不能再分解的类型,结构类型则是由若干个简单类型或结构类型的数据块组合而成的。剩下的5比特是具体的标识符的值,根据最高二比特位表示的标记类型,具体值有不同的含义。数据长度有两种表示方式,若长度值小于等于127,则用一个字节表示;若长度值大于127,则用多个字节表示,第一个字节的最高位为1,其它低7位给出后面该域使用的字节的数量,从该域第二个字节开始给出数据的长度,高位优先。对于数据字段值,是由具体编码类型的值决定。现有数字证书解析都是调用openssl算法库,其中定义的结构类型繁多,而且整个库规模庞大,用于解析数字证书调用方式繁杂。而数字证书的终端设备用户认证的程序实现都是在嵌入式平台上,所以庞大的openssl算法库很难移植到终端设备来用于数字证书解析。
发明内容
本发明的目的是克服目前终端设备使用openssl算法库解析数字证书调用方式繁杂的缺点,提供一种基于链表结构的数字证书解析方法。
本发明解决其技术问题,采用的技术方案是,基于链表结构的数字证书解析方法,其特征在于,包括以下步骤:
a.定义一个解析数据的存储结构为X509_st,包括:证书主体、证书签名算法标识和证书签名值,其中的证书主体字段定义为一个X509_CINF的结构体,其包括:版本号、序列号、算法标识、发行者名称、有效期、主体名称、公钥、发行者ID、主体ID以及扩展字段,结构体X509_st中的证书签名算法标识、证书签名值字段以及结构体X509_CINF中的所有字段,都以结构体ASN1_DATA进行存储,结构体ASN1_DATA包括:类型,长度,数据和指向下一个结构体的指针;
b.读取数字证书文件的数据,按照数字证书的结构并通过ASN1语法分析,将数字证书中的证书主体、签名算法标识、证书签名三部分数据完整准确解析出来;
c.对数字证书主体的数据,依据预先定义的X509_CINF结构内成员的顺序,开始解析;
d.用解析函数解析ASN1数据块,并按照a步骤定义的解析数据的存储结构存储解析出来的各个具体数据。
具体的,步骤d包括以下步骤:
d1.当需要解析第一数据块时,解析其数据块标识符,判断出该数据块编码类型是否是简单类型,若为简单类型则进入d2步骤,若为结构类型则进入d3步骤;
d2.将其数据块的标识符具体值存入ASN1_DATA的“类型”字段,解析出的数据块长度值赋给“长度”字段,数据块具体内容赋值给“数据”字段,解析完成;
d3.将解析出来的实际数据字段,依旧作为一个数据块继续解析;
d4.通过解析该数据块标识符,判断出该数据块编码类型是否是简单类型,若为简单类型则进入d5步骤,若为结构类型则进入d3步骤;
d5.将数据块的标识符具体值存入ASN1_DATA中作为一个结点,解析出的数据块长度值赋给“长度”字段,由定义的指针“数据”字段来指向实际的数据值,而该结点的“下一个”指针指向解析到的第一数据块内的下一个解析出来的简单编码类型数据块;
d6.当第一数据块全部分解为简单编码类型数据并存入ASN1_DATA链表中,解析完成。
本发明的有益效果是,通过上述基于链表结构的数字证书解析方法,通过链表结构来统一表示存储数字证书内的各信息字段,有效简化了各种类型信息字段的定义和存储,在数字证书认证流程中,该解析方法调用实现简便快捷,而且该方法代码规模小,易于移植到用户终端设备。
具体实施方式
下面结合实施例,详细描述本发明的技术方案。
本发明所述基于链表结构的数字证书解析方法为:首先定义一个解析数据的存储结构为X509_st,包括:证书主体、证书签名算法标识和证书签名值,其中的证书主体字段定义为一个X509_CINF的结构体,其包括:版本号、序列号、算法标识、发行者名称、有效期、主体名称、公钥、发行者ID、主体ID以及扩展字段,结构体X509_st中的证书签名算法标识、证书签名值字段以及结构体X509_CINF中的所有字段,都以结构体ASN1_DATA进行存储,结构体ASN1_DATA包括:类型,长度,数据和指向下一个结构体的指针,解析时,首先读取数字证书文件的数据,按照数字证书的结构并通过ASN1语法分析,将数字证书中的证书主体、签名算法标识、证书签名三部分数据完整准确解析出来,然后对数字证书主体的数据,依据预先定义的X509_CINF结构内成员的顺序,开始解析,最后用解析函数解析ASN1数据块,并按照之前定义的解析数据的存储结构存储解析出来的各个具体数据。
实施例
本例的解析数据的存储结构为X509_st,包括:证书主体、证书签名算法标识和证书签名值,其中的证书主体字段定义为一个X509_CINF的结构体,其包括:版本号、序列号、算法标识、发行者名称、有效期、主体名称、公钥、发行者ID、主体ID以及扩展字段,结构体X509_st中的证书签名算法标识、证书签名值字段以及结构体X509_CINF中的所有字段,都以结构体ASN1_DATA进行存储,结构体ASN1_DATA包括:类型,长度,数据和指向下一个结构体的指针,即解析出来的相关数据信息,根据描述内容的不同,依次存储于ASN1_DATA、X509_CINF、X509_st结构体中。
首先定义一个解析数据的存储结构为X509_st,包括:证书主体、证书签名算法标识和证书签名值,其中的证书主体字段定义为一个X509_CINF的结构体,其包括:版本号、序列号、算法标识、发行者名称、有效期、主体名称、公钥、发行者ID、主体ID以及扩展字段,结构体X509_st中的证书签名算法标识、证书签名值字段以及结构体X509_CINF中的所有字段,都以结构体ASN1_DATA进行存储,结构体ASN1_DATA包括:类型,长度,数据和指向下一个结构体的指针,解析时,首先读取数字证书文件的数据,按照数字证书的结构并通过ASN1语法分析,将数字证书中的证书主体、签名算法标识、证书签名三部分数据完整准确解析出来,然后对数字证书主体的数据,依据预先定义的X509_CINF结构内成员的顺序,开始解析,最后用解析函数解析ASN1数据块,其具体步骤为:当需要解析第一数据块时,解析其数据块标识符,判断出该数据块编码类型是否是简单类型,若为简单类型则将其数据块的标识符具体值存入ASN1_DATA的“类型”字段,解析出的数据块长度值赋给“长度”字段,数据块具体内容赋值给“数据”字段,解析完成,若为结构类型则将解析出来的实际数据字段,依旧作为一个数据块继续解析,通过解析该数据块标识符,判断出该数据块编码类型是否是简单类型,若为结构类型则回到将解析出来的实际数据字段,依旧作为一个数据块继续解析那一步,直到解析出简单类型的数据块为止,若为简单类型则将数据块的标识符具体值存入ASN1_DATA中作为一个结点,解析出的数据块长度值赋给“长度”字段,由定义的指针“数据”字段来指向实际的数据值,而该结点的“下一个”指针指向解析到的第一数据块内的下一个解析出来的简单编码类型数据块,最后当第一数据块全部分解为简单编码类型数据并存入ASN1_DATA链表中,解析完成。
Claims (2)
1.基于链表结构的数字证书解析方法,其特征在于,包括以下步骤:
a.定义一个解析数据的存储结构为X509_st,包括:证书主体、证书签名算法标识和证书签名值,其中的证书主体字段定义为一个X509_CINF的结构体,其包括:版本号、序列号、算法标识、发行者名称、有效期、主体名称、公钥、发行者ID、主体ID以及扩展字段,结构体X509_st中的证书签名算法标识、证书签名值字段以及结构体X509_CINF中的所有字段,都以结构体ASN1_DATA进行存储,结构体ASN1_DATA包括:类型,长度,数据和指向下一个结构体的指针;
b.读取数字证书文件的数据,按照数字证书的结构并通过ASN1语法分析,将数字证书中的证书主体、签名算法标识、证书签名三部分数据完整准确解析出来;
c.对数字证书主体的数据,依据预先定义的X509_CINF结构内成员的顺序,开始解析;
d.用解析函数解析ASN1数据块,并按照a步骤定义的解析数据的存储结构存储解析出来的各个具体数据。
2.根据权利要求1所述基于链表结构的数字证书解析方法,其特征在于,步骤d包括以下步骤:
d1.当需要解析第一数据块时,解析其数据块标识符,判断出该数据块编码类型是否是简单类型,若为简单类型则进入d2步骤,若为结构类型则进入d3步骤;
d2.将其数据块的标识符具体值存入ASN1_DATA的“类型”字段,解析出的数据块长度值赋给“长度”字段,数据块具体内容赋值给“数据”字段,解析完成;
d3.将解析出来的实际数据字段,依旧作为一个数据块继续解析;
d4.通过解析该数据块标识符,判断出该数据块编码类型是否是简单类型,若为简单类型则进入d5步骤,若为结构类型则进入d3步骤;
d5.将数据块的标识符具体值存入ASN1_DATA中作为一个结点,解析出的数据块长度值赋给“长度”字段,由定义的指针“数据”字段来指向实际的数据值,而该结点的“下一个”指针指向解析到的第一数据块内的下一个解析出来的简单编码类型数据块;
d6.当第一数据块全部分解为简单编码类型数据并存入ASN1_DATA链表中,解析完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102544622A CN102299801A (zh) | 2011-08-31 | 2011-08-31 | 基于链表结构的数字证书解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102544622A CN102299801A (zh) | 2011-08-31 | 2011-08-31 | 基于链表结构的数字证书解析方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102299801A true CN102299801A (zh) | 2011-12-28 |
Family
ID=45359988
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011102544622A Pending CN102299801A (zh) | 2011-08-31 | 2011-08-31 | 基于链表结构的数字证书解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102299801A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104821936A (zh) * | 2015-03-24 | 2015-08-05 | 广东电网有限责任公司电力科学研究院 | 基于套接字和asn.1实现iec61850站控层通信协议的*** |
CN114866262A (zh) * | 2022-07-07 | 2022-08-05 | 万商云集(成都)科技股份有限公司 | 一种数据证书文件的存储取用方法、装置、设备和介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101257387A (zh) * | 2008-03-13 | 2008-09-03 | 华耀环宇科技(北京)有限公司 | 一种x509数字证书快速解析和验证方法 |
CN101295312A (zh) * | 2008-06-18 | 2008-10-29 | 中兴通讯股份有限公司 | 一种使用表格呈现数据的方法 |
CN101477661A (zh) * | 2009-01-19 | 2009-07-08 | 阿里巴巴集团控股有限公司 | 一种数字证书管理方法、装置和*** |
CN101826962A (zh) * | 2009-10-13 | 2010-09-08 | 北京信安世纪科技有限公司 | 一种数字证书的快速处理方法 |
-
2011
- 2011-08-31 CN CN2011102544622A patent/CN102299801A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101257387A (zh) * | 2008-03-13 | 2008-09-03 | 华耀环宇科技(北京)有限公司 | 一种x509数字证书快速解析和验证方法 |
CN101295312A (zh) * | 2008-06-18 | 2008-10-29 | 中兴通讯股份有限公司 | 一种使用表格呈现数据的方法 |
CN101477661A (zh) * | 2009-01-19 | 2009-07-08 | 阿里巴巴集团控股有限公司 | 一种数字证书管理方法、装置和*** |
CN101826962A (zh) * | 2009-10-13 | 2010-09-08 | 北京信安世纪科技有限公司 | 一种数字证书的快速处理方法 |
Non-Patent Citations (2)
Title |
---|
陆洁茹, 朱艳琴: "SSL中ECC数字证书的设计与实现", 《计算机应用与软件》, vol. 24, no. 12, 31 December 2007 (2007-12-31) * |
陈菊花: "数字证书解析和颁发软件的设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》, 15 May 2010 (2010-05-15) * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104821936A (zh) * | 2015-03-24 | 2015-08-05 | 广东电网有限责任公司电力科学研究院 | 基于套接字和asn.1实现iec61850站控层通信协议的*** |
CN114866262A (zh) * | 2022-07-07 | 2022-08-05 | 万商云集(成都)科技股份有限公司 | 一种数据证书文件的存储取用方法、装置、设备和介质 |
CN114866262B (zh) * | 2022-07-07 | 2022-11-22 | 万商云集(成都)科技股份有限公司 | 一种数据证书文件的存储取用方法、装置、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7221954B2 (ja) | 変更から検証鍵を保護し、正当性のプルーフの有効性を確かめるためのシステム | |
EP3420669B1 (en) | Cryptographic method and system for secure extraction of data from a blockchain | |
US20090031135A1 (en) | Tamper Proof Seal For An Electronic Document | |
CN109831302A (zh) | 基于国密算法的pdf电子签章方法及*** | |
CN109815051A (zh) | 区块链的数据处理方法和*** | |
CN111756522A (zh) | 数据处理方法及*** | |
CN110264354A (zh) | 创建区块链账户及验证区块链交易的方法及装置 | |
JP2021511763A (ja) | システムアーキテクチャ及びこの中のデータの処理方法 | |
CN111639080B (zh) | 一种数据处理方法、装置、节点设备及存储介质 | |
CN112395353A (zh) | 一种基于联盟链的智能电能表质量数据共享方法及*** | |
CN110210270A (zh) | 二维码信息安全加固方法及***和二维码图像解析方法及*** | |
CN109981278A (zh) | 数字证书申请方法、***、用户身份识别卡、设备及介质 | |
CN112966237A (zh) | 一种基于区块链的数字资产处理方法 | |
CN112784112A (zh) | 报文校验方法及装置 | |
Ramkumar | Executing large-scale processes in a blockchain | |
CN112559635A (zh) | 以太坊联盟链节点的业务处理方法、装置、设备及介质 | |
CN102299801A (zh) | 基于链表结构的数字证书解析方法 | |
CN110266653A (zh) | 一种鉴权方法、***及终端设备 | |
CN102332979A (zh) | Rid编码及其验证方法 | |
CN112818057A (zh) | 一种基于区块链的数据交换方法及装置 | |
US20200304308A1 (en) | Method for providing a proof-of-retrievability | |
Hammi et al. | ASN. 1 specification for ETSI certificates and encoding performance study | |
CN116664123A (zh) | 一种基于区块链技术的数字钱包设计方法 | |
CN114338527A (zh) | IPv6主动标识符处理方法及*** | |
CN101257387B (zh) | 一种x509数字证书快速解析和验证方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20111228 |