CryptSignAndEncryptMessage-Funktion (wincrypt.h)
Die CryptSignAndEncryptMessage-Funktion erstellt einen Hash des angegebenen Inhalts, signiert den Hash, verschlüsselt den Inhalt, hashet den verschlüsselten Inhalt und den signierten Hash und codiert dann sowohl den verschlüsselten Inhalt als auch den signierten Hash. Das Ergebnis ist dasselbe, als würde der Hash zuerst signiert und dann verschlüsselt.
Syntax
BOOL CryptSignAndEncryptMessage(
[in] PCRYPT_SIGN_MESSAGE_PARA pSignPara,
[in] PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
[in] DWORD cRecipientCert,
[in] PCCERT_CONTEXT [] rgpRecipientCert,
[in] const BYTE *pbToBeSignedAndEncrypted,
[in] DWORD cbToBeSignedAndEncrypted,
[out] BYTE *pbSignedAndEncryptedBlob,
[in, out] DWORD *pcbSignedAndEncryptedBlob
);
Parameter
[in] pSignPara
Ein Zeiger auf eine CRYPT_SIGN_MESSAGE_PARA-Struktur , die die Signaturparameter enthält.
[in] pEncryptPara
Ein Zeiger auf eine CRYPT_ENCRYPT_MESSAGE_PARA-Struktur , die Verschlüsselungsparameter enthält.
[in] cRecipientCert
Anzahl der Arrayelemente in rgpRecipientCert.
[in] rgpRecipientCert
Array von Zeigern auf CERT_CONTEXT Strukturen. Jede Struktur ist das Zertifikat eines beabsichtigten Empfängers der Nachricht.
[in] pbToBeSignedAndEncrypted
Ein Zeiger auf einen Puffer, der den zu signierten und verschlüsselten Inhalt enthält.
[in] cbToBeSignedAndEncrypted
Die Größe des Puffers pbToBeSignedAndEncrypted in Bytes.
[out] pbSignedAndEncryptedBlob
Ein Zeiger auf einen Puffer zum Empfangen der verschlüsselten und codierten Nachricht.
Dieser Parameter kann NULL sein, um die Größe dieser Informationen für die Speicherbelegung festzulegen. Weitere Informationen finden Sie unter Abrufen von Daten mit unbekannter Länge.
[in, out] pcbSignedAndEncryptedBlob
Ein Zeiger auf DWORD , der die Größe des Puffers in Bytes angibt, auf den pbSignedAndEncryptedBlob verweist. Wenn die Funktion zurückgibt, enthält diese Variable die Größe der signierten und verschlüsselten Nachricht in Byte, die in *pbSignedAndEncryptedBlob kopiert wurde.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich null (TRUE).
Wenn die Funktion fehlschlägt, ist der Rückgabewert 0 (FALSE).
Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten.
Im Folgenden wird der Fehlercode aufgeführt, der am häufigsten von der GetLastError-Funktion zurückgegeben wird.
Rückgabecode | Beschreibung |
---|---|
|
Wenn der durch den pbSignedAndEncryptedBlob-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 pcbSignedAndEncryptedBlob verwiesen wird. |
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 |