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.
[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.
Codice restituito | Descrizione |
---|---|
|
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 |