Função CryptSignAndEncryptMessage (wincrypt.h)

A função CryptSignAndEncryptMessage cria um hash do conteúdo especificado, assina o hash, criptografa o conteúdo, faz hashes do conteúdo criptografado e do hash assinado e codifica o conteúdo criptografado e o hash assinado. O resultado é o mesmo que se o hash fosse assinado pela primeira vez e, em seguida, criptografado.

Sintaxe

BOOL CryptSignAndEncryptMessage(
  [in]      PCRYPT_SIGN_MESSAGE_PARA    pSignPara,
  [in]      PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
  [in]      DWORD                       cRecipientCert,
  [in]      PCCERT_CONTEXT []           rgpRecipientCert,
  [in]      const BYTE                  *pbToBeSignedAndEncrypted,
  [in]      DWORD                       cbToBeSignedAndEncrypted,
  [out]     BYTE                        *pbSignedAndEncryptedBlob,
  [in, out] DWORD                       *pcbSignedAndEncryptedBlob
);

Parâmetros

[in] pSignPara

Um ponteiro para uma estrutura CRYPT_SIGN_MESSAGE_PARA que contém os parâmetros de assinatura.

[in] pEncryptPara

Um ponteiro para uma estrutura CRYPT_ENCRYPT_MESSAGE_PARA que contém parâmetros de criptografia.

[in] cRecipientCert

Número de elementos de matriz em rgpRecipientCert.

[in] rgpRecipientCert

Matriz de ponteiros para estruturas de CERT_CONTEXT . Cada estrutura é o certificado de um destinatário pretendido da mensagem.

[in] pbToBeSignedAndEncrypted

Um ponteiro para um buffer que contém o conteúdo a ser assinado e criptografado.

[in] cbToBeSignedAndEncrypted

O tamanho, em bytes, do buffer pbToBeSignedAndEncrypted .

[out] pbSignedAndEncryptedBlob

Um ponteiro para um buffer para receber a mensagem criptografada e codificada.

Esse parâmetro pode ser NULL para definir o tamanho dessas informações para fins de alocação de memória. Para obter mais informações, consulte Recuperando dados de comprimento desconhecido.

[in, out] pcbSignedAndEncryptedBlob

Um ponteiro para DWORD especificando o tamanho, em bytes, do buffer apontado por pbSignedAndEncryptedBlob. Quando a função retorna, essa variável contém o tamanho, em bytes, da mensagem assinada e criptografada copiada para *pbSignedAndEncryptedBlob.

Nota Ao processar os dados retornados, os aplicativos devem usar o tamanho real dos dados retornados. O tamanho real pode ser ligeiramente menor do que o tamanho do buffer especificado na entrada. (Na entrada, os tamanhos de buffer geralmente são especificados grandes o suficiente para garantir que os maiores dados de saída possíveis caibam no buffer.) Na saída, a variável apontada por esse parâmetro é atualizada para refletir o tamanho real dos dados copiados para o buffer.
 

Retornar valor

Se a função for bem-sucedida, o valor retornado será diferente de zero (TRUE).

Se a função falhar, o valor retornado será zero (FALSE).

Para obter informações de erro estendidas, chame GetLastError.

O exemplo a seguir lista o código de erro mais comumente retornado pela função GetLastError .

Código de retorno Descrição
ERROR_MORE_DATA
Se o buffer especificado pelo parâmetro pbSignedAndEncryptedBlob não for grande o suficiente para manter os dados retornados, a função definirá o código ERROR_MORE_DATA e armazenará o tamanho do buffer necessário, em bytes, na variável apontada por pcbSignedAndEncryptedBlob.
 
Nota Erros das funções chamadas CryptSignMessage e CryptEncryptMessage podem ser propagados para essa função.
 

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho wincrypt.h
Biblioteca Crypt32.lib
DLL Crypt32.dll

Confira também

CryptDecryptAndVerifyMessageSignature

CryptSignMessage

Funções de mensagem simplificadas