Freigeben über


Grundlegende Typen

Die Zertifikatregistrierungs-API unterstützt die folgenden grundlegenden ASN.1-Typen.

BIT-ZEICHENFOLGE

Codierungstag: 0x03

Certreq.exe Name: BIT_STRING

Eine Bit- oder binäre Zeichenfolge ist ein willkürlich langes Array von Bits. Bestimmte Bits können durch klammerte Ganzzahlen und zugewiesene Namen wie im folgenden Beispiel identifiziert werden.

Versions ::= BIT STRING{ version-1(0), version-2(1) } 

Zertifikatschlüssel und Signaturen werden häufig als Bitzeichenfolgen dargestellt.

---------------------------------------------------------------------
-- ASN.1 type example: BIT STRING
-- Tag number: 0x03
---------------------------------------------------------------------
SubjectPublicKeyInfo ::= SEQUENCE 
{
  algorithm           AlgorithmIdentifier,
  subjectPublicKey    BIT STRING
} 

BOOLEAN

Codierungstag: 0x01

Certreq.exe Name: BOOLEAN

Ein boolescher Typ kann einen von zwei Werten, TRUE oder FALSE enthalten. Das folgende Beispiel zeigt die ASN.1-Struktur für eine Erweiterung von Basic Constraints-Zertifikaten. Das cA-Feld gibt an, ob es sich bei einer Zertifizierungsstelle um eine Zertifizierungsstelle (Zertifizierungsstelle) handelt. Die Standard kritischität ist FALSE.

---------------------------------------------------------------------
-- ASN.1 type example: BOOLEAN
-- Tag number: 0x01
---------------------------------------------------------------------
BasicConstraints ::= SEQUENCE 
{
  cA                  BOOLEAN DEFAULT FALSE,
  pathLenConstraint   INTEGER OPTIONAL
}

INTEGER

Codierungstag: 0x02

Certreq.exe Name: INTEGER

Eine ganze Zahl kann in der Regel ein beliebiger positiver oder negativer Integralwert sein. Das folgende Beispiel zeigt die ASN.1-Struktur für einen öffentlichen RSA-Schlüssel. Beachten Sie, dass das publicExponent-Feld auf eine positive ganze Zahl beschränkt ist, die kleiner als 4.294.967.296 ist.

---------------------------------------------------------------------
-- ASN.1 type example: INTEGER
-- Tag number: 0x02
---------------------------------------------------------------------
HUGEINTEGER ::= INTEGER

RSAPublicKey ::= SEQUENCE 
{ 
  modulus         HUGEINTEGER,    
  publicExponent  INTEGER (0..4294967295) 
} 

NULL

Codierungstag: 0x05

Certreq.exe Name: NULL

Ein NULL-Typ enthält ein einzelnes Byte 0x00. Sie kann an einer beliebigen Stelle verwendet werden, an der die Zertifikatanforderung einen leeren Wert angeben muss. Beispielsweise ist ein AlgorithmusIdentifier eine Sequenz, die einen Objektbezeichner (OID) und optionale Parameter enthält.

---------------------------------------------------------------------
-- ASN.1 type example: NULL
-- Tag number: 0x05
---------------------------------------------------------------------
AlgorithmIdentifier ::= SEQUENCE 
{
  algorithm           OBJECT IDENTIFIER,
  parameters          ANY OPTIONAL    
}

Wenn keine Parameter vorhanden sind, wenn die Struktur codiert ist, wird NULL verwendet, um einen leeren Wert anzugeben.

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)

OBJEKTBEZEICHNER

Codierungstag: 0x06

Certreq.exe Name: OBJECT_ID

Die Zertifikatregistrierungs-API verwendet Objektbezeichner (OIDs) als Typ universeller Zeiger auf Algorithmusbezeichner, Attribute und andere PKI-Elemente. OIDs werden in der Regel in einer gepunkteten Dezimalzeichenfolge wie "2.16.840.1.101.3.4.1.42" angezeigt. Die einzelnen Elemente in der Zeichenfolge, getrennt durch Punkte, stellen die Bögen dar und verbleiben in einer Registrierungsstellenstruktur, die das Objekt und die Organisation, die sie registriert hat, eindeutig identifiziert. Beispielsweise kann das vorherige OID auf joint-iso-itu-t(2) country(16) us(840) organization(1) gov(1) gov(101) csor(3) nistAlgorithms(4) aesAlgs(1) mit .42 angefügt werden, um den 256-Bit-AES-Verschlüsselungsblockkettenalgorithmus (CBC) eindeutig zu identifizieren.

---------------------------------------------------------------------
-- ASN.1 type example: OBJECT IDENTIFIER
-- Tag number: 0x06
---------------------------------------------------------------------
AlgorithmIdentifier ::= SEQUENCE 
{
  algorithm           OBJECT IDENTIFIER,
  parameters          ANY OPTIONAL    
}

OKTET-ZEICHENFOLGE

Codierungstag: 0x04

Certreq.exe Name: OCTET_STRING

Eine Oktetzeichenfolge ist ein beliebig großes Bytearray. Im Gegensatz zum BIT STRING-Typ können jedoch bestimmte Bits und Bytes in der Zeichenfolge keine Namen zugewiesen werden. Das Wort Oktett soll eine plattformunabhängige Möglichkeit sein, auf ein Speicherwort zu verweisen. Im Kontext der Zertifikatregistrierungs-API sind Oktet und Byte austauschbar.

---------------------------------------------------------------------
-- 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 Typsystem

Distinguished Encoding Rules

DER-Codierung von ASN.1-Typen