Share via


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.

Hinweis Bei der Verarbeitung der im pbDecrypted-Puffer zurückgegebenen Daten müssen Anwendungen die tatsächliche Größe der zurückgegebenen Daten verwenden. Die tatsächliche Größe kann etwas kleiner sein als die Größe des Puffers, der bei der Eingabe in pcbDecrypted angegeben ist. Bei der Eingabe werden Puffergrößen in der Regel groß genug angegeben, um sicherzustellen, dass die größtmöglichen Ausgabedaten in den Puffer passen. Bei der Ausgabe wird das DWORD auf die tatsächliche Größe der daten aktualisiert, die in den Puffer kopiert wurden.
 

[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.

Hinweis Fehler von Aufrufen von CryptImportKey und CryptDecrypt können an diese Funktion weitergegeben werden.
 
Die GetLastError-Funktion gibt die folgenden Fehlercodes am häufigsten zurück.
Rückgabecode Beschreibung
ERROR_MORE_DATA
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.
E_INVALIDARG
Ungültige Nachrichten - und Zertifikatcodierungstypen. Derzeit werden nur PKCS_7_ASN_ENCODING und X509_ASN_ENCODING_TYPE unterstützt. Ungültige cbSize in *pDecryptPara.
CRYPT_E_UNEXPECTED_MSG_TYPE
Keine umhüllte kryptografische Nachricht.
NTE_BAD_ALGID
Die Nachricht wurde mit einem unbekannten oder nicht unterstützten Algorithmus verschlüsselt.
CRYPT_E_NO_DECRYPT_CERT
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

Weitere Informationen

CryptDecryptAndVerifyMessageSignature

Vereinfachte Nachrichtenfunktionen