Compartilhar via


Função CryptSignMessage (wincrypt.h)

A função CryptSignMessage cria um hash do conteúdo especificado, assina o hash e codifica o conteúdo da mensagem original e o hash assinado.

Sintaxe

BOOL CryptSignMessage(
  [in]      PCRYPT_SIGN_MESSAGE_PARA pSignPara,
  [in]      BOOL                     fDetachedSignature,
  [in]      DWORD                    cToBeSigned,
  [in]      const BYTE * []          rgpbToBeSigned,
  [in]      DWORD []                 rgcbToBeSigned,
  [out]     BYTE                     *pbSignedBlob,
  [in, out] DWORD                    *pcbSignedBlob
);

Parâmetros

[in] pSignPara

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

[in] fDetachedSignature

TRUE se for para ser uma assinatura desanexada. Caso contrário, FALSE. Se esse parâmetro for definido como TRUE, somente o hash assinado será codificado em pbSignedBlob. Caso contrário, rgpbToBeSigned e o hash assinado serão codificados.

[in] cToBeSigned

Contagem do número de elementos de matriz em rgpbToBeSigned e rgcbToBeSigned. Esse parâmetro deve ser definido como um, a menos que fDetachedSignature esteja definido como TRUE.

[in] rgpbToBeSigned

Matriz de ponteiros para buffers que contêm o conteúdo a ser assinado.

[in] rgcbToBeSigned

Matriz de tamanhos, em bytes, dos buffers de conteúdo apontados em rgpbToBeSigned.

[out] pbSignedBlob

Um ponteiro para um buffer para receber o hash assinado codificado, se fDetachedSignature for TRUE ou para o conteúdo codificado e o hash assinado se fDetachedSignature for FALSE.

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] pcbSignedBlob

Um ponteiro para um DWORD que especifica o tamanho, em bytes, do buffer pbSignedBlob . Quando a função retorna, essa variável contém o tamanho, em bytes, da mensagem assinada e codificada.

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 os códigos de erro mais comumente retornados pela função GetLastError .

Código de retorno Descrição
ERROR_MORE_DATA
Se o buffer especificado pelo parâmetro pbSignedBlob 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 pcbSignedBlob.
E_INVALIDARG
O tipo de codificação de mensagem não é válido. Atualmente, há suporte apenas para PKCS_7_ASN_ENCODING. O cbSize em *pSignPara não é válido.
CRYPT_E_NO_KEY_PROPERTY
O pSigningCert em *pSignPara não tem uma propriedade CERT_KEY_PROV_INFO_PROP_ID ou CERT_KEY_CONTEXT_PROP_ID.
 
Nota Erros das funções chamadas CryptCreateHash, CryptHashData e CryptSignHash podem ser propagados para essa função.
 
Se a função falhar, GetLastError poderá retornar um erro de codificação/decodificação ASN.1 ( Abstract Syntax Notation One ). Para obter informações sobre esses erros, consulte Valores retornados de codificação/decodificação asn.1.

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

CryptSignAndEncryptMessage

CryptVerifyMessageSignature

Funções de mensagem simplificadas