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