CryptDecryptMessage-Funktion (wincrypt.h)
Die CryptDecryptMessage-Funktiondecodiert und entschlüsselt eine Nachricht.
Syntax
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
);
Parameter
[in] pDecryptPara
Ein Zeiger auf eine CRYPT_DECRYPT_MESSAGE_PARA-Struktur , die Entschlüsselungsparameter enthält.
[in] pbEncryptedBlob
Ein Zeiger auf einen Puffer, der die codierte und verschlüsselte Nachricht enthält, die entschlüsselt werden soll.
[in] cbEncryptedBlob
Die Größe der codierten und verschlüsselten Nachricht in Bytes.
[out, optional] pbDecrypted
Ein Zeiger auf einen Puffer, der die entschlüsselte Nachricht empfängt.
Um die Größe dieser Informationen für die Speicherbelegung festzulegen, kann dieser Parameter NULL sein. Eine entschlüsselte Nachricht wird nicht zurückgegeben, wenn dieser Parameter NULL ist. Weitere Informationen finden Sie unter Abrufen von Daten mit unbekannter Länge.
[in, out, optional] pcbDecrypted
Ein Zeiger auf ein DWORD , der die Größe des Puffers in Bytes angibt, auf den der parameter pbDecrypted verweist. Wenn die Funktion zurückgibt, enthält diese Variable die Größe der entschlüsselten Nachricht in Byte, die in pbDecrypted kopiert wurde.
[out, optional] ppXchgCert
Ein Zeiger auf eine CERT_CONTEXT Struktur eines Zertifikats , das dem privaten Austauschschlüssel entspricht, der zum Entschlüsseln der Nachricht erforderlich ist. Legen Sie diesen Parameter auf NULL fest, um anzugeben, dass die Funktion den zum Entschlüsseln verwendeten Zertifikatkontext nicht zurückgeben soll.
Rückgabewert
Wenn die Funktion erfolgreich ist, gibt die Funktion ungleich null (TRUE) zurück.
Wenn die Funktion fehlschlägt, gibt sie null (FALSE) zurück. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten.
Rückgabecode | Beschreibung |
---|---|
|
Wenn der vom pbDecrypted-Parameter angegebene Puffer nicht groß genug ist, um die zurückgegebenen Daten zu speichern, legt die Funktion den ERROR_MORE_DATA Code fest und speichert die erforderliche Puffergröße in Bytes in der Variablen, auf die von pcbDecrypted verwiesen wird. |
|
Ungültige Nachrichten - und Zertifikatcodierungstypen. Derzeit werden nur PKCS_7_ASN_ENCODING und X509_ASN_ENCODING_TYPE unterstützt. Ungültige cbSize in *pDecryptPara. |
|
Keine umhüllte kryptografische Nachricht. |
|
Die Nachricht wurde mit einem unbekannten oder nicht unterstützten Algorithmus verschlüsselt. |
|
Es wurde kein Zertifikat gefunden, das über eine Private Key-Eigenschaft verfügt, die für die Entschlüsselung verwendet werden kann. |
Wenn die Funktion fehlschlägt, gibt GetLastError möglicherweise einen ASN.1-Codierungs-/Decodierungsfehler ( Abstract Syntax Notation One ) zurück. Informationen zu diesen Fehlern finden Sie unter ASN.1-Rückgabewerte für Codierung/Decodierung.
Hinweise
Wenn NULL für pbDecrypted übergeben wird und pcbDecrypted nicht NULL ist, wird NULL für die in ppXchgCert übergebene Adresse zurückgegeben. Andernfalls wird ein Zeiger auf eine CERT_CONTEXT zurückgegeben. Bei einer erfolgreich entschlüsselten Nachricht verweist dieser Zeiger auf eine CERT_CONTEXT auf den Zertifikatkontext , der zum Entschlüsseln der Nachricht verwendet wird. Sie muss durch Aufrufen von CertFreeCertificateContext freigegeben werden. Wenn die Funktion fehlschlägt, wird der Wert bei ppXchgCert auf NULL festgelegt.
Beispiele
Ein Beispiel, das diese Funktion verwendet, finden Sie unter Beispiel-C-Programm: Verwenden von CryptEncryptMessage und CryptDecryptMessage.
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | wincrypt.h |
Bibliothek | Crypt32.lib |
DLL | Crypt32.dll |