BCRYPT_DH_PARAMETER_HEADER結構 (bcrypt.h)
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 大小緩衝區。 這兩個數位都是以大到小的格式。
下列範例示範如何計算這個緩衝區所需的大小,以及如何填入這個 結構的成員。
// 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 |