定义
ASN.1 抽象语法记法一
是ITU—T的一个标准集,它用来编码及表示通用数据类型。
ASN.1执行了以何种方式对平凡的数据类型进行编码,以便其他任何平台及第三方工具能够解释其内容
编码方面支持 基本编码规则BER, 正则编码规则CER, 非典型编码规则DER
语法
定义
Name ::= type
定义一个名称为“Name”的元素 它是一个给定ASN.1类型“Type”的实例
MyName ::= IA5String
//IA5String(类似于ASCII字符)
定义并初始化
MyName ::= IA5String(Tom)
MyName 是字符串"Tom" 的编码
扩展
MyName ::= IA5String(Tom|Joe)
MyName 可以是Tom也可以是Joe
容器 Container
包含了其他相同或则不同类型元素的数据类型
序列 SEQUENCE 单一序列 SEQUENCE OF 集合 SET 单一集合 SET OF
Name ::= Container{
Name Type,
[Name Type, .....]
}
UserRecord ::= SEQUENCE{
Name SEQUENCE{
First IA5String,
Last IA5String
}
DoB UTCTIME
}
等价于 C语言的
struct UserRecord{
struct Name{
char *First;
char *Last;
};
time_t DoB;
};
修改器
可选 OPTIONAL 默认 DEFAULT 选择 CHOICE
//没有完全明白意思 后面看了再写吧
数据类型
布尔型 Boolean
八位位数组 OCTET String
位串 BIT String
类似于ASCII字符 IA5String
可打印字符串 PrintableString
整数 INTEGER
对象标识符 OBJECT Identifier, OID
世界协调时 UTCTIME
空 NULL
序列 SEQUENCE 单一序列 SEQUENCE OF
集合 SET 单一集合 SET OF