Procedimento para assinar dados
Uma única função, CryptSignMessage, executa todas as tarefas listadas em Criando uma mensagem assinada. No entanto, a inicialização de estruturas e outros dados ainda é necessária. A ilustração a seguir mostra a relação entre os parâmetros de função que apontam para estruturas ou matrizes e seus dados inicializados. A ilustração mostra apenas os parâmetros de função e os membros da estrutura derivados de outras estruturas ou funções. O restante dos parâmetros são inicializações simples.
Para assinar dados usando CryptSignMessage
- Obtenha um ponteiro para os dados que devem ser assinados.
- Atribua o ponteiro aos dados para indexar zero de uma matriz de "dados a serem assinados".
- Obtenha um identificador para o provedor criptográfico.
- Abra um repositório de certificados que contém o certificado do signatário.
- Obtenha um endereço para o certificado do signatário.
- Atribua o endereço do certificado ao índice zero da matriz MsgCert .
- Atribua os endereços de quaisquer outros certificados a serem incluídos com a mensagem à matriz MsgCert .
- Inicialize a estrutura CRYPT_ALGORITHM_IDENTIFIER , inicializando o membro pszObjId para o algoritmo de hash desejado e os outros membros conforme apropriado.
- Inicialize a estrutura CRYPT_SIGN_MESSAGE_PARA , inicializando o membro pSigningCert para o endereço do certificado do signatário, o membro da matriz MsgCert para o endereço dos certificados do signatário e de outros, o membro HashAlgorithm para o endereço da estrutura CRYPT_ALGORITHM_IDENTIFIER e os outros membros conforme apropriado.
- Chame a função CryptSignMessage , passando a estrutura CRYPT_SIGN_MESSAGE_PARA para o parâmetro pSignPara , o endereço da matriz "dados a serem assinados" para o parâmetro rgpbToBeSigned , um endereço para o parâmetro de saída pbSignedBlob e valores para os outros parâmetros conforme apropriado.