Funzione CryptSignMessage (wincrypt.h)

La funzione CryptSignMessage crea un hash del contenuto specificato, firma l'hash e quindi codifica sia il contenuto del messaggio originale che l'hash firmato.

Sintassi

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
);

Parametri

[in] pSignPara

Puntatore alla struttura CRYPT_SIGN_MESSAGE_PARA contenente i parametri di firma.

[in] fDetachedSignature

TRUE se si tratta di una firma scollegata. In caso contrario, FALSE. Se questo parametro è impostato su TRUE, viene codificato solo l'hash firmato in pbSignedBlob. In caso contrario, sia rgpbToBeSigned che l'hash firmato vengono codificati.

[in] cToBeSigned

Conteggio del numero di elementi della matrice in rgpbToBeSigned e rgcbToBeSigned. Questo parametro deve essere impostato su uno a meno che fDetachedSignature non sia impostato su TRUE.

[in] rgpbToBeSigned

Matrice di puntatori ai buffer che contengono il contenuto da firmare.

[in] rgcbToBeSigned

Matrice di dimensioni, in byte, dei buffer di contenuto a cui punta in rgpbToBeSigned.

[out] pbSignedBlob

Puntatore a un buffer per ricevere l'hash con segno codificato, se fDetachedSignature è TRUE o per entrambi il contenuto codificato e l'hash firmato se fDetachedSignature è FALSE.

Questo parametro può essere NULL per impostare le dimensioni di queste informazioni per scopi di allocazione della memoria. Per altre informazioni, vedere Recupero dei dati di lunghezza sconosciuta.

[in, out] pcbSignedBlob

Puntatore a un DWORD che specifica le dimensioni, in byte, del buffer pbSignedBlob . Quando la funzione restituisce, questa variabile contiene le dimensioni, in byte, del messaggio firmato e codificato.

Nota Quando si elaborano i dati restituiti, le applicazioni devono usare le dimensioni effettive dei dati restituiti. Le dimensioni effettive possono essere leggermente inferiori rispetto alle dimensioni del buffer specificato nell'input. In base all'input, le dimensioni del buffer vengono in genere specificate abbastanza grandi per garantire che i dati di output più grandi siano adatti al buffer. Nell'output la variabile a cui punta questo parametro viene aggiornata per riflettere le dimensioni effettive dei dati copiati nel buffer.
 

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero (TRUE).

Se la funzione ha esito negativo, il valore restituito è zero (FALSE).

Per informazioni sull'errore estese, chiamare GetLastError.

Di seguito sono elencati i codici di errore più comunemente restituiti dalla funzione GetLastError .

Codice restituito Descrizione
ERROR_MORE_DATA
Se il buffer specificato dal parametro pbSignedBlob non è sufficiente per contenere i dati restituiti, la funzione imposta il codice ERROR_MORE_DATA e archivia le dimensioni del buffer necessarie, in byte, nella variabile puntata da pcbSignedBlob.
E_INVALIDARG
Il tipo di codifica del messaggio non è valido. Attualmente è supportato solo PKCS_7_ASN_ENCODING. CbSize in *pSignPara non è valido.
CRYPT_E_NO_KEY_PROPERTY
PSigningCert in *pSignPara non ha una proprietà CERT_KEY_PROV_INFO_PROP_ID o CERT_KEY_CONTEXT_PROP_ID.
 
Nota Gli errori delle funzioni denominate CryptCreateHash, CryptHashData e CryptSignHash potrebbero essere propagati a questa funzione.
 
Se la funzione ha esito negativo, GetLastError potrebbe restituire un errore di codifica astratta Notation One (ASN.1). Per informazioni su questi errori, vedere Codifica ASN.1/Decodifica dei valori restituiti.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wincrypt.h
Libreria Crypt32.lib
DLL Crypt32.dll

Vedi anche

CryptSignAndEncryptMessage

CryptVerifyMessageSignature

Funzioni di messaggio semplificate