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.

Hinweis Bei der Verarbeitung der zurückgegebenen Daten müssen Anwendungen die tatsächliche Größe der zurückgegebenen Daten verwenden. Die tatsächliche Größe kann etwas kleiner als die Größe des bei der Eingabe angegebenen Puffers sein. (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 die Variable aktualisiert, auf die dieser Parameter verweist, um die tatsächliche Größe der in den Puffer kopierten Daten widerzuspiegeln.
 

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
ERROR_MORE_DATA
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.
 
Hinweis Fehler aus den aufgerufenen Funktionen CryptSignMessage und CryptEncryptMessage können an diese Funktion weitergegeben werden.
 

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

Weitere Informationen

CryptDecryptAndVerifyMessageSignature

CryptSignMessage

Vereinfachte Nachrichtenfunktionen