憑證註冊 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
}
布爾
編碼卷標: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
}
整數
編碼卷標: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)
}
零
編碼卷標: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 會使用物件識別碼 (OIDs) 作為演算法識別碼、屬性和其他 PKI 元素的通用指標類型。 OID 通常會以點狀十進位字串呈現,例如 “2.16.840.1.101.3.4.1.42”。 字串中的個別元素,以句號分隔,代表弧線,並留在註冊授權單位樹狀結構中,以唯一識別對象和註冊它的組織。 例如,上述 OID 可以擴展到 joint-iso-itu-t(2) country(16) us(840) organization(1) gov(1) csor(3) nistAlgorithms(4) aesAlgs(1) 附加 .42,以唯一識別 256 位 AES 加密區塊鏈結 (CBC) 模式演算法。
---------------------------------------------------------------------
-- ASN.1 type example: OBJECT IDENTIFIER
-- Tag number: 0x06
---------------------------------------------------------------------
AlgorithmIdentifier ::= SEQUENCE
{
algorithm OBJECT IDENTIFIER,
parameters ANY OPTIONAL
}
OCTET STRING
編碼卷標: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
}
相關主題
-
ASN.1 類型的 DER 編碼