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
CRYPT_E_INVALID_MSG_TYPE
Tipo de mensaje no válido.
CRYPT_E_MSG_ERROR
Error al realizar una operación criptográfica.
CRYPT_E_OID_FORMAT
El identificador de objeto tiene un formato incorrecto.
CRYPT_E_UNEXPECTED_ENCODING
El mensaje no está codificado según lo previsto.
CRYPT_E_UNKNOWN_ALGO
El algoritmo criptográfico es desconocido.
E_INVALIDARG
Uno o varios argumentos no son válidos.
E_OUTOFMEMORY
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

Consulte también

CryptMsgGetParam

CryptMsgOpenToDecode

CryptMsgOpenToEncode

Funciones de mensaje de bajo nivel

Funciones de mensaje simplificadas