estructura BCRYPT_DH_PARAMETER_HEADER (bcrypt.h)
La estructura BCRYPT_DH_PARAMETER_HEADER se usa para contener información de encabezado de parámetros para una clave de Diffie-Hellman. Esta estructura se usa con la propiedad BCRYPT_DH_PARAMETERS en la función BCryptSetProperty .
Sintaxis
typedef struct _BCRYPT_DH_PARAMETER_HEADER {
ULONG cbLength;
ULONG dwMagic;
ULONG cbKeyLength;
} BCRYPT_DH_PARAMETER_HEADER;
Miembros
cbLength
Tamaño total, en bytes, de esta estructura y el búfer que sigue inmediatamente a esta estructura en memoria.
dwMagic
Valor mágico de la clave.
Este miembro debe ser el valor siguiente.
BCRYPT_DH_PARAMETERS_MAGIC (0x4d504844)
cbKeyLength
Tamaño, en bytes, de la clave a la que se aplica esta estructura.
Comentarios
Esta estructura se usa como encabezado para un búfer mayor. El bloque de memoria única consta de esta estructura seguida de un búfer de tamaño cbKeyLength que contiene el Diffie-Hellman número primo y otro búfer de tamaño cbKeyLength que contiene el número de generador de Diffie-Hellman. Ambos números están en formato big-endian.
En el ejemplo siguiente se muestra cómo calcular los tamaños necesarios para este búfer y cómo rellenar los miembros de esta estructura.
// In this example, the rgbModulus variable is a byte array that contains the modulus in big-endian byte order.
// The rgbGenerator variable is a byte array that contains the generator in big-endian byte order.
ULONG cbDHParams = sizeof(BCRYPT_DH_PARAMETER_HEADER) + (cbKeySize * 2);
PBYTE pbDHParams = (PBYTE)malloc(cbDHParams);
if(!pbDHParams)
{
status = STATUS_NO_MEMORY;
goto Cleanup;
}
BCRYPT_DH_PARAMETER_HEADER *pDHParamHeader;
pDHParamHeader = (BCRYPT_DH_PARAMETER_HEADER*)pbDHParams;
pDHParamHeader->cbLength = cbDHParams;
pDHParamHeader->cbKeyLength = cbKeySize;
pDHParamHeader->dwMagic = BCRYPT_DH_PARAMETERS_MAGIC;
// Add the modulus to the parameters.
// The rgbModulus argument is a byte array that contains the modulus.
PBYTE pbTemp = (PBYTE)pbDHParams + sizeof(BCRYPT_DH_PARAMETER_HEADER);
CopyMemory(pbTemp, rgbModulus, pDHParamHeader->cbKeyLength);
// Add the generator to the parameters.
// The rgbGenerator argument is a byte array that contains the generator.
pbTemp += pDHParamHeader->cbKeyLength;
CopyMemory(pbTemp, rgbGenerator, pDHParamHeader->cbKeyLength);
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2008 [solo aplicaciones de escritorio] |
Encabezado | bcrypt.h |