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
}
Zugehörige Themen