CryptDecryptAndVerifyMessageSignature-Funktion (wincrypt.h)
Die CryptDecryptAndVerifyMessageSignature-Funktion entschlüsselt eine Nachricht und überprüft deren Signatur.
Syntax
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
);
Parameter
[in] pDecryptPara
Ein Zeiger auf eine CRYPT_DECRYPT_MESSAGE_PARA-Struktur , die Entschlüsselungsparameter enthält.
[in] pVerifyPara
Ein Zeiger auf eine CRYPT_VERIFY_MESSAGE_PARA-Struktur , die Überprüfungsparameter enthält.
[in] dwSignerIndex
Identifiziert einen bestimmten Signierer der Nachricht. Eine Nachricht kann von mehr als einem Signierer signiert werden, und diese Funktion kann mehrmals aufgerufen werden, um diesen Parameter zu ändern, um nach mehreren Signierern zu suchen. Sie ist für den ersten Signierer auf 0 (null) festgelegt. Wenn die Funktion FALSE zurückgibt und GetLastError CRYPT_E_NO_SIGNER zurückgibt, hat der vorherige Aufruf den letzten Signierer der Nachricht empfangen.
[in] pbEncryptedBlob
Ein Zeiger auf die signierte, codierte und verschlüsselte Nachricht, die entschlüsselt und überprüft werden soll.
[in] cbEncryptedBlob
Die Größe der verschlüsselten Nachricht in Bytes.
[out, optional] pbDecrypted
Ein Zeiger auf einen Puffer zum Empfangen der entschlüsselten Nachricht.
Dieser Parameter kann NULL sein, wenn die entschlüsselte Nachricht nicht erforderlich ist oder um die Größe der entschlüsselten Nachricht zu Speicherbelegungszwecken festzulegen. 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 sie die Größe der entschlüsselten Nachricht, die in pbDecrypted kopiert wurde.
[out, optional] ppXchgCert
Ein Zeiger auf eine CERT_CONTEXT Struktur des Zertifikats , das dem privaten Austauschschlüssel entspricht, der zum Entschlüsseln der Nachricht erforderlich ist.
[out, optional] ppSignerCert
Ein Zeiger auf eine CERT_CONTEXT Struktur des Zertifikats des Signierers.
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. |
Hinweise
Bei einer erfolgreich entschlüsselten und überprüften Nachricht werden die Zertifikatkontextzeiger aktualisiert, auf die von ppXchgCert und ppSignerCert verwiesen wird. Sie müssen durch Aufrufen von CertFreeCertificateContext freigegeben werden. Wenn die Funktion fehlschlägt, werden sie auf NULL festgelegt.
Legen Sie die Parameter ppXchgCert und ppSignerCert auf NULL fest, um anzugeben, dass der Aufrufer nicht am Exchange-Zertifikat oder am Signaturzertifikatkontext interessiert ist.
Beispiele
Ein Beispiel, das diese Funktion verwendet, finden Sie unter Beispiel-C-Programm: Senden und Empfangen einer signierten und verschlüsselten Nachricht.
Anforderungen
Anforderung | Wert |
---|---|
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 |