Sistema di tipi ASN.1

Il concetto di un tipo di dati è fondamentale per lo standard astratta Notation One (ASN.1). Ogni campo di una struttura di richiesta di certificato è associato a un tipo. Si consideri, ad esempio, la sintassi del certificato PKCS #10 ASN.1 illustrata nell'esempio seguente.

--------------------------------------------------------------------
-- PKCS #10 Certificate request.
--------------------------------------------------------------------
CertificationRequestInfo ::= SEQUENCE 
{
   version                 CertificationRequestInfoVersion,
   subject                 Name,
   subjectPublicKeyInfo    SubjectPublicKeyInfo,
   attributes              [0] IMPLICIT Attributes
}

--------------------------------------------------------------------
-- Version number.
--------------------------------------------------------------------
CertificationRequestInfoVersion ::= INTEGER

--------------------------------------------------------------------
-- Subject distinguished name (DN).
--------------------------------------------------------------------
Name ::= SEQUENCE OF RelativeDistinguishedName

RelativeDistinguishedName ::= SET OF AttributeTypeValue

AttributeTypeValue ::= SEQUENCE 
{
   type               OBJECT IDENTIFIER,
   value              ANY 
}

--------------------------------------------------------------------
-- Public key information.
--------------------------------------------------------------------
SubjectPublicKeyInfo ::= SEQUENCE 
{
   algorithm           AlgorithmIdentifier,
   subjectPublicKey    BITSTRING
}

AlgorithmIdentifier ::= SEQUENCE 
{
  algorithm           OBJECT IDENTIFIER,
  parameters          ANY OPTIONAL    
} 

--------------------------------------------------------------------
-- Attributes.
--------------------------------------------------------------------
Attributes ::= SET OF Attribute

Attribute ::= SEQUENCE 
{
   type               OBJECT IDENTIFIER,
   values             AttributeSetValue
}

AttributeSetValue ::= SET OF ANY

La struttura di richiesta di alto livello, CertificationRequestInfo, è un tipo costituito da una sequenza di altri tipi. Quando un tipo è o contiene solo tipi di base, tipi di stringa o ANY, non può essere suddiviso ulteriormente. Ad esempio, il campo della versione è un tipo CertificationRequestInfoVersion che è, a sua volta, un tipo INTEGER , un tipo ASN.1 di base che non è composto da altri tipi.

Un sistema di tipi consente la sintassi di una richiesta da presentare visivamente in modo leggibile dagli sviluppatori e consente alla richiesta di essere codificata in modo coerente per la trasmissione in una rete. Per altre informazioni sulla codifica, vedere Distinguished Encoding Rules. Per altre informazioni sui tipi ASN.1, vedere gli argomenti seguenti.

Tipi di base

Vengono illustrati i tipi di dati seguenti:

  • STRINGA BIT
  • BOOLEAN
  • INTEGER
  • NULL
  • IDENTIFICATORE OGGETTO
  • OCTET STRING

Tipi di stringa

Vengono illustrati i tipi di stringa seguenti:

  • BMPString
  • IA5String
  • PrintableString
  • TeletexString
  • UTF8String

Tipi costruiti

Vengono illustrati i tipi di dati ASN.1 che possono contenere tipi di base, tipi di stringa o altri tipi costruiti.

 

Codifica richiesta certificato

Codifica DER di tipi ASN.1

Distinguished Encoding Rules

Introduzione alla sintassi e alla codifica ASN.1