Funzione CryptDecryptMessage (wincrypt.h)
La funzione CryptDecryptMessagedecodifica e decrittografa un messaggio.
Sintassi
BOOL CryptDecryptMessage(
[in] PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
[in] const BYTE *pbEncryptedBlob,
[in] DWORD cbEncryptedBlob,
[out, optional] BYTE *pbDecrypted,
[in, out, optional] DWORD *pcbDecrypted,
[out, optional] PCCERT_CONTEXT *ppXchgCert
);
Parametri
[in] pDecryptPara
Puntatore a una struttura CRYPT_DECRYPT_MESSAGE_PARA che contiene parametri di decrittografia.
[in] pbEncryptedBlob
Puntatore a un buffer che contiene il messaggio codificato e crittografato da decrittografare.
[in] cbEncryptedBlob
Dimensioni, in byte, del messaggio codificato e crittografato.
[out, optional] pbDecrypted
Puntatore a un buffer che riceve il messaggio decrittografato.
Per impostare le dimensioni di queste informazioni per scopi di allocazione della memoria, questo parametro può essere NULL. Un messaggio decrittografato non verrà restituito se questo parametro è NULL. Per altre informazioni, vedere Recupero dei 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 restituisce, questa variabile contiene le dimensioni, in byte, del messaggio decrittografato copiato in pbDecrypted.
[out, optional] ppXchgCert
Puntatore a una struttura CERT_CONTEXT di un certificato che corrisponde alla chiave di scambio privata necessaria per decrittografare il messaggio. Per indicare che la funzione non deve restituire il contesto del certificato usato per decrittografare, impostare questo parametro su NULL.
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.
Codice restituito | Descrizione |
---|---|
|
Se il buffer specificato dal parametro pbDecrypted 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 pcbDecrypted. |
|
Tipi di codifica del messaggio e del certificato non validi. Attualmente sono supportati solo PKCS_7_ASN_ENCODING e X509_ASN_ENCODING_TYPE. CbSize non valido in *pDecryptPara. |
|
Non un messaggio crittografico in busto . |
|
Il messaggio è stato crittografato usando un algoritmo sconosciuto o non supportato. |
|
Non è stato trovato alcun certificato con una proprietà di chiave privata da usare per decrittografare. |
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.
Commenti
Quando NULL viene passato per pbDecrypted e pcbDecrypted non è NULL, NULL viene restituito per l'indirizzo passato in ppXchgCert; in caso contrario, viene restituito un puntatore a un CERT_CONTEXT. Per un messaggio decrittografato correttamente, questo puntatore a un CERT_CONTEXT punta al contesto del certificato usato per decrittografare il messaggio. Deve essere liberato chiamando CertFreeCertificateContext. Se la funzione ha esito negativo, il valore in ppXchgCert è impostato su NULL.
Esempio
Per un esempio che usa questa funzione, vedere Esempio di programma C: Uso di CryptEncryptMessage e CryptDecryptMessage.
Requisiti
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 |