次の方法で共有


基本型

証明書登録 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 の 2 つの値のいずれかを含めることができます。 次の例は、Basic Constraints 証明書拡張機能の 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 型には、1 バイトの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 は、アルゴリズム識別子、属性、およびその他の PKI 要素へのユニバーサル ポインターの一種としてオブジェクト識別子 (OID) を使用します。 OID は通常、"2.16.840.1.101.3.4.1.42" などのドット付き 10 進文字列で表示されます。 ピリオドで区切られた文字列内の個々の要素は、オブジェクトとそれを登録したorganizationを一意に識別する登録機関ツリー内のアークとリーフを表します。 たとえば、 上記の OID は、joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistAlgorithms(4) aesAlgs(1) に拡張され、256 ビット AES 暗号ブロック チェーン (CBC) モード アルゴリズムを一意に識別するために追加された .42 に拡張できます。

---------------------------------------------------------------------
-- 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 Type System

Distinguished Encoding Rules

ASN.1 型の DER エンコード