Share via


SslGenerateMasterKey 함수

SslGenerateMasterKey 함수는 SSL(Secure Sockets Layer protocol) master 비밀 키를 계산합니다.

구문

SECURITY_STATUS WINAPI SslGenerateMasterKey(
  _In_  NCRYPT_PROV_HANDLE hSslProvider,
  _In_  NCRYPT_KEY_HANDLE  hPrivateKey,
  _In_  NCRYPT_KEY_HANDLE  hPublicKey,
  _Out_ NCRYPT_KEY_HANDLE  *phMasterKey,
  _In_  DWORD              dwProtocol,
  _In_  DWORD              dwCipherSuite,
  _In_  PNCryptBufferDesc  pParameterList,
  _Out_ PBYTE              pbOutput,
  _In_  DWORD              cbOutput,
  _Out_ DWORD              *pcbResult,
  _In_  DWORD              dwFlags
);

매개 변수

hSslProvider [in]

SSL 프로토콜 공급자에 대한 핸들은 instance.

hPrivateKey [in]

교환에 사용되는 프라이빗 키 에 대한 핸들입니다.

hPublicKey [in]

교환에 사용되는 공개 키 에 대한 핸들입니다.

phMasterKey [out]

생성된 master 키에 대한 핸들에 대한 포인터입니다.

dwProtocol [in]

CNG SSL 공급자 프로토콜 식별자 값 중 하나입니다.

dwCipherSuite [in]

CNG SSL 공급자 암호 그룹 식별자 값 중 하나입니다.

pParameterList [in]

키 교환 작업의 일부로 사용되는 정보를 포함하는 NCryptBuffer 버퍼 배열에 대한 포인터입니다. 정확한 버퍼 집합은 사용되는 프로토콜 및 암호 도구 모음에 따라 달라집니다. 최소한 목록에는 클라이언트 및 서버 제공 임의 값이 포함된 버퍼가 포함됩니다.

pbOutput [out]

서버의 공개 키로 암호화된 프리마스터 비밀을 수신하는 버퍼의 주소입니다. cbOutput 매개 변수에는 이 버퍼의 크기가 포함됩니다. 이 매개 변수가 NULL인 경우 이 함수는 pcbResult 매개 변수가 가리키는 DWORD에서 필요한 크기(바이트)를 반환합니다.

참고

이 버퍼는 RSA 키 교환을 수행할 때 사용됩니다.

cbOutput [in]

pbOutput 버퍼의 크기(바이트)입니다.

pcbResult [out]

pbOutput 버퍼에 기록된 바이트 수를 배치할 DWORD 값에 대한 포인터입니다.

dwFlags [in]

이 함수가 클라이언트 쪽 또는 서버 쪽 키 교환에 사용되는지 여부를 지정합니다.

의미
NCRYPT_SSL_CLIENT_FLAG
0x00000001
클라이언트 쪽 키 교환을 지정합니다.
NCRYPT_SSL_SERVER_FLAG
0x00000002
서버 쪽 키 교환을 지정합니다.

반환 값

함수가 성공하면 0을 반환합니다.

함수가 실패하면 0이 아닌 오류 값이 반환됩니다.

가능한 반환 코드에는 다음이 포함되지만 이에 국한되지는 않습니다.

반환 코드/값 설명
NTE_NO_MEMORY
0x8009000EL
필요한 버퍼를 할당하는 데 메모리가 부족합니다.
NTE_INVALID_HANDLE
0x80090026L
제공된 핸들 중 하나가 잘못되었습니다.
NTE_INVALID_PARAMETER
0x80090027L
phMasterKey 또는 hPublicKey 매개 변수가 잘못되었습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버
Windows Server 2008 [데스크톱 앱만 해당]
헤더
Sslprovider.h
DLL
Ncrypt.dll