Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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
- Crie uma cadeia de caracteres contendo o nome do emissor a ser usado.
- 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.
- Crie uma matriz de CERT_RDN estruturas, uma das quais tem as informações sobre a matriz de CERT_RDN_ATTR estruturas recentemente inicializada.
- Crie uma estrutura CERT_NAME_INFO que tenha um ponteiro para a matriz de estruturas CERT_RDN que acabou de criar.
- 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.
- Aloque memória para o BLOB codificado de saída.
- Chame CryptEncodeObject novamente, passando-lhe as mesmas informações, mas agora passando-lhe o endereço da memória recém-alocada.
- 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á.
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
- Crie e inicialize uma estrutura de informações de extensão — por exemplo, é uma estrutura CERT_BASIC_CONSTRAINTS_INFO.
- Chame CryptEncodeObject, passando-lhe o endereço da estrutura recém-criada, para obter o tamanho do BLOB codificado de saída.
- Aloque memória para o BLOB codificado de saída.
- Chame CryptEncodeObject novamente, passando as mesmas informações, exceto agora passe o endereço da memória alocada.
- Crie uma matriz de estruturas CERT_EXTENSION.
- 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.
- Inicialize o rgExtension membro da estrutura CERT_INFO para apontar para a matriz de CERT_EXTENSION estruturas.