Поделиться через


структура BCRYPT_DH_PARAMETER_HEADER (bcrypt.h)

Структура BCRYPT_DH_PARAMETER_HEADER используется для хранения сведений о заголовке параметра для ключа Diffie-Hellman. Эта структура используется со свойством BCRYPT_DH_PARAMETERS в функции BCryptSetProperty .

Синтаксис

typedef struct _BCRYPT_DH_PARAMETER_HEADER {
  ULONG cbLength;
  ULONG dwMagic;
  ULONG cbKeyLength;
} BCRYPT_DH_PARAMETER_HEADER;

Члены

cbLength

Общий размер (в байтах) этой структуры и буфера, который непосредственно следует за этой структурой в памяти.

dwMagic

Магическое значение для ключа.

Этот элемент должен иметь следующее значение.

BCRYPT_DH_PARAMETERS_MAGIC (0x4d504844)

cbKeyLength

Размер (в байтах) ключа, к которому применяется эта структура.

Комментарии

Эта структура используется в качестве заголовка для буфера большего размера. Один блок памяти состоит из этой структуры, за которой следует буфер размера cbKeyLength , содержащий Diffie-Hellman простое число, и другой буфер размера cbKeyLength , содержащий номер генератора Diffie-Hellman. Оба этих числа имеют формат big-endian.

В следующем примере показано, как вычислить размеры, необходимые для этого буфера, и как заполнить элементы этой структуры.

// 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);


Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Верхняя часть bcrypt.h

См. также раздел

BCryptSetProperty

Идентификаторы свойств примитива шифрования