Funzione CryptDecryptAndVerifyMessageSignature (wincrypt.h)

La funzione CryptDecryptAndVerifyMessageSignature decrittografa un messaggio e ne verifica la firma.

Sintassi

BOOL CryptDecryptAndVerifyMessageSignature(
  [in]                PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
  [in]                PCRYPT_VERIFY_MESSAGE_PARA  pVerifyPara,
  [in]                DWORD                       dwSignerIndex,
  [in]                const BYTE                  *pbEncryptedBlob,
  [in]                DWORD                       cbEncryptedBlob,
  [out, optional]     BYTE                        *pbDecrypted,
  [in, out, optional] DWORD                       *pcbDecrypted,
  [out, optional]     PCCERT_CONTEXT              *ppXchgCert,
  [out, optional]     PCCERT_CONTEXT              *ppSignerCert
);

Parametri

[in] pDecryptPara

Puntatore a una struttura CRYPT_DECRYPT_MESSAGE_PARA che contiene parametri di decrittografia.

[in] pVerifyPara

Puntatore a una struttura CRYPT_VERIFY_MESSAGE_PARA che contiene parametri di verifica.

[in] dwSignerIndex

Identifica un particolare firmatario del messaggio. Un messaggio può essere firmato da più firmatari e questa funzione può essere chiamata più volte modificando questo parametro per verificare la presenza di più firmatari. È impostato su zero per il primo firmatario. Se la funzione restituisce FALSE e GetLastError restituisce CRYPT_E_NO_SIGNER, la chiamata precedente ha ricevuto l'ultimo firmatario del messaggio.

[in] pbEncryptedBlob

Puntatore al messaggio firmato, codificato e crittografato da decrittografare e verificare.

[in] cbEncryptedBlob

Dimensione, in byte, del messaggio crittografato.

[out, optional] pbDecrypted

Puntatore a un buffer per ricevere il messaggio decrittografato.

Questo parametro può essere NULL se il messaggio decrittografato non è necessario o per impostare le dimensioni del messaggio decrittografato a scopo di allocazione della memoria. Se questo parametro è NULL, non verrà restituito un messaggio decrittografato. Per altre informazioni, vedere Recupero di dati di lunghezza sconosciuta.

[in, out, optional] pcbDecrypted

Puntatore a un DWORD che specifica le dimensioni, in byte, del buffer a cui punta il parametro pbDecrypted . Quando la funzione viene restituita, contiene le dimensioni del messaggio decrittografato copiato in pbDecrypted.

Nota Quando si elaborano i dati restituiti nel buffer pbDecrypted , le applicazioni devono usare le dimensioni effettive dei dati restituiti. Le dimensioni effettive possono essere leggermente inferiori alle dimensioni del buffer specificato in pcbDecrypted all'input. Nell'output, la variabile a cui punta questo parametro viene impostata in modo da riflettere le dimensioni effettive dei dati copiati nel buffer.
 

[out, optional] ppXchgCert

Puntatore a una struttura CERT_CONTEXT del certificato che corrisponde alla chiave di scambio privata necessaria per decrittografare il messaggio.

[out, optional] ppSignerCert

Puntatore a una struttura CERT_CONTEXT del certificato del firmatario.

Valore restituito

Se la funzione ha esito positivo, la funzione restituisce un valore diverso da zero (TRUE).

Se la funzione non riesce, restituisce zero (FALSE). Per informazioni sugli errori estesi, chiamare GetLastError.

Nota Gli errori delle funzioni chiamate CryptDecryptMessage e CryptVerifyMessageSignature potrebbero essere propagati a questa funzione.
 
La funzione GetLastError restituisce il codice di errore seguente più spesso.
Codice restituito Descrizione
ERROR_MORE_DATA
Se il buffer specificato dal parametro pbDecrypted non è sufficientemente grande da contenere i dati restituiti, la funzione imposta il codice di ERROR_MORE_DATA e archivia le dimensioni del buffer necessarie, in byte, nella variabile a cui punta pcbDecrypted.

Commenti

Per un messaggio decrittografato e verificato correttamente, i puntatori al contesto del certificato a cui punta ppXchgCert e ppSignerCert vengono aggiornati. Devono essere liberati chiamando CertFreeCertificateContext. Se la funzione ha esito negativo, vengono impostate su NULL.

Per indicare che il chiamante non è interessato al certificato di scambio o al contesto del certificato del firmatario, impostare i parametri ppXchgCert e ppSignerCert su NULL.

Esempio

Per un esempio che usa questa funzione, vedere Esempio di programma C: invio e ricezione di un messaggio firmato e crittografato.

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

CryptDecryptMessage

CryptSignAndEncryptMessage

Funzioni di messaggio semplificate