Compartilhar via


Tipos Básicos

A API de Registro de Certificado dá suporte aos seguintes tipos asn.1 básicos.

CADEIA DE CARACTERES BIT

Marca de codificação: 0x03

Certreq.exe nome: BIT_STRING

Uma cadeia de caracteres binária ou bits é uma matriz arbitrariamente longa de bits. Bits específicos podem ser identificados por inteiros parênteses e nomes atribuídos como no exemplo a seguir.

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

As chaves de certificado e as assinaturas geralmente são representadas como cadeias de caracteres de bits.

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

BOOLEAN

Marca de codificação: 0x01

Certreq.exe nome: BOOLEAN

Um tipo booliano pode conter um dos dois valores, TRUE ou FALSE. O exemplo a seguir mostra a estrutura ASN.1 para uma extensão de certificado de Restrições Básicas. O campo cA especifica se uma entidade de certificado é uma AC (autoridade de certificação). A criticidade padrão é FALSE.

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

INTEGER

Marca de codificação: 0x02

Certreq.exe nome: INTEGER

Um inteiro normalmente pode ser qualquer valor integral positivo ou negativo. O exemplo a seguir mostra a estrutura ASN.1 para uma chave pública RSA. Observe que o campo publicExponent é restrito a um inteiro positivo inferior a 4.294.967.296.

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

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

NULO

Marca de codificação: 0x05

Certreq.exe nome: NULL

Um tipo NULL contém um único byte 0x00. Ele pode ser usado em qualquer lugar em que a solicitação de certificado deve indicar um valor vazio. Por exemplo, um AlgorithmIdentifier é uma sequência que contém um OID (identificador de objeto) e parâmetros opcionais.

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

Se não houver parâmetros quando a estrutura for codificada, NULL será usado para indicar um valor vazio.

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)

IDENTIFICADOR DE OBJETO

Marca de codificação: 0x06

Certreq.exe nome: OBJECT_ID

A API de Registro de Certificado usa identificadores de objeto (OIDs) como um tipo de ponteiro universal para identificadores de algoritmo, atributos e outros elementos PKI. Normalmente, os OIDs são apresentados em uma cadeia de caracteres decimal pontilhada, como "2.16.840.1.101.3.4.1.42". Os elementos individuais na cadeia de caracteres, separados por períodos, representam os arcos e folhas em uma árvore de autoridade de registro que identifica exclusivamente o objeto e a organização que o registrou. Por exemplo, o OID anterior pode ser expandido para a organização (1) gov(101) csor(3) nistAlgorithms(4) aesAlgs(1) com .42 acrescentado para identificar exclusivamente o algoritmo de modo CBC (encadeamento de bloco de criptografia AES) de 256 bits.

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

CADEIA DE CARACTERES OCTET

Marca de codificação: 0x04

Certreq.exe nome: OCTET_STRING

Uma cadeia de caracteres de octeto é uma matriz de bytes arbitrariamente grande. Ao contrário do tipo DE CADEIA DE CARACTERES BIT , no entanto, bits e bytes específicos na cadeia de caracteres não podem ser atribuídos nomes. A palavra octeto destina-se a ser uma maneira independente de plataforma de se referir a uma palavra de memória. No contexto da API de Registro de Certificado, octeto e byte são intercambiáveis.

---------------------------------------------------------------------
-- 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 de tipos ASN.1

Distinguished Encoding Rules

Codificação DER de tipos ASN.1