基本類型

憑證註冊 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

布林型別可以包含兩個值之一,TRUEFALSE。 下列範例顯示基本條件約束憑證延伸模組的 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 類型系統

辨別編碼規則

ASN.1 類型的 DER 編碼