openssl之ASN1系列.doc

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
openssl之ASN1系列

openssl之ASN.1系列之1---引言和ASN.1概述 作者:DragonKing(Eric Wang) Mail: wzhah@263.net 发布于: OpenSSL版本:openssl-0.9.7 版权声明:未经作者授权,本文不能在任何商业性质的出版物或网站上进行转载 【引言】 ASN.1 全称为Abstract Syntax Notation One,是一种描述数字对象的方法和标准。openssl的编码方法就是基于该标准的,目前,很多其他软件的编码方法也是基于该标准。对于直接使用 openssl的API或者应用程序来说,可能对ASN.1的了解并不需要很清楚,但是为了使大家对后续介绍的各个API有一个更深刻的编码知识基础,所以对该ASN.1以及openssl相应提供的API处理函数作介绍。 【ASN.1概述】 ASN.1 作为一个数字对象描述标准,包括了两部分,分别为数据描述语言(ISO8824)和数据编码规则(ISO8825)。ASN.1的数据描述语言标准允许用户自定义基本数据类型,并可以通过简单的数据类型组成更复杂的数据类型。比如一个复杂的数据对象,如X509证书,就是在其它一些数据类型上定义的,而其它数据类型又是在更基本的数据类型上建立的,直到回溯到定义的最基本的数据类型。 比如ASN.1定义的X509证书的一个子域Validity(证书有效期)就定义如下: Validity ::= SEQUENCE { ??notBefore????????????UTCTIME, ??notAfter???????????? UTCTIME } 其意义就是定义Validity为一个有序序列,由两个个UTCTIME类型的数据notBefore和notAfter组成。然后,就需要找出UTCTIME是怎么定义的,当然,事实上UTCTIME是ASN.1定义的一个基本的时间数据类型。 在上述数据定义的基础上,ASN.1定义了一组编码规则,以规定怎么将上述描述的对象转换成应用程序能够处理和进行传输的二进制编码形式。ASN.1定义了多种编码方法,包括了BER, DER, PER, 和XER等,不过,虽然最基本最常用的编码方式是BER(Basic Encoding Rules),但是由于该编码方法可能对一个相同的对象有几种不同的合法二进制编码,所以在openssl里面使用的是BER的子集DER (Distinguished Encoding Rules),使用DER编码方法,对于每一个ASN.1对象,其相应的二进制编码是唯一的。 ASN.1里定义的每个基本对象都有一个对应的数字标识tag,在进行二进制编码的时候需要使用该标志。 【ASN.1定义的基本数据类型】 下面列出ASN.1定义的部分基本数据类型,其各字段的意义如下: [数据类型]-[数据说明]-[Tag(16进制)] [BOOLEAN]-[有两个值:false或true]-[01] [INTEGER]-[整型值]-[02] [BIT STRING]-[0位或多位]-[03] [OCTET STRING]-[0字节或多字节]-[04] [NULL]-[NULL值]-[05] [OBJECT IDENTIFIER]-[相应于一个对象的独特标识数字]-[06] [OBJECT DESCRIPTOR]-[一个对象的简称]-[07] [EXTERNAL]-[ASN.1没有定义的数据类型]-[08] [REAL]-[实数值]-[09] [ENUMERATED]-[数值列表,这些数据每个都有独特的标识符,作为ASN.1定义数据类型的一部分]-[0a] [SEQUENCE和SEQUENCE OF]-[有序数列,SEQUENCE里面的每个数值都可以是不同类型的,而SEQUENCE OF里是0个或多个类型相同的数据]-[10] [SET和SET OF]-[无序数列,SET里面的每个数值都可以是不同类型的,而SET OF里是0个或多个类型相同的数据]-[11] [NumericString]-[0-9以及空格]-[12] [PrintableString]-[A-Z、a-z、0-9、空格以及符号 ()+,-./:=?]-[13] [UTCTime]-[统一全球时间格式]-[17] 除了上述基本类型,ASN.1还定义了另外一些专用的数据类型,这里不再一一叙述。 openssl之ASN.1系列之2---ASN.1编码方法简介 作者:DragonKing(Eric Wang) Mail: wzhah@263.net 版权声明:未经作者授权,本文不能在任何商业性质的出版物或网站上进行转载 发布网站: OpenSSL版本:openssl-0.9.7 参考资料:“Computer Network

文档评论(0)

ctuorn0371 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档