ASN.1 类型系统

数据类型的概念是抽象语法表示法一 (ASN.1) 标准的基础。 证书请求结构的每个字段都与类型相关联。 例如,请考虑以下示例中显示的 PKCS #10 ASN.1 证书语法。

--------------------------------------------------------------------
-- PKCS #10 Certificate request.
--------------------------------------------------------------------
CertificationRequestInfo ::= SEQUENCE 
{
   version                 CertificationRequestInfoVersion,
   subject                 Name,
   subjectPublicKeyInfo    SubjectPublicKeyInfo,
   attributes              [0] IMPLICIT Attributes
}

--------------------------------------------------------------------
-- Version number.
--------------------------------------------------------------------
CertificationRequestInfoVersion ::= INTEGER

--------------------------------------------------------------------
-- Subject distinguished name (DN).
--------------------------------------------------------------------
Name ::= SEQUENCE OF RelativeDistinguishedName

RelativeDistinguishedName ::= SET OF AttributeTypeValue

AttributeTypeValue ::= SEQUENCE 
{
   type               OBJECT IDENTIFIER,
   value              ANY 
}

--------------------------------------------------------------------
-- Public key information.
--------------------------------------------------------------------
SubjectPublicKeyInfo ::= SEQUENCE 
{
   algorithm           AlgorithmIdentifier,
   subjectPublicKey    BITSTRING
}

AlgorithmIdentifier ::= SEQUENCE 
{
  algorithm           OBJECT IDENTIFIER,
  parameters          ANY OPTIONAL    
} 

--------------------------------------------------------------------
-- Attributes.
--------------------------------------------------------------------
Attributes ::= SET OF Attribute

Attribute ::= SEQUENCE 
{
   type               OBJECT IDENTIFIER,
   values             AttributeSetValue
}

AttributeSetValue ::= SET OF ANY

高级请求结构 CertificationRequestInfo 是一种由其他类型的序列构成的类型。 当类型为或仅包含基本类型、字符串类型或 ANY 时,无法进一步细分。 例如, 版本 字段是 CertificationRequestInfoVersion 类型,反过来又是 INTEGER 类型,它是一种基本 ASN.1 类型,该类型不是从其他类型的构成。

类型系统允许以开发人员易于理解的方式直观呈现请求的语法,并使请求能够一致编码,以便通过网络进行传输。 有关编码的详细信息,请参阅可辨别编码规则。 有关 ASN.1 类型的详细信息,请参阅以下主题。

基本类型

讨论以下数据类型:

  • BIT STRING
  • BOOLEAN
  • INTEGER
  • NULL
  • 对象标识符
  • OCTET STRING

字符串类型

讨论以下字符串类型:

  • BMPString
  • IA5String
  • PrintableString
  • TeletexString
  • UTF8String

构造的类型

讨论可以包含基本类型、字符串类型或其他构造类型的 ASN.1 数据类型。

 

证书请求编码

ASN.1 类型的 DER 编码

可辨别编码规则

ASN.1 语法和编码简介