다음을 통해 공유


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

추가 정보

BCryptSetProperty

암호화 기본 속성 식별자