Compartir a través de


estructura BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO (bcrypt.h)

La estructura BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO se usa con las funciones BCryptEncrypt y BCryptDecrypt para contener información adicional relacionada con los modos de cifrado autenticados.

Sintaxis

typedef struct _BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO {
  ULONG     cbSize;
  ULONG     dwInfoVersion;
  PUCHAR    pbNonce;
  ULONG     cbNonce;
  PUCHAR    pbAuthData;
  ULONG     cbAuthData;
  PUCHAR    pbTag;
  ULONG     cbTag;
  PUCHAR    pbMacContext;
  ULONG     cbMacContext;
  ULONG     cbAAD;
  ULONGLONG cbData;
  ULONG     dwFlags;
} BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO, *PBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO;

Miembros

cbSize

Tamaño, en bytes, de esta estructura. No establezca este campo directamente. En su lugar, use la macro BCRYPT_INIT_AUTH_MODE_INFO .

dwInfoVersion

Número de versión de la estructura. El único valor admitido es BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION. No establezca este campo directamente. En su lugar, use la macro BCRYPT_INIT_AUTH_MODE_INFO .

pbNonce

Puntero a un búfer que contiene un valor nonce. Los proveedores de algoritmos de Microsoft para los modos de encadenamiento estándar de cifrado avanzado (AES) requieren un nonce para el contador con CBC-MAC (CCM) y los modos de encadenamiento galois/counter (GCM) y devolverá un error si no hay ninguno. Si no se usa un valor nonce, este miembro debe establecerse en NULL.

cbNonce

Tamaño, en bytes, del búfer al que apunta el miembro pbNonce . Si no se usa un valor nonce, este miembro debe establecerse en cero.

pbAuthData

Puntero a un búfer que contiene los datos autenticados. Estos son los datos que se incluirán en el código de autenticación de mensajes (MAC), pero que no se cifrarán. Si no hay datos autenticados, este miembro debe establecerse en NULL.

cbAuthData

Tamaño, en bytes, del búfer al que apunta el miembro pbAuthData . Si no hay datos autenticados, este miembro debe establecerse en cero.

pbTag

Puntero a un búfer.

El uso de este miembro depende de la función a la que se pasa la estructura.

Función Descripción
BCryptEncrypt
El búfer recibirá la etiqueta de autenticación.
BCryptDecrypt
El búfer contiene la etiqueta de autenticación con la que se va a comprobar.
 

Si no hay ninguna etiqueta, este miembro debe establecerse en NULL.

cbTag

Tamaño, en bytes, del búfer pbTag . El búfer debe ser lo suficientemente largo como para incluir toda la etiqueta de autenticación. Algunos modos de autenticación, como CCM y GCM, admiten la comprobación de una etiqueta con varias longitudes. Para obtener las longitudes de etiqueta de autenticación válidas, use BCryptGetProperty para consultar la propiedad BCRYPT_AUTH_TAG_LENGTH . Si no hay ninguna etiqueta, este miembro debe establecerse en cero.

pbMacContext

Puntero a un búfer que almacena el MAC calculado parcialmente entre las llamadas a BCryptEncrypt y BCryptDecrypt al encadenar el cifrado o descifrado.

Si la entrada para el cifrado o el descifrado se dispersa entre varios búferes, debe encadenar llamadas a las funciones BCryptEncrypt y BCryptDecrypt . El encadenamiento se indica estableciendo la marca BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG en el miembro dwFlags .

El autor de la llamada debe proporcionar este búfer y debe ser al menos tan grande como la longitud máxima de una etiqueta de autenticación para el cifrado que está usando. Para obtener las longitudes de etiqueta de autenticación válidas, use BCryptGetProperty para consultar la propiedad BCRYPT_AUTH_TAG_LENGTH .

Si no se encadenan las llamadas BCryptEncrypt y BCryptDecrypt , este miembro debe establecerse en NULL.

cbMacContext

Tamaño, en bytes, del búfer al que apunta el miembro pbMacContext . Si no se encadenan las llamadas BCryptEncrypt y BCryptDecrypt , este miembro debe establecerse en cero.

cbAAD

Longitud, en bytes, de datos autenticados adicionales (AAD) que usarán las funciones BCryptEncrypt y BCryptDecrypt . Este miembro solo se usa al encadenar llamadas.

Este miembro solo se usa cuando se establece la marca BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG en el miembro dwFlags .

En la primera llamada a BCryptEncrypt o BCryptDecrypt , debe establecer este campo en cero.

Nota Durante la secuencia de encadenamiento, este miembro se mantiene internamente y no se debe cambiar o el valor del MAC calculado estará dañado.
 

cbData

Longitud, en bytes, de los datos de carga que se cifran o descifran. Este miembro solo se usa al encadenar llamadas.

Este miembro solo se usa cuando se establece la marca BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG en el miembro dwFlags .

En la primera llamada a BCryptEncrypt o BCryptDecrypt, debe establecer este campo en cero, , ya sea directamente o llamando a la macro BCRYPT_INIT_AUTH_INFO

Nota Durante la secuencia de encadenamiento, este miembro se mantiene internamente y no se debe cambiar o el valor del MAC calculado estará dañado.
 

dwFlags

Esta marca se usa al encadenar llamadas de función BCryptEncrypt o BCryptDecrypt . Si las llamadas no se encadenan, este miembro debe establecerse en cero.

Valor Significado
0x00000000
Para BCryptEncrypt, calcule la etiqueta de autenticación y colóquela en el búfer al que apunta el miembro pbTag .

Para BCryptDecrypt, calcule la etiqueta de autenticación y compárela con la etiqueta pasada al búfer al que apunta el miembro pbTag . Al encadenar varias llamadas a BCryptEncrypt o BCryptDecrypt, este valor señala el final de la cadena.

BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG
0x00000001
Indica que las llamadas de función BCryptEncrypt y BCryptDecrypt se están encadenando y que el valor MAC no se calculará. En la última llamada de la cadena, borre este valor para calcular el valor MAC de toda la cadena.
BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG
0x00000002
Indica que esta estructura de BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO se usa en una secuencia de llamadas de función BCryptEncrypt o BCryptDecrypt encadenadas. Esta marca se establece y se mantiene internamente.
Nota Durante la secuencia de encadenamiento, este valor de marca se mantiene internamente y no se debe cambiar o el valor del MAC calculado estará dañado.
 

Comentarios

El tamaño de esta estructura es diferente entre los sistemas operativos de 64 y 32 bits. En los sistemas operativos de 64 bits, el tamaño es diferente entre los procesos de 64 y 32 bits. Las instancias de esta estructura no se deben compartir entre subprocesos ni pasarse entre procesos.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista con SP1 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Encabezado bcrypt.h