bcrypt.h) (BCRYPT_DH_PARAMETER_HEADER 结构
BCRYPT_DH_PARAMETER_HEADER 结构用于包含 Diffie-Hellman 键的参数标头信息。 此结构与 BCryptSetProperty 函数中的 BCRYPT_DH_PARAMETERS 属性一起使用。
语法
typedef struct _BCRYPT_DH_PARAMETER_HEADER {
ULONG cbLength;
ULONG dwMagic;
ULONG cbKeyLength;
} BCRYPT_DH_PARAMETER_HEADER;
成员
cbLength
此结构的总大小(以字节为单位)以及紧跟在内存中此结构后面的缓冲区。
dwMagic
键的 magic 值。
此成员必须是以下值。
BCRYPT_DH_PARAMETERS_MAGIC (0x4d504844)
cbKeyLength
此结构所应用到的键的大小(以字节为单位)。
注解
此结构用作较大缓冲区的标头。 单个内存块包含此结构,后跟包含 Diffie-Hellman 质数的 cbKeyLength 大小的缓冲区,以及包含 Diffie-Hellman 生成器编号的另一个 cbKeyLength 大小的缓冲区。 这两个数字都采用 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 |