Condividi tramite


Funzione CryptMsgUpdate (wincrypt.h)

La funzione CryptMsgUpdate aggiunge contenuto a un messaggio crittografico. L'uso di questa funzione consente di costruire i messaggi in base al pezzo tramite chiamate ripetitive di CryptMsgUpdate. Il contenuto del messaggio aggiunto è codificato o decodificato a seconda che il messaggio sia stato aperto con CryptMsgOpenToEncode o CryptMsgOpenToDecode.

Sintassi

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

Parametri

[in] hCryptMsg

Handle di messaggi crittografici del messaggio da aggiornare.

[in] pbData

Puntatore al buffer che contiene i dati da codificare o decodificare.

[in] cbData

Numero di byte di dati nel buffer pbData .

[in] fFinal

Indica che l'ultimo blocco di dati per la codifica o la decodifica viene elaborato. L'utilizzo corretto di questo flag dipende dal fatto che il messaggio elaborato abbia scollegato i dati. L'inclusione di dati scollegati in un messaggio è indicata impostando dwFlags su CMSG_DETACHED_FLAG nella chiamata alla funzione che ha aperto il messaggio.

Se CMSG_DETACHED_FLAG non è stato impostato e il messaggio è stato aperto usando CryptMsgOpenToDecode o CryptMsgOpenToEncode, fFinal è impostato su TRUE e CryptMsgUpdate viene chiamato una sola volta.

Se il flag di CMSG_DETACHED_FLAG è stato impostato e viene aperto un messaggio usando CryptMsgOpenToEncode, fFinal è impostato su TRUE solo nell'ultima chiamata a CryptMsgUpdate.

Se il flag CMSG_DETACHED_FLAG è stato impostato e viene aperto un messaggio usando CryptMsgOpenToDecode, fFinal è impostato su TRUE quando l'intestazione viene elaborata da una singola chiamata a CryptMsgUpdate. È impostato su FALSE durante l'elaborazione dei dati scollegati nelle chiamate successive a CryptMsgUpdate fino all'ultima elaborazione del blocco di dati scollegato. Nell'ultima chiamata a CryptMsgUpdate, è impostata su TRUE.

Quando i dati scollegati vengono decodificati, l'intestazione e il contenuto di un messaggio sono contenuti in BLOB diversi. Ogni BLOB richiede che fFinal sia impostato su TRUE quando viene eseguita l'ultima chiamata alla funzione per tale BLOB.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero (TRUE).

Se la funzione ha esito negativo, il valore restituito è zero (FALSE). Per informazioni sull'errore estese, chiamare GetLastError.

Gli errori riscontrati nella funzione di callback definita dall'applicazione specificata da pStreamInfo in CryptMsgOpenToDecode e CryptMsgOpenToEncode potrebbero essere propagati a CryptMsgUpdate se viene usato lo streaming. In questo caso, SetLastError non viene chiamato da CryptMsgUpdate dopo che la funzione di callback restituisce, che mantiene eventuali errori rilevati sotto il controllo dell'applicazione. È responsabilità della funzione di callback (o di una delle API che chiama) chiamare SetLastError se si verifica un errore durante l'elaborazione dei dati trasmessi dall'applicazione.

La tabella seguente elenca i codici di errore più comunemente restituiti dalla funzione GetLastError .

Codice restituito Descrizione
CRYPT_E_INVALID_MSG_TYPE
Tipo di messaggio non valido.
CRYPT_E_MSG_ERROR
Si è verificato un errore durante l'esecuzione di un'operazione di crittografia.
CRYPT_E_OID_FORMAT
L'identificatore dell'oggetto non è formattato correttamente.
CRYPT_E_UNEXPECTED_ENCODING
Il messaggio non viene codificato come previsto.
CRYPT_E_UNKNOWN_ALGO
L'algoritmo crittografico è sconosciuto.
E_INVALIDARG
Uno o più argomenti non sono validi.
E_OUTOFMEMORY
Memoria insufficiente.
 

Gli errori propagati potrebbero essere rilevati da una delle funzioni seguenti:

Se la funzione ha esito negativo, GetLastError potrebbe restituire un errore di codifica astratta Notation One (ASN.1). Per informazioni su questi errori, vedere Codifica ASN.1/Decodifica dei valori restituiti.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione wincrypt.h
Libreria Crypt32.lib
DLL Crypt32.dll

Vedi anche

CryptMsgGetParam

CryptMsgOpenToDecode

CryptMsgOpenToEncode

Funzioni di messaggio di basso livello

Funzioni di messaggio semplificate