Compartilhar via


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.

mapa de inicialização para uma chamada para cryptsignmessage

Para assinar dados usando CryptSignMessage

  1. Obtenha um ponteiro para os dados que devem ser assinados.
  2. Atribua o ponteiro aos dados para indexar zero de uma matriz de "dados a serem assinados".
  3. Obtenha um identificador para o provedor criptográfico.
  4. Abra um repositório de certificados que contém o certificado do signatário.
  5. Obtenha um endereço para o certificado do signatário.
  6. Atribua o endereço do certificado ao índice zero da matriz MsgCert .
  7. Atribua os endereços de quaisquer outros certificados a serem incluídos com a mensagem à matriz MsgCert .
  8. Inicialize a estrutura CRYPT_ALGORITHM_IDENTIFIER , inicializando o membro pszObjId para o algoritmo de hash desejado e os outros membros conforme apropriado.
  9. 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.
  10. 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.