SslExportKey 関数

SslExportKey 関数は、Secure Sockets Layer プロトコル (SSL) セッション キーまたは公開エフェメラル キーをシリアル化された BLOB に返します。

構文

SECURITY_STATUS WINAPI SslExportKey(
  _In_      NCRYPT_PROV_HANDLE hSslProvider,
  _In_      NCRYPT_KEY_HANDLE  hKey,
  _In_      LPCWSTR            pszBlobType,
  _Out_opt_ PBYTE              pbOutput,
  _In_      DWORD              cbOutput,
  _Out_     DWORD              *pcbResult,
  _In_      DWORD              dwFlags
);

パラメーター

hSslProvider [in]

SSL プロトコル プロバイダー インスタンスのハンドル。

hKey [in]

エクスポートするキーのハンドル。

キーを指定しない場合は、このパラメーターを NULL に設定 します

Note

hKey ハンドルは、SslOpenPrivateKey 関数を呼び出すことによって取得されます。 NCryptOpenKey 関数から取得したハンドルはサポートされていません。

pszBlobType [in]

エクスポートする BLOB の種類を指定する識別子を含む null で終わる Unicode 文字列。 これには、次のいずれかの値を指定できます。

説明
BCRYPT_DH_PUBLIC_BLOB
Diffie-Hellman 公開キーをエクスポートします。 pbOutput バッファーは、キー データの直後にBCRYPT_DH_KEY_BLOB構造体を受け取ります。
BCRYPT_ECCPUBLIC_BLOB
楕円曲線暗号化 (ECC) 公開キーをエクスポートします。 pbOutput バッファーは、キー データの直後にBCRYPT_ECCKEY_BLOB構造を受け取ります。
BCRYPT_OPAQUE_KEY_BLOB
1 つの 暗号化サービス プロバイダー (CSP) に固有の形式で対称キーをエクスポートします。 不透明 BLOB は転送できないため、BLOB を生成したのと同じ 暗号化サービス プロバイダー (CSP) を使用してインポートする必要があります。
BCRYPT_RSAPUBLIC_BLOB
RSA 公開キーをエクスポートします。 pbOutput バッファーは、キー データの直後にBCRYPT_RSAKEY_BLOB構造を受け取ります。

pbOutput [out, optional]

キー BLOB を受け取るバッファーのアドレス。 cbOutput パラメーターには、このバッファーのサイズが含まれています。 このパラメーターが NULL の場合、この関数は pcbResult パラメーターが指す DWORD に必要なサイズをバイト単位で配置します。

cbOutput [in]

pbOutput バッファーのサイズ (バイト単位)。

pcbResult [out]

pbOutput バッファーにコピーされたバイト数を受け取る DWORD 変数のアドレス。 関数の呼び出し時に pbOutput パラメーターが NULL に設定されている場合、 pbOutput バッファーに必要なサイズ (バイト単位) が、このパラメーターによって指される DWORD で返されます。

dwFlags [in]

将来利用するために予約されています。

戻り値

関数が成功すると、0 が返されます。

関数が失敗すると、0 以外のエラー値が返されます。

可能なリターン コードには、次のものが含まれますが、これらに限定されません。

リターン コード/値 説明
NTE_INVALID_HANDLE
0x80090026L
指定されたハンドルの 1 つが無効です。

注釈

SslExportKey 関数を使用すると、あるプロセスから別のプロセスへのセッション キーの転送と、公開部分のエフェメラル キーのエクスポートが容易になります。

セッション キーをエクスポートする場合、BLOB の種類は不透明です。つまり、SSLExportKey 関数と SslImportKey 関数の両方で解釈できる限り、BLOB の形式は関係ありません。

エフェメラル キーの公開部分をエクスポートする場合、BLOB の種類は、 NCRYPT_DH_PUBLIC_BLOBNCRYPT_ECCPUBLIC_BLOBなど、適切な型である必要があります。

要件

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