欢迎来到天天文库
浏览记录
ID:23721651
大小:113.00 KB
页数:27页
时间:2018-11-10
《openssl之asn1系列》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、openssl之ASN.1系列之1---引言和ASN.1概述作者:DragonKing(EricWang)Mail:wzhah@263.net发布于:http://openssl.126.comOpenSSL版本:openssl-0.9.7版权声明:未经作者授权,本文不能在任何商业性质的出版物或网站上进行转载【引言】ASN.1全称为AbstractSyntaxNotationOne,是一种描述数字对象的方法和标准。openssl的编码方法就是基于该标准的,目前,很多其他软件的编码方法也是基于该标准。对于直接使用openssl的API或者应用程序来
2、说,可能对ASN.1的了解并不需要很清楚,但是为了使大家对后续介绍的各个API有一个更深刻的编码知识基础,所以对该ASN.1以及openssl相应提供的API处理函数作介绍。【ASN.1概述】ASN.1作为一个数字对象描述标准,包括了两部分,分别为数据描述语言(ISO8824)和数据编码规则(ISO8825)。ASN.1的数据描述语言标准允许用户自定义基本数据类型,并可以通过简单的数据类型组成更复杂的数据类型。比如一个复杂的数据对象,如X509证书,就是在其它一些数据类型上定义的,而其它数据类型又是在更基本的数据类型上建立的,直到回溯到定义的最基
3、本的数据类型。比如ASN.1定义的X509证书的一个子域Validity(证书有效期)就定义如下:Validity::=SEQUENCE{ notBefore UTCTIME, notAfter UTCTIME}其意义就是定义Validity为一个有序序列,由两个个UTCTIME类型的数据notBefore和notAfter组成。然后,就需要找出UTCTIME是怎么定义的,当然,事实上UTCTIME是ASN.1定义的一个基本的时间数据类型。在上述数据定义的基础上,ASN.1定义了一组编码规则,以规定
4、怎么将上述描述的对象转换成应用程序能够处理和进行传输的二进制编码形式。ASN.1定义了多种编码方法,包括了BER,DER,PER,和XER等,不过,虽然最基本最常用的编码方式是BER(BasicEncodingRules),但是由于该编码方法可能对一个相同的对象有几种不同的合法二进制编码,所以在openssl里面使用的是BER的子集DER(DistinguishedEncodingRules),使用DER编码方法,对于每一个ASN.1对象,其相应的二进制编码是唯一的。ASN.1里定义的每个基本对象都有一个对应的数字标识tag,在进行二进制编码的时
5、候需要使用该标志。【ASN.1定义的基本数据类型】下面列出ASN.1定义的部分基本数据类型,其各字段的意义如下:[数据类型]-[数据说明]-[Tag(16进制)][BOOLEAN]-[有两个值:false或true]-[01][INTEGER]-[整型值]-[02][BITSTRING]-[0位或多位]-[03][OCTETSTRING]-[0字节或多字节]-[04][NULL]-[NULL值]-[05][OBJECTIDENTIFIER]-[相应于一个对象的独特标识数字]-[06][OBJECTDESCRIPTOR]-[一个对象的简称]-[07
6、][EXTERNAL]-[ASN.1没有定义的数据类型]-[08][REAL]-[实数值]-[09][ENUMERATED]-[数值列表,这些数据每个都有独特的标识符,作为ASN.1定义数据类型的一部分]-[0a][SEQUENCE和SEQUENCEOF]-[有序数列,SEQUENCE里面的每个数值都可以是不同类型的,而SEQUENCEOF里是0个或多个类型相同的数据]-[10][SET和SETOF]-[无序数列,SET里面的每个数值都可以是不同类型的,而SETOF里是0个或多个类型相同的数据]-[11][NumericString]-[0-9以
7、及空格]-[12][PrintableString]-[A-Z、a-z、0-9、空格以及符号()+,-./:=?]-[13][UTCTime]-[统一全球时间格式]-[17]除了上述基本类型,ASN.1还定义了另外一些专用的数据类型,这里不再一一叙述。openssl之ASN.1系列之2---ASN.1编码方法简介作者:DragonKing(EricWang)Mail:wzhah@263.net版权声明:未经作者授权,本文不能在任何商业性质的出版物或网站上进行转载发布网站:http://openssl.126.comOpenSSL版本:openss
8、l-0.9.7参考资料:“ComputerNetwork”,“ALaymansGuidetoaSubsetofASN.1,BER,and
此文档下载收益归作者所有