Partilhar via


Procedimento para assinatura de 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 membros da estrutura que são derivados de outras estruturas ou funções. O resto dos parâmetros são inicializações diretas.

mapa de inicialização para uma chamada para CryptSignMessage

Para assinar dados usando CryptSignMessage

  1. Obtenha um ponteiro para os dados que serão assinados.
  2. Atribua o ponteiro dos dados ao índice zero de uma matriz de "dados a assinar".
  3. Obtenha um identificador para o provedor de criptografia.
  4. Abra um armazenamento de certificados que contenha 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 ao endereço do certificado do signatário, o membro da matriz MsgCert ao endereço dos certificados do signatário e de outros, o membro HashAlgorithm ao 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.