Sdílet prostřednictvím


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
}

typu ASN.1

rozlišující pravidla kódování

kódování DER typů ASN.1