Decodificação de dados assinados
O processo geral a seguir decodifica um tipo de dados assinado .
Para decodificar uma mensagem assinada
- Obtenha um ponteiro para o BLOB codificado.
- Chame CryptMsgOpenToDecode, passando os argumentos necessários.
- 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.
- 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
- Chame CryptMsgGetParam, passando o identificador de mensagem e CMSG_SIGNER_CERT_INFO_PARAM para obter o CERT_INFO do signatário da mensagem.
- Chame CertOpenStore para abrir um repositório temporário inicializado com os certificados da mensagem.
- Chame CertGetSubjectCertificateFromStore para obter o CERT_INFO do signatário dos certificados incluídos na mensagem.
- Chame CryptMsgControl, passando CMSG_CTRL_VERIFY_SIGNATURE para verificar as assinaturas.
- 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.