Condividi tramite


Funzione CryptHashMessage (wincrypt.h)

La funzione CryptHashMessage crea un hash del messaggio.

Sintassi

BOOL CryptHashMessage(
  [in]                PCRYPT_HASH_MESSAGE_PARA pHashPara,
  [in]                BOOL                     fDetachedHash,
  [in]                DWORD                    cToBeHashed,
  [in]                const BYTE * []          rgpbToBeHashed,
  [in]                DWORD []                 rgcbToBeHashed,
  [out]               BYTE                     *pbHashedBlob,
  [in, out]           DWORD                    *pcbHashedBlob,
  [out, optional]     BYTE                     *pbComputedHash,
  [in, out, optional] DWORD                    *pcbComputedHash
);

Parametri

[in] pHashPara

Puntatore a una struttura CRYPT_HASH_MESSAGE_PARA contenente i parametri hash.

[in] fDetachedHash

Se questo parametro è impostato su TRUE, viene codificato solo pbComputedHash in pbHashedBlob. In caso contrario, sia rgpbToBeHashed che pbComputedHash sono codificati.

[in] cToBeHashed

Numero di elementi di matrice in rgpbToBeHashed e rgcbToBeHashed. Questo parametro può essere solo uno a meno che fDetachedHash sia impostato su TRUE.

[in] rgpbToBeHashed

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

[in] rgcbToBeHashed

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

[out] pbHashedBlob

Puntatore a un buffer per ricevere il messaggio hash codificato per la trasmissione.

Questo parametro può essere NULL se il messaggio hash non è necessario per l'elaborazione aggiuntiva o per impostare le dimensioni del messaggio hash per scopi di allocazione della memoria. Un messaggio hash non verrà restituito se questo parametro è NULL. Per altre informazioni, vedere Recupero dei dati di lunghezza sconosciuta.

[in, out] pcbHashedBlob

Puntatore a un DWORD che specifica le dimensioni, in byte, del buffer a cui punta il parametro pbHashedBlob . Quando la funzione restituisce, questa variabile contiene le dimensioni, in byte, del messaggio decrittografato copiato in pbHashedBlob. Questo parametro deve essere l'indirizzo di una DWORD e non NULL o la lunghezza del buffer non verrà restituita.

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 input, le dimensioni del buffer vengono in genere specificate abbastanza grandi per garantire che i dati di output più grandi possibili si adattano al buffer. Nell'output la variabile a cui punta questo parametro viene aggiornata per riflettere le dimensioni effettive dei dati copiati nel buffer.
 

[out, optional] pbComputedHash

Puntatore a un buffer per ricevere il valore hash appena creato. Questo parametro può essere NULL se l'hash appena creato non è necessario per l'elaborazione aggiuntiva o per impostare le dimensioni dell'hash a scopo di allocazione di memoria. Per altre informazioni, vedere Recupero dei dati di lunghezza sconosciuta.

[in, out, optional] pcbComputedHash

Puntatore a un DWORD che specifica le dimensioni, in byte, del buffer a cui punta il parametro pbComputedHash . Quando la funzione restituisce, questa DWORD contiene le dimensioni, in byte, dell'hash appena creato copiato in pbComputedHash.

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 input, le dimensioni del buffer vengono in genere specificate abbastanza grandi per garantire che i dati di output più grandi possibili si adattano 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, la funzione restituisce non zero (TRUE).

Se la funzione ha esito negativo, restituisce zero (FALSE). Per informazioni sull'errore estese, chiamare GetLastError.

Nota Gli errori delle funzioni denominate CryptCreateHash, CryptHashData e CryptGetHashParam potrebbero essere propagati a questa funzione.
 
La funzione GetLastError restituisce più spesso i codici di errore seguenti.
Codice restituito Descrizione
E_INVALIDARG
Il tipo di codifica del messaggio non è valido. Attualmente è supportato solo PKCS_7_ASN_ENCODING. CbSize in *pHashPara non è valido.
ERROR_MORE_DATA
Se il buffer specificato dal parametro pbHashedBlob non è sufficiente per contenere i dati restituiti, la funzione imposta il codice di ERROR_MORE_DATA e archivia le dimensioni del buffer necessarie, in byte, nella variabile puntata da pbHashedBlob.
 

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

CryptVerifyDetachedMessageHash

CryptVerifyMessageHash

Funzioni di messaggio semplificate