CryptMsgUpdate-Funktion (wincrypt.h)

Die CryptMsgUpdate-Funktion fügt einer kryptografischen Nachricht Inhalte hinzu. Die Verwendung dieser Funktion ermöglicht die schrittweise Erstellung von Nachrichten durch wiederholte Aufrufe von CryptMsgUpdate. Der hinzugefügte Nachrichteninhalt wird entweder codiert oder decodiert, je nachdem, ob die Nachricht mit CryptMsgOpenToEncode oder CryptMsgOpenToDecode geöffnet wurde.

Syntax

BOOL CryptMsgUpdate(
  [in] HCRYPTMSG  hCryptMsg,
  [in] const BYTE *pbData,
  [in] DWORD      cbData,
  [in] BOOL       fFinal
);

Parameter

[in] hCryptMsg

Kryptografisches Nachrichtenhandle der zu aktualisierenden Nachricht.

[in] pbData

Ein Zeiger auf den Puffer, der die zu codierenden oder decodierten Daten enthält.

[in] cbData

Anzahl der Byte der Daten im pbData-Puffer .

[in] fFinal

Gibt an, dass der letzte Datenblock für die Codierung oder Decodierung verarbeitet wird. Die korrekte Verwendung dieses Flags hängt davon ab, ob die verarbeitete Nachricht getrennte Daten enthält. Die Aufnahme getrennter Daten in eine Nachricht wird durch Festlegen von dwFlags auf CMSG_DETACHED_FLAG im Aufruf der Funktion angegeben, die die Nachricht geöffnet hat.

Wenn CMSG_DETACHED_FLAG nicht festgelegt wurde und die Nachricht entweder mit CryptMsgOpenToDecode oder CryptMsgOpenToEncode geöffnet wurde, wird fFinal auf TRUE und CryptMsgUpdate nur einmal aufgerufen.

Wenn das flag CMSG_DETACHED_FLAG festgelegt wurde und eine Nachricht mit CryptMsgOpenToEncode geöffnet wird, wird fFinal nur beim letzten Aufruf von CryptMsgUpdate auf TRUE festgelegt.

Wenn das flag CMSG_DETACHED_FLAG festgelegt wurde und eine Nachricht mithilfe von CryptMsgOpenToDecode geöffnet wird, wird fFinal auf TRUE festgelegt, wenn der Header durch einen einzelnen Aufruf von CryptMsgUpdate verarbeitet wird. Es wird auf FALSE festgelegt, während die getrennten Daten in nachfolgenden Aufrufen von CryptMsgUpdate verarbeitet werden, bis der letzte getrennte Datenblock verarbeitet werden soll. Beim letzten Aufruf von CryptMsgUpdate wird er auf TRUE festgelegt.

Wenn getrennte Daten decodiert werden, sind der Header und der Inhalt einer Nachricht in verschiedenen BLOBs enthalten. Jedes BLOB erfordert, dass fFinal auf TRUE festgelegt wird, wenn der letzte Aufruf der Funktion für dieses BLOB erfolgt.

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.

Fehler in der von der Anwendung definierten Rückruffunktion, die von pStreamInfo in CryptMsgOpenToDecode und CryptMsgOpenToEncode angegeben wurde, werden möglicherweise an CryptMsgUpdate weitergegeben, wenn Streaming verwendet wird. In diesem Fall wird SetLastError nicht von CryptMsgUpdate aufgerufen, nachdem die Rückruffunktion zurückgegeben wurde, wodurch alle Fehler beibehalten werden, die unter der Kontrolle der Anwendung auftreten. Es liegt in der Verantwortung der Rückruffunktion (oder einer der APIs, die sie aufruft), SetLastError aufzurufen, wenn ein Fehler auftritt, während die Anwendung die gestreamten Daten verarbeitet.

In der folgenden Tabelle sind die Fehlercodes aufgeführt, die am häufigsten von der GetLastError-Funktion zurückgegeben werden.

Rückgabecode Beschreibung
CRYPT_E_INVALID_MSG_TYPE
Ungültiger Nachrichtentyp.
CRYPT_E_MSG_ERROR
Fehler beim Ausführen eines kryptografischen Vorgangs.
CRYPT_E_OID_FORMAT
Der Objektbezeichner ist falsch formatiert.
CRYPT_E_UNEXPECTED_ENCODING
Die Nachricht ist nicht wie erwartet codiert.
CRYPT_E_UNKNOWN_ALGO
Der kryptografische Algorithmus ist unbekannt.
E_INVALIDARG
Mindestens ein Argument ist ungültig.
E_OUTOFMEMORY
Der Arbeitsspeicher ist nicht mehr vorhanden.
 

Bei einer der folgenden Funktionen können verteilte Fehler auftreten:

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.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile wincrypt.h
Bibliothek Crypt32.lib
DLL Crypt32.dll

Weitere Informationen

CryptMsgGetParam

CryptMsgOpenToDecode

CryptMsgOpenToEncode

Nachrichtenfunktionen auf niedriger Ebene

Vereinfachte Nachrichtenfunktionen