次の方法で共有


構築された型

構築された 抽象構文表記 1 (ASN.1) 型は、基本型、文字列型、またはその他の構築された型から構成されます。 たとえば、X.509 証明書拡張機能は、次の例に示すように、3 種類の基本的な ASN.1 から構成されます。

Extension ::= SEQUENCE 
{
   extnId              OBJECT IDENTIFIER,
   critical            BOOLEAN DEFAULT FALSE,
   extnValue           OCTET STRING
}

拡張機能は、オブジェクト識別子 (OID)、拡張機能が重要かどうかを識別するブール値、および値を含むバイト配列で構成されます。 証明書登録 API では、次の構成済みの ASN.1 型がサポートされます。

SEQUENCE と SEQUENCE OF

エンコード タグ: 0x30

1 つ以上の型の順序付けられた一連のフィールドが含まれます。 フィールドは、省略可能な マークすることも、DEFAULT することもできます。 また、デコード時のあいまいさを回避するために、連続する省略可能なフィールドは、一意識別子 ([1] などの角かっこで囲まれた整数) と、次の例に示すように次の必須フィールドを使用して、互いに異なる必要があります。

SomeValue ::= SEQUENCE 
{
   a     INTEGER,
   b     [0] INTEGER OPTIONAL,
   c     [1] INTEGER DEFAULT 1,
   d     INTEGER
}

SEQUENCESEQUENCE OF の違いは、SEQUENCE OF コンストラクトの要素が同じ型である必要があるということです。 次の例を参照してください。 どちらのコンストラクトも、エンコード時に同じタグ値 (0x30) を持っています。

PolicyQualifiers ::=  SEQUENCE OF PolicyQualifierInfo

PolicyQualifierInfo ::= SEQUENCE 
{
   policyQualifierId   OBJECT IDENTIFIER,
   qualifier           ANY OPTIONAL
}

SEQUENCESEQUENCE OF の違いを確認するもう 1 つの方法は、C プログラミング言語で対応する言語と比較することです。 つまり、SEQUENCE は構造体とほぼ同じであり、SEQUENCE OF は配列とほぼ同等です。

SET と SET OF

エンコード タグ: 0x31

1 つ以上の型の順序付けられていない一連のフィールドが含まれます。 これは、順序付きリストを含む SEQUENCE とは異なります。 順序指定されていないリストを指定すると、アプリケーションは最も適切な順序でエンコーダーに構造フィールドを提供できます。 SEQUENCEと同様に、SET コンストラクトのフィールドは 、省略可能な または DEFAULTでマークできます。また、デコード プロセスのあいまいさを解消するには、一意の識別子を使用する必要があります。 SETSET OF の違いは、SET OF コンストラクトの要素が同じ型である必要があるということです。

Name ::= SEQUENCE OF RelativeDistinguishedName

RelativeDistinguishedName ::= SET OF AttributeTypeValue

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

選択

エンコード タグ: 適用できません

代替の選択肢を定義します。 デコード時のあいまいさを回避するには、各代替方法を角かっこで囲まれた整数で一意に識別する必要があります。 エンコードすると、CHOICE コンストラクトには、選択した代替のエンコード タグ値が含まれます。

AltNames ::= SEQUENCE OF GeneralName

GeneralNames ::= AltNames

GeneralName ::= CHOICE 
{
   otherName               [0] IMPLICIT OtherName,
   rfc822Name              [1] IMPLICIT IA5String,
   dNSName                 [2] IMPLICIT IA5String,
   x400Address             [3] IMPLICIT SeqOfAny,
   directoryName           [4] EXPLICIT Name,
   ediPartyName            [5] IMPLICIT SEQUENCE OF ANY,
   uniformResourceLocator  [6] IMPLICIT IA5String,
   iPAddress               [7] IMPLICIT OCTET STRING,
   registeredID            [8] IMPLICIT OBJECT IDENTIFIER
}

ASN.1 タイプ システム

ASN.1 型の DER エンコード

識別エンコード規則の