Freigeben über


CryptSignMessage-Funktion (wincrypt.h)

Die CryptSignMessage-Funktion erstellt einen Hash des angegebenen Inhalts, signiert den Hash und codiert dann sowohl den ursprünglichen Nachrichteninhalt als auch den signierten Hash.

Syntax

BOOL CryptSignMessage(
  [in]      PCRYPT_SIGN_MESSAGE_PARA pSignPara,
  [in]      BOOL                     fDetachedSignature,
  [in]      DWORD                    cToBeSigned,
  [in]      const BYTE * []          rgpbToBeSigned,
  [in]      DWORD []                 rgcbToBeSigned,
  [out]     BYTE                     *pbSignedBlob,
  [in, out] DWORD                    *pcbSignedBlob
);

Parameter

[in] pSignPara

Ein Zeiger auf CRYPT_SIGN_MESSAGE_PARA Struktur, die die Signaturparameter enthält.

[in] fDetachedSignature

TRUE , wenn es sich um eine getrennte Signatur handelt. Andernfalls FALSE. Wenn dieser Parameter auf TRUE festgelegt ist, wird nur der signierte Hash in pbSignedBlob codiert. Andernfalls werden sowohl rgpbToBeSigned als auch der signierte Hash codiert.

[in] cToBeSigned

Anzahl der Arrayelemente in rgpbToBeSigned und rgcbToBeSigned. Dieser Parameter muss auf 1 festgelegt werden, es sei denn , fDetachedSignature ist auf TRUE festgelegt.

[in] rgpbToBeSigned

Array von Zeigern auf Puffer, die den zu signierten Inhalt enthalten.

[in] rgcbToBeSigned

Array von Größen in Bytes der Inhaltspuffer, auf die in rgpbToBeSigned verwiesen wird.

[out] pbSignedBlob

Ein Zeiger auf einen Puffer, um den codierten signierten Hash zu empfangen, wenn fDetachedSignatureTRUE ist, oder auf den codierten Inhalt und den signierten Hash, wenn fDetachedSignatureFALSE ist.

Dieser Parameter kann NULL sein, um die Größe dieser Informationen für Speicherzuordnungszwecke festzulegen. Weitere Informationen finden Sie unter Abrufen von Daten unbekannter Länge.

[in, out] pcbSignedBlob

Ein Zeiger auf ein DWORD , das die Größe des Puffers pbSignedBlob in Bytes angibt. Wenn die Funktion zurückgibt, enthält diese Variable die Größe der signierten und codierten Nachricht in Bytes.

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 sein als die Größe des Puffers, der bei der Eingabe angegeben wird. (Bei der Eingabe werden Puffergrößen normalerweise 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 nonzero (TRUE).

Wenn die Funktion fehlschlägt, ist der Rückgabewert 0 (FALSE).

Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten.

Im Folgenden werden die Fehlercodes aufgeführt, die am häufigsten von der GetLastError-Funktion zurückgegeben werden.

Rückgabecode Beschreibung
ERROR_MORE_DATA
Wenn der vom pbSignedBlob-Parameter angegebene Puffer nicht groß genug ist, um die zurückgegebenen Daten aufzunehmen, legt die Funktion den ERROR_MORE_DATA Code fest und speichert die erforderliche Puffergröße in Bytes in der Variablen, auf die von pcbSignedBlob verwiesen wird.
E_INVALIDARG
Der Nachrichtencodierungstyp ist ungültig. Derzeit wird nur PKCS_7_ASN_ENCODING unterstützt. Die cbSize-Datei in *pSignPara ist ungültig.
CRYPT_E_NO_KEY_PROPERTY
Das pSigningCert in *pSignPara verfügt nicht über eine CERT_KEY_PROV_INFO_PROP_ID- oder CERT_KEY_CONTEXT_PROP_ID-Eigenschaft.
 
Hinweis Fehler aus den aufgerufenen Funktionen CryptCreateHash, CryptHashData und CryptSignHash können an diese Funktion weitergegeben werden.
 
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 Encoding/Decoding Return Values.

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

CryptSignAndEncryptMessage

CryptVerifyMessageSignature

Vereinfachte Nachrichtenfunktionen