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 |
---|---|
|
Tipo di messaggio non valido. |
|
Si è verificato un errore durante l'esecuzione di un'operazione di crittografia. |
|
L'identificatore dell'oggetto non è formattato correttamente. |
|
Il messaggio non viene codificato come previsto. |
|
L'algoritmo crittografico è sconosciuto. |
|
Uno o più argomenti non sono validi. |
|
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 |