Základní typy
Rozhraní API pro zápis certifikátů podporuje následující základní typy ASN.1.
BIT STRING
Značka kódování: 0x03
název Certreq.exe: BIT_STRING
Bitový nebo binární řetězec je libovolně dlouhé pole bitů. Konkrétní bity lze identifikovat pomocí závorek celých čísel a přiřazených názvů jako v následujícím příkladu.
Versions ::= BIT STRING{ version-1(0), version-2(1) }
Klíče certifikátů a podpisy jsou často reprezentovány jako bitové řetězce.
---------------------------------------------------------------------
-- ASN.1 type example: BIT STRING
-- Tag number: 0x03
---------------------------------------------------------------------
SubjectPublicKeyInfo ::= SEQUENCE
{
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING
}
BOOLEOVSKÝ
Značka kódování: 0x01
název Certreq.exe: BOOLEAN
Logický typ může obsahovat jednu ze dvou hodnot, TRUE nebo FALSE. Následující příklad ukazuje strukturu ASN.1 pro rozšíření certifikátu Basic Constraints. Pole cA určuje, jestli je subjektem certifikátu certifikační autorita (CA). Výchozí závažnost je false.
---------------------------------------------------------------------
-- ASN.1 type example: BOOLEAN
-- Tag number: 0x01
---------------------------------------------------------------------
BasicConstraints ::= SEQUENCE
{
cA BOOLEAN DEFAULT FALSE,
pathLenConstraint INTEGER OPTIONAL
}
CELÉ ČÍSLO
Značka kódování: 0x02
název Certreq.exe: CELÉ ČÍSLO
Celé číslo může být obvykle libovolná kladná nebo záporná celočíselná hodnota. Následující příklad ukazuje strukturu ASN.1 pro veřejný klíč RSA. Všimněte si, že pole publicExponent je omezeno na kladné celé číslo menší než 4 294 967 296.
---------------------------------------------------------------------
-- ASN.1 type example: INTEGER
-- Tag number: 0x02
---------------------------------------------------------------------
HUGEINTEGER ::= INTEGER
RSAPublicKey ::= SEQUENCE
{
modulus HUGEINTEGER,
publicExponent INTEGER (0..4294967295)
}
NULA
Značka kódování: 0x05
název Certreq.exe: null
Typ null obsahuje jeden bajtový 0x00. Dá se použít kdekoli, kde požadavek na certifikát musí označit prázdnou hodnotu. Například AlgorithmIdentifier je posloupnost obsahující identifikátor objektu (OID) a volitelné parametry.
---------------------------------------------------------------------
-- ASN.1 type example: NULL
-- Tag number: 0x05
---------------------------------------------------------------------
AlgorithmIdentifier ::= SEQUENCE
{
algorithm OBJECT IDENTIFIER,
parameters ANY OPTIONAL
}
Pokud nejsou při kódování struktury žádné parametry, null slouží k označení prázdné hodnoty.
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)
IDENTIFIKÁTOR OBJEKTU
Značka kódování: 0x06
název Certreq.exe: OBJECT_ID
Rozhraní API pro zápis certifikátů používá identifikátory objektů (OID) jako typ univerzálního ukazatele na identifikátory, atributy a další prvky PKI. Identifikátory OID se obvykle zobrazují v tečkované desítkovém řetězci, například 2.16.840.1.101.3.4.1.42. Jednotlivé prvky v řetězci oddělené tečkami představují oblouky a listy ve stromu registrační autority, který jednoznačně identifikuje objekt a organizaci, která ho zaregistrovala. Příklad: Předchozí identifikátor OID lze rozšířit na společnou iso-itu-t(2) zemi(16) us(840) organization(1) gov(1) gov(101) csor(3) nistAlgorithms(4) aesAlgs(1) s příponou .42, která jednoznačně identifikuje algoritmus 256bitového řetězení bloků AES (CBC).
---------------------------------------------------------------------
-- ASN.1 type example: OBJECT IDENTIFIER
-- Tag number: 0x06
---------------------------------------------------------------------
AlgorithmIdentifier ::= SEQUENCE
{
algorithm OBJECT IDENTIFIER,
parameters ANY OPTIONAL
}
ŘETĚZEC OCTET
Značka kódování: 0x04
název Certreq.exe: OCTET_STRING
Osmičkový řetězec je libovolně velké bajtové pole. Na rozdíl od BIT STRING typ, ale konkrétní bity a bajty v řetězci nelze přiřadit názvy. Slovo octet je určené jako nezávislý způsob odkazování na slovo paměti. V kontextu rozhraní API zápisu certifikátů jsou zaměnitelné octety a bajty.
---------------------------------------------------------------------
-- 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
}
Související témata