SslGenerateMasterKey 関数

SslGenerateMasterKey 関数は、Secure Sockets Layer プロトコル (SSL) マスター シークレット キーを計算します。

構文

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 プロトコル プロバイダー インスタンスへのハンドル。

hPrivateKey [in]

交換で使用される 秘密キー へのハンドル。

hPublicKey [in]

交換で使用される 公開キー へのハンドル。

phMasterKey [out]

生成された マスター キーへのハンドルへのポインター。

dwProtocol [in]

CNG SSL プロバイダー プロトコル識別子の値の 1 つ。

dwCipherSuite [in]

CNG SSL プロバイダー暗号スイート識別子の値の 1 つ。

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
指定されたハンドルの 1 つが無効です。
NTE_INVALID_PARAMETER
0x80090027L
phMasterKey または hPublicKey パラメーターが無効です。

要件

要件
サポートされている最小のクライアント
Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows Server 2008 [デスクトップ アプリのみ]
Header
Sslprovider.h
[DLL]
Ncrypt.dll