Condividi tramite


Tipi di base

L'API Registrazione certificati supporta i tipi ASN.1 di base seguenti.

STRINGA BIT

Tag di codifica: 0x03

Certreq.exe nome: BIT_STRING

Una stringa bit o binaria è una matrice arbitrariamente lunga di bit. I bit specifici possono essere identificati da interi parentesi e nomi assegnati come nell'esempio seguente.

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

Le chiavi e le firme del certificato sono spesso rappresentate come stringhe di bit.

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

BOOLEAN

Tag di codifica: 0x01

nome Certreq.exe: BOOLEAN

Un tipo booleano può contenere uno dei due valori, TRUE o FALSE. Nell'esempio seguente viene illustrata la struttura ASN.1 per un'estensione del certificato Vincoli di base. Il campo cA specifica se un soggetto certificato è un'autorità di certificazione (CA). La criticità predefinita è FALSE.

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

INTEGER

Tag di codifica: 0x02

Certreq.exe nome: INTEGER

Un intero può in genere essere qualsiasi valore integrale positivo o negativo. Nell'esempio seguente viene illustrata la struttura ASN.1 per una chiave pubblica RSA. Si noti che il campo publicExponent è limitato a un intero positivo minore di 4.294.967.296.

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

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

NULL

Tag di codifica: 0x05

Certreq.exe nome: NULL

Un tipo NULL contiene un singolo byte 0x00. Può essere usato ovunque la richiesta di certificato debba indicare un valore vuoto. Ad esempio, un AlgorithmIdentifier è una sequenza che contiene un identificatore di oggetto (OID) e parametri facoltativi.

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

Se non sono presenti parametri quando la struttura viene codificata, viene usato NULL per indicare un valore vuoto.

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)

IDENTIFICATORE OGGETTO

Tag di codifica: 0x06

Certreq.exe nome: OBJECT_ID

L'API Registrazione certificati usa identificatori di oggetto (OID) come tipo di puntatore universale per identificatori di algoritmo, attributi e altri elementi PKI. Gli ID vengono in genere presentati in una stringa decimale punteggiata, ad esempio "2.16.840.1.101.3.4.1.42". I singoli elementi nella stringa, separati da periodi, rappresentano gli archi e le foglie in un albero dell'autorità di registrazione che identifica in modo univoco l'oggetto e l'organizzazione che l'ha registrata. Ad esempio, l'OID precedente può essere espanso in csor(3) nistAlgorithms(4) aesAlgs(1) con .42 accodamento in modo univoco all'algoritmo di codifica AES (CBC).

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

OCTET STRING

Tag di codifica: 0x04

Certreq.exe nome: OCTET_STRING

Una stringa ottetto è una matrice di byte arbitrariamente grande. A differenza del tipo BIT STRING , tuttavia, non è possibile assegnare nomi specifici bit e byte nella stringa. La parola ottetto è destinata a essere un modo indipendente della piattaforma per fare riferimento a una parola di memoria. Nel contesto dell'API Registrazione certificati, ottetto e byte sono intercambiabili.

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

Sistema di tipi ASN.1

Distinguished Encoding Rules

Codifica DER di tipi ASN.1