Compartilhar via


Decodificação de dados assinados

O processo geral a seguir decodifica um tipo de dados assinado .

Para decodificar uma mensagem assinada

  1. Obtenha um ponteiro para o BLOB codificado.
  2. Chame CryptMsgOpenToDecode, passando os argumentos necessários.
  3. Chame CryptMsgUpdate uma vez, passando o identificador recuperado na etapa 2 e um ponteiro para os dados que devem ser decodificados. Isso faz com que as ações apropriadas sejam executadas na mensagem, dependendo do tipo de mensagem.
  4. Chame CryptMsgGetParam, passando o identificador recuperado na etapa 2 e os tipos de parâmetro apropriados para acessar os dados decodificados. Por exemplo, passe CMSG_CONTENT_PARAM para obter um ponteiro para o conteúdo decodificado.

O processo geral a seguir verifica a assinatura de uma mensagem assinada decodificada.

Para verificar a assinatura de uma mensagem assinada decodificada

  1. Chame CryptMsgGetParam, passando o identificador de mensagem e CMSG_SIGNER_CERT_INFO_PARAM para obter o CERT_INFO do signatário da mensagem.
  2. Chame CertOpenStore para abrir um repositório temporário inicializado com os certificados da mensagem.
  3. Chame CertGetSubjectCertificateFromStore para obter o CERT_INFO do signatário dos certificados incluídos na mensagem.
  4. Chame CryptMsgControl, passando CMSG_CTRL_VERIFY_SIGNATURE para verificar as assinaturas.
  5. Chame CryptMsgClose para fechar a mensagem.

O resultado desses procedimentos é que a assinatura é verificada e um ponteiro é recuperado para o conteúdo de mensagem decodificado obtido na etapa 4 do procedimento para decodificar uma mensagem assinada.

Para obter detalhes de codificação C, consulte Exemplo de Programa C: Assinatura, Codificação, Decodificação e Verificação de uma Mensagem.