基本类型
证书注册 API 支持以下基本 ASN.1 类型。
BIT STRING
编码标记:0x03
Certreq.exe名称:BIT_STRING
位或二进制字符串是任意长度的位数组。 特定位可以通过带圆括号的整数和分配的名称进行标识,如以下示例所示。
Versions ::= BIT STRING{ version-1(0), version-2(1) }
证书密钥和签名通常表示为位字符串。
---------------------------------------------------------------------
-- ASN.1 type example: BIT STRING
-- Tag number: 0x03
---------------------------------------------------------------------
SubjectPublicKeyInfo ::= SEQUENCE
{
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING
}
BOOLEAN
编码标记:0x01
Certreq.exe名称:BOOLEAN
布尔类型可以包含两个值之一: TRUE 或 FALSE。 以下示例演示基本约束证书扩展的 ASN.1 结构。 cA 字段指定证书使用者是否是 CA) (证书颁发机构。 默认严重性为 FALSE。
---------------------------------------------------------------------
-- ASN.1 type example: BOOLEAN
-- Tag number: 0x01
---------------------------------------------------------------------
BasicConstraints ::= SEQUENCE
{
cA BOOLEAN DEFAULT FALSE,
pathLenConstraint INTEGER OPTIONAL
}
INTEGER
编码标记:0x02
Certreq.exe名称:INTEGER
整数通常可以是任何正整数值或负整数值。 以下示例演示 RSA 公钥的 ASN.1 结构。 请注意, publicExponent 字段限制为小于 4,294,967,296 的正整数。
---------------------------------------------------------------------
-- ASN.1 type example: INTEGER
-- Tag number: 0x02
---------------------------------------------------------------------
HUGEINTEGER ::= INTEGER
RSAPublicKey ::= SEQUENCE
{
modulus HUGEINTEGER,
publicExponent INTEGER (0..4294967295)
}
Null
编码标记:0x05
Certreq.exe名称: NULL
NULL 类型包含单个字节0x00。 它可用于证书请求必须指示空值的任何位置。 例如, AlgorithmIdentifier 是一个序列,其中包含对象标识符 (OID) 和可选参数。
---------------------------------------------------------------------
-- ASN.1 type example: NULL
-- Tag number: 0x05
---------------------------------------------------------------------
AlgorithmIdentifier ::= SEQUENCE
{
algorithm OBJECT IDENTIFIER,
parameters ANY OPTIONAL
}
如果在对结构进行编码时没有参数,则使用 NULL 来指示空值。
30 0d ; SEQUENCE (d Bytes)
| | | 06 09 ; OBJECT_ID (9 Bytes)
| | | | 2a 86 48 86 f7 0d 01 01 01
| | | | ; 1.2.840.113549.1.1.1 RSA (RSA_SIGN)
| | | 05 00 ; NULL (0 Bytes)
对象标识符
编码标记:0x06
Certreq.exe名称:OBJECT_ID
证书注册 API 使用对象标识符 (OID) 作为一种指向算法标识符、属性和其他 PKI 元素的通用指针。 OID 通常以点状十进制字符串表示,例如“2.16.840.1.101.3.4.1.42”。 字符串中的单个元素(用句点分隔)表示注册机构树中的弧形和叶,该树唯一标识对象和注册它的组织。 例如,前面的 OID 可以扩展到 joint-iso-itu-t (2) 国家/地区 (16,) 我们 (840) 组织 (1) gov (101) csor (3) nistAlgorithms (4) aesAlgs (1) 追加了 0.42,用于唯一标识 256 位 AES 密码块链 (CBC) 模式算法。
---------------------------------------------------------------------
-- ASN.1 type example: OBJECT IDENTIFIER
-- Tag number: 0x06
---------------------------------------------------------------------
AlgorithmIdentifier ::= SEQUENCE
{
algorithm OBJECT IDENTIFIER,
parameters ANY OPTIONAL
}
八进制字符串
编码标记:0x04
Certreq.exe名称:OCTET_STRING
八进制字符串是任意大的字节数组。 但是,与 BIT STRING 类型不同,无法为字符串中的特定位和字节分配名称。 八位字节一词是一种独立于平台的方式来引用内存词。 在证书注册 API 的上下文中,八位字节和字节可互换。
---------------------------------------------------------------------
-- ASN.1 type example: OCTET STRING
-- Tag number: 0x04
---------------------------------------------------------------------
AuthorityKeyId ::= SEQUENCE
{
keyIdentifier [0] IMPLICIT OCTET STRING OPTIONAL,
certIssuer [1] EXPLICIT NAME
certSerialNumber [2] IMPLICIT INTEGER OPTIONAL
}
相关主题