Decodificando dados assinados
O processo geral a seguir decodifica dados do tipo 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 'handle' recuperado na etapa 2 e um ponteiro para os dados que devem ser descodificados. Isso faz com que as ações apropriadas sejam tomadas na mensagem, dependendo do tipo de mensagem.
- Chame CryptMsgGetParam, passando o identificador recuperado na etapa 2 e os tipos de parâmetros 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 decodificada e assinada.
Para verificar a assinatura de uma mensagem decodificada e assinada
- Chame CryptMsgGetParam, passando o identificador da mensagem e CMSG_SIGNER_CERT_INFO_PARAM para obter a CERT_INFO do assinante da mensagem.
- Chame CertOpenStore para abrir um armazenamento temporário que é inicializado com os certificados da mensagem.
- Chame CertGetSubjectCertificateFromStore para obter do signatário a CERT_INFO dos certificados incluídos na mensagem.
- Chame CryptMsgControl, utilizando 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 da mensagem decodificada 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.