Partilhar via


Codificando uma estrutura CERT_INFO

O processo de codificação é o inverso do processo de decodificação descrito em Decoding a CERT_INFO Structure. Por exemplo, o procedimento a seguir adicionaria um Issuer codificado a uma estrutura CERT_INFO. Veja também a ilustração que segue o procedimento.

Para adicionar um Emissor codificado a uma estrutura de CERT_INFO

  1. Crie uma cadeia de caracteres contendo o nome do emissor a ser usado.
  2. Crie uma matriz de estruturas CERT_RDN_ATTR, que serão inicializadas para conter as informações adequadas sobre a cadeia de caracteres de nome do emissor recém-criada.
  3. Crie uma matriz de CERT_RDN estruturas, uma das quais tem as informações sobre a matriz de CERT_RDN_ATTR estruturas recentemente inicializada.
  4. Crie uma estrutura CERT_NAME_INFO que tenha um ponteiro para a matriz de estruturas CERT_RDN que acabou de criar.
  5. Chame CryptEncodeObject para obter o tamanho do BLOB codificado de saída, passando-lhe o endereço da estrutura CERT_NAME_INFO que criou há pouco.
  6. Aloque memória para o BLOB codificado de saída.
  7. Chame CryptEncodeObject novamente, passando-lhe as mesmas informações, mas agora passando-lhe o endereço da memória recém-alocada.
  8. Defina o membro Issuer.cbData da estrutura CERT_INFO para o tamanho retornado na etapa 5, e o membro Issuer.pbData para o endereço obtido na etapa 6. O emissor codificado BLOB agora está lá.

adicionar um emissor codificado a uma estrutura cert-info

Para inicializar e codificar algumas informações de extensão de certificado, use o procedimento a seguir. Veja também a ilustração que segue o procedimento.

Para adicionar informações de extensão codificadas a uma estrutura CERT_INFO

  1. Crie e inicialize uma estrutura de informações de extensão — por exemplo, é uma estrutura CERT_BASIC_CONSTRAINTS_INFO.
  2. Chame CryptEncodeObject, passando-lhe o endereço da estrutura recém-criada, para obter o tamanho do BLOB codificado de saída.
  3. Aloque memória para o BLOB codificado de saída.
  4. Chame CryptEncodeObject novamente, passando as mesmas informações, exceto agora passe o endereço da memória alocada.
  5. Crie uma matriz de estruturas CERT_EXTENSION.
  6. Inicialize uma das estruturas CERT_EXTENSION para que o pszObjId seja a cadeia de caracteres adequada para os dados contidos em Valuee que Value contenha o BLOB de dados criptografados que foi gerado da chamada para CryptEncodeObject.
  7. Inicialize o rgExtension membro da estrutura CERT_INFO para apontar para a matriz de CERT_EXTENSION estruturas.

adicionar informações de extensão codificadas a uma estrutura cert-info