Función CryptMsgUpdate (wincrypt.h)
La función CryptMsgUpdate agrega contenido a un mensaje criptográfico. El uso de esta función permite que los mensajes se construyan por partes mediante llamadas repetitivas de CryptMsgUpdate. El contenido del mensaje agregado se codifica o descodifica en función de si el mensaje se abrió con CryptMsgOpenToEncode o CryptMsgOpenToDecode.
Sintaxis
BOOL CryptMsgUpdate(
[in] HCRYPTMSG hCryptMsg,
[in] const BYTE *pbData,
[in] DWORD cbData,
[in] BOOL fFinal
);
Parámetros
[in] hCryptMsg
Identificador de mensaje criptográfico del mensaje que se va a actualizar.
[in] pbData
Puntero al búfer que contiene los datos que se van a codificar o descodificar.
[in] cbData
Número de bytes de datos en el búfer pbData .
[in] fFinal
Indica que se está procesando el último bloque de datos para la codificación o descodificación. El uso correcto de esta marca depende de si el mensaje que se está procesando tiene datos desasociados. La inclusión de datos desasociados en un mensaje se indica estableciendo dwFlags en CMSG_DETACHED_FLAG en la llamada a la función que abrió el mensaje.
Si no se estableció CMSG_DETACHED_FLAG y el mensaje se abrió con CryptMsgOpenToDecode o CryptMsgOpenToEncode, fFinal se establece en TRUE y solo se llama a CryptMsgUpdate una vez.
Si se estableció la marca CMSG_DETACHED_FLAG y se abre un mensaje mediante CryptMsgOpenToEncode, fFinal se establece en TRUE solo en la última llamada a CryptMsgUpdate.
Si se estableció la marca CMSG_DETACHED_FLAG y se abre un mensaje mediante CryptMsgOpenToDecode, fFinal se establece en TRUE cuando el encabezado se procesa mediante una sola llamada a CryptMsgUpdate. Se establece en FALSE mientras se procesan los datos desasociados en llamadas posteriores a CryptMsgUpdate hasta que se va a procesar el último bloque de datos desasociado. En la última llamada a CryptMsgUpdate, se establece en TRUE.
Cuando se descodifican los datos desasociados, el encabezado y el contenido de un mensaje se encuentran en blobs diferentes. Cada BLOB requiere que fFinal se establezca en TRUE cuando se realice la última llamada a la función para ese BLOB.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es distinto de cero (TRUE).
Si se produce un error en la función, el valor devuelto es cero (FALSE). Para obtener información de error extendida, llame a GetLastError.
Los errores encontrados en la función de devolución de llamada definida por la aplicación especificada por pStreamInfo en CryptMsgOpenToDecode y CryptMsgOpenToEncode podrían propagarse a CryptMsgUpdate si se usa el streaming. Si esto sucede, CryptMsgUpdate no llama a SetLastError después de que se devuelva la función de devolución de llamada, lo que conserva los errores encontrados bajo el control de la aplicación. Es responsabilidad de la función de devolución de llamada (o una de las API a las que llama) llamar a SetLastError si se produce un error mientras la aplicación procesa los datos transmitidos.
En la tabla siguiente se enumeran los códigos de error devueltos normalmente por la función GetLastError .
Código devuelto | Descripción |
---|---|
|
Tipo de mensaje no válido. |
|
Error al realizar una operación criptográfica. |
|
El identificador de objeto tiene un formato incorrecto. |
|
El mensaje no está codificado según lo previsto. |
|
El algoritmo criptográfico es desconocido. |
|
Uno o varios argumentos no son válidos. |
|
Se quedó sin memoria. |
Es posible que se produzcan errores propagados desde cualquiera de las funciones siguientes:
Si se produce un error en la función, GetLastError puede devolver un error de codificación y descodificación de sintaxis abstracta uno (ASN.1). Para obtener información sobre estos errores, vea Valores devueltos de codificación y descodificación de ASN.1.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP [aplicaciones de escritorio | aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | wincrypt.h |
Library | Crypt32.lib |
Archivo DLL | Crypt32.dll |