NCryptOpenKey 関数 (ncrypt.h)

NCryptOpenKey 関数は、指定された CNG キー ストレージ プロバイダーに存在するキーを開きます。

構文

SECURITY_STATUS NCryptOpenKey(
  [in]  NCRYPT_PROV_HANDLE hProvider,
  [out] NCRYPT_KEY_HANDLE  *phKey,
  [in]  LPCWSTR            pszKeyName,
  [in]  DWORD              dwLegacyKeySpec,
  [in]  DWORD              dwFlags
);

パラメーター

[in] hProvider

キーを開くキー ストレージ プロバイダーのハンドル。

[out] phKey

キー ハンドルを受け取る NCRYPT_KEY_HANDLE 変数へのポインター。 このハンドルの使用が完了したら、 それを NCryptFreeObject 関数に渡して解放します。

[in] pszKeyName

取得するキーの名前を含む null で終わる Unicode 文字列へのポインター。

[in] dwLegacyKeySpec

キーの種類を指定するレガシ識別子。 次のいずれかの値を指定できます。

意味
AT_KEYEXCHANGE
キーはキー交換キーです。
AT_SIGNATURE
キーは署名キーです。
0
キーは、上記の種類のいずれもありません。

[in] dwFlags

関数の動作を変更するフラグ。 これは、0 または次の値の 1 つ以上の組み合わせにすることができます。

意味
NCRYPT_MACHINE_KEY_FLAG
ローカル コンピューターのキーを開きます。 このフラグが存在しない場合は、現在のユーザー キーが開かれます。
NCRYPT_SILENT_FLAG
キー サービス プロバイダー (KSP) にユーザー インターフェイスが表示されないことを要求します。 プロバイダーが操作する UI を表示する必要がある場合、呼び出しは失敗し、KSP は NTE_SILENT_CONTEXT エラー コードを最後のエラーとして設定する必要があります。

戻り値

関数の成功または失敗を示す状態コードを返します。

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

リターン コード 説明
ERROR_SUCCESS
関数は成功しました。
NTE_BAD_FLAGS
dwFlags パラメーターに無効な値が含まれています。
NTE_BAD_KEYSET
指定したキーが見つかりませんでした。
NTE_INVALID_HANDLE
hProvider パラメーターが無効です。
NTE_INVALID_PARAMETER
1 つ以上のパラメーターが無効です。
NTE_NO_MEMORY
メモリ割り当てエラーが発生しました。

注釈

サービスは 、StartService 関数からこの関数を呼び出してはなりません。 サービスが StartService 関数からこの関数を呼び出すと、デッドロックが発生し、サービスが応答を停止する可能性があります。

パフォーマンス上の理由から、Microsoft ソフトウェア ベースの KSP は、キーのハンドルが開いている限り、秘密キーマテリアルをローカル セキュリティ機関 (LSA) にキャッシュします。 LSA は特権システム プロセスです。 そのため、他のユーザーは、ユーザーがシステムに対する管理者権限を持っている場合を除き、このキーのキャッシュされたコピーにアクセスできません。 この動作は、構成では変更できません。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー ncrypt.h
Library Ncrypt.lib
[DLL] Ncrypt.dll