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
키의 매직 값입니다.
이 멤버는 다음 값이어야 합니다.
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 |