次の方法で共有


キー ストレージ プロパティ識別子

キー ストレージ プロパティを識別するには、次の値を使用します。

識別子

NCRYPT_ALGORITHM_GROUP_PROPERTY

L"Algorithm Group"

オブジェクトのアルゴリズム グループの名前を含む null で終わる Unicode 文字列。 このプロパティはキーにのみ適用されます。 次の識別子は、Microsoft キー ストレージ プロバイダーによって返されます。

識別子 価値 説明
NCRYPT_RSA_ALGORITHM_GROUP "RSA" RSA アルゴリズム グループ。
NCRYPT_DH_ALGORITHM_GROUP "DH" Diffie-Hellman アルゴリズム グループ。
NCRYPT_DSA_ALGORITHM_GROUP "DSA" DSA アルゴリズム グループ。
NCRYPT_ECDSA_ALGORITHM_GROUP "ECDSA" 楕円曲線 DSA アルゴリズム グループ。
NCRYPT_ECDH_ALGORITHM_GROUP "ECDH" アルゴリズム グループ Diffie-Hellman 楕円曲線。

NCRYPT_ALGORITHM_PROPERTY

L"Algorithm Name"

オブジェクトのアルゴリズムの名前を含む null で終わる Unicode 文字列。 これには、定義済みの CNG アルゴリズム識別子 または別の登録済みアルゴリズム識別子のいずれかを指定できます。 このプロパティはキーにのみ適用されます。

NCRYPT_ASSOCIATED_ECDH_KEY

L"SmartCardAssociatedECDHKey"

楕円曲線デジタル署名アルゴリズム (ECDSA) キーへの特定のハンドルのログオン時に使用する楕円曲線 Diffie-Hellman (ECDH) キーのコンテナー名を示す LPWSTR 値。 カードに ECDH キーがない場合、 キー ストレージ プロバイダー (KSP) は NTE_NOT_FOUNDを返します。 このプロパティは、スマート カードを使用したログオンの ECDSA キーに適用されます。 このプロパティは、Microsoft ソフトウェア キー ストレージ プロバイダーではなく、Microsoft スマート カード キー ストレージ プロバイダーによってサポートされます。

Windows Server 2008 と Windows Vista: この値はサポートされていません。

NCRYPT_BLOCK_LENGTH_PROPERTY

L"Block Length"

暗号化ブロックの長さをバイト単位で格納する DWORD 。 このプロパティは、暗号化をサポートするキーにのみ適用されます。

NCRYPT_CERTIFICATE_PROPERTY

L"SmartCardKeyCertificate"

キーに関連付けられている X.509 証明書を含む BLOB

Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista:スマート カード キー証明書を含む BLOB。 このプロパティは、Microsoft ソフトウェア キー ストレージ プロバイダーではサポートされていません。

NCRYPT_DH_PARAMETERS_PROPERTY

L"DHParameters"

Diffie-Hellman キーで使用するパラメーターを指定します。 このデータ型は、 BCRYPT_DH_PARAMETER_HEADER 構造体へのポインターです。 このプロパティは、キーに対してのみ設定でき、キーが完了する前に設定する必要があります。

NCRYPT_EXPORT_POLICY_PROPERTY

L"Export Policy"

永続化されたキーのエクスポート ポリシーを指定するフラグのセットを含む DWORD 。 このプロパティはキーにのみ適用されます。 これには、0 個または 1 つ以上の次の値の組み合わせを含めることができます。

識別子 価値 説明
NCRYPT_ALLOW_EXPORT_FLAG 0x00000001 秘密キーはエクスポートできます。
NCRYPT_ALLOW_PLAINTEXT_EXPORT_FLAG 0x00000002 秘密キーはプレーンテキスト形式でエクスポートできます。
NCRYPT_ALLOW_ARCHIVING_FLAG 0x00000004 秘密キーは、アーカイブ目的で 1 回エクスポートできます。 このフラグは、設定されている元のキー ハンドルにのみ適用されます。 このポリシーは、元のキー ハンドルにのみ適用できます。 キー ハンドルが閉じられた後、アーカイブのためにキーをエクスポートできなくなります。
NCRYPT_ALLOW_PLAINTEXT_ARCHIVING_FLAG 0x00000008 秘密キーは、アーカイブ目的でプレーンテキスト形式で 1 回エクスポートできます。 このフラグは、設定されている元のキー ハンドルにのみ適用されます。 このポリシーは、元のキー ハンドルにのみ適用できます。 キー ハンドルが閉じられた後、アーカイブのためにキーをエクスポートできなくなります。

NCRYPT_IMPL_TYPE_PROPERTY

L"Impl Type"

プロバイダーの実装の詳細を定義するフラグのセットを含む DWORD 。 このプロパティは、キー ストレージ プロバイダーにのみ適用されます。 これには、0 個または 1 つ以上の次の値の組み合わせを含めることができます。

識別子 価値 説明
NCRYPT_IMPL_HARDWARE_FLAG 0x00000001 プロバイダーはハードウェア ベースです。
NCRYPT_IMPL_SOFTWARE_FLAG 0x00000002 プロバイダーはソフトウェア ベースです。
NCRYPT_IMPL_REMOVABLE_FLAG 0x00000008 プロバイダーはリムーバブルです。
NCRYPT_IMPL_HARDWARE_RNG_FLAG 0x00000010 プロバイダーは、ハードウェア ベースの乱数ジェネレーターです。
NCRYPT_IMPL_VIRTUAL_ISOLATION_FLAG 0x00000020 プロバイダーは仮想化された分離プロバイダーです。

NCRYPT_KEM_CIPHERTEXT_LENGTH_PROPERTY

L"KEM Ciphertext Length"

暗号テキストの長さをバイト単位で格納する DWORD 。 このプロパティは、キー カプセル化メカニズム (KEM) をサポートするキーにのみ適用されます。

NCRYPT_KEM_SHARED_SECRET_LENGTH_PROPERTY

L"KEM Shared Secret Length"

共有シークレットの長さをバイト単位で格納する DWORD 。 このプロパティは、キー カプセル化メカニズム (KEM) をサポートするキーにのみ適用されます。

NCRYPT_KEY_TYPE_PROPERTY

L"Key Type"

キーの種類を定義するフラグのセットを含む DWORD 。 このプロパティはキーにのみ適用されます。 これには、0 または次の値を含めることができます。

識別子 価値 説明
NCRYPT_MACHINE_KEY_FLAG 0x00000020 キーはローカル コンピューターに適用されます。 このフラグが存在しない場合、キーは現在のユーザーに適用されます。

NCRYPT_KEY_USAGE_PROPERTY

L"Key Usage"

キーの使用状況の詳細を定義するフラグのセットを含む DWORD 。 このプロパティはキーにのみ適用されます。 これには、0 個または 1 つ以上の次の値の組み合わせを含めることができます。

識別子 価値 説明
NCRYPT_ALLOW_DECRYPT_FLAG 0x00000001 キーは復号化に使用できます。
NCRYPT_ALLOW_SIGNING_FLAG 0x00000002 キーは署名に使用できます。
NCRYPT_ALLOW_KEY_AGREEMENT_FLAG 0x00000004 キーは、秘密契約の暗号化に使用できます。
NCRYPT_ALLOW_KEY_ATTESTATION_FLAG 0x00000010 キーが構成証明付きのキーであることを示します。
NCRYPT_ALLOW_ALL_USAGES 0x00ffffff キーは任意の目的で使用できます。

NCRYPT_LAST_MODIFIED_PROPERTY

L"Modified"

キーが最後に変更された日時を示します。 このデータ型は、 FILETIME 構造体へのポインターです。 このプロパティは、永続化されたキーにのみ適用されます。

NCRYPT_LENGTH_PROPERTY

L"Length"

キーの長さをビット単位で格納する DWORD 。 このプロパティはキーにのみ適用されます。

NCRYPT_LENGTHS_PROPERTY

L"Lengths"

キーでサポートされているキー サイズを示します。 このデータ型は、この情報を含む NCRYPT_SUPPORTED_LENGTHS 構造体へのポインターです。 このプロパティはキーにのみ適用されます。

NCRYPT_MAX_NAME_LENGTH_PROPERTY

L"Max Name Length"

永続的キーの名前の最大長 (文字数) を含む DWORD 。 このプロパティはプロバイダーにのみ適用されます。

このプロパティは主に、スマート カードなど、使用可能なメモリ量が限られているデバイスにキーを格納するキー ストレージ プロバイダーによって使用されることを目的としています。

NCRYPT_NAME_PROPERTY

L"Name"

オブジェクトの名前を含む null で終わる Unicode 文字列へのポインター。

NCRYPT_PIN_PROMPT_PROPERTY

L"SmartCardPinPrompt"

この値はサポートされていません。

NCRYPT_PIN_PROPERTY

L"SmartCardPin"

PIN を含む null で終わる Unicode 文字列へのポインター。 PIN は、スマート カード キーまたはソフトウェア ベースの KSP に格納されているパスワードで保護されたキーのパスワードに使用されます。 このプロパティは、設定することしかできません。 Microsoft KSP は、プロセスごとに 1 回だけユーザーにプロンプトが表示されるように、この値をキャッシュします。

NCRYPT_PROVIDER_HANDLE_PROPERTY

L"Provider Handle"

CNG キー ストレージ プロバイダーのハンドルを含む NCRYPT_PROV_HANDLE 。 ハンドルの使用が完了したら、 NCryptFreeObject を呼び出して解放する必要があります。

NCRYPT_READER_PROPERTY

L"SmartCardReader"

スマート カード リーダーの名前を含む null で終わる Unicode 文字列へのポインター。 このプロパティは、設定することしかできません。

NCRYPT_ROOT_CERTSTORE_PROPERTY

L"SmartcardRootCertStore"

スマート カードルート証明書ストアを表す HCERTSTORE

NCRYPT_SCARD_PIN_ID

L"SmartCardPinId"

PIN_ID上の特定の暗号化キーに関連付けられている値へのポインター。 これは読み取り専用プロパティです。 PIN_IDデータ型は、Cardmod.hで定義されます。

Windows Server 2008 と Windows Vista: この値はサポートされていません。

Cardmod.h C ヘッダー ファイルは、この API に関連する追加情報を提供します。 このファイルには、Microsoft スマート カード ミニドライバー API が指定する関数のプロトタイプと構造が含まれています。 この API は、 Microsoft Cryptographic Provider Development Kit (CPDK) から入手できます。

NCRYPT_SCARD_PIN_INFO

L"SmartCardPinInfo"

スマート カード の特定の暗号化キーに関連付けられている PIN のPIN_INFO構造へのポインター。 呼び出し元はキー ハンドルを提供します。 このプロパティは読み取り専用プロパティです。 PIN_INFO構造体は、Cardmod.hで定義されます。

Windows Server 2008 と Windows Vista: この値はサポートされていません。

NCRYPT_SECURE_PIN_PROPERTY

L"SmartCardSecurePin"

スマート カード セッション PIN を含む null で終わる Unicode 文字列へのポインター。 このプロパティは、設定することしかできません。

Windows Vista: このプロパティはサポートされていません。

NCRYPT_SECURITY_DESCR_PROPERTY

L"Security Descr"

キーのアクセス制御情報を含む SECURITY_DESCRIPTOR 構造体へのポインター。 このプロパティは、永続的なキーにのみ適用されます。 NCryptGetProperty または NCryptSetProperty 関数の dwFlags パラメーターは、取得または設定するセキュリティ記述子の一部を識別します。

NCRYPT_SECURITY_DESCR_SUPPORT_PROPERTY

L"Security Descr Support"

プロバイダーがキーのセキュリティ記述子をサポートしているかどうかを示します。 プロバイダーがキーのセキュリティ記述子をサポートしている場合、このプロパティは 1 を含む DWORD です。 このプロパティに他の値が含まれている場合、または NCryptGetProperty 関数が NTE_NOT_SUPPORTEDを返す場合、プロバイダーはキーのセキュリティ記述子をサポートしません。 このプロパティはプロバイダーにのみ適用されます。

NCRYPT_SMARTCARD_GUID_PROPERTY

L"SmartCardGuid"

スマート カードの識別子を含む BLOB。

NCRYPT_UI_POLICY_PROPERTY

L"UI Policy"

NCryptSetProperty または NCryptGetProperty 関数と共に使用する場合、これはキーの強力なキー ユーザー インターフェイス ポリシーを含むNCRYPT_UI_POLICY構造体へのポインターです。 このプロパティは、永続的なキーにのみ適用されます。 このプロパティは、キーが生成されている場合にのみ設定できます。 このキーに対して NCryptFinalizeKey 関数が呼び出されると、このプロパティは読み取り専用になります。

キー ストレージ プロバイダーは、 NCryptSetPropertyFn コールバック関数を介してこのパラメーターを受け取ることができます。 パラメーター値は、同じ情報を含む NCRYPT_UI_POLICY_BLOB 構造体です。 同様に、アプリケーションが NCryptSetPropertyFn を介してプロバイダーにこのプロパティを返す要求を行うと、プロバイダーは NCRYPT_UI_POLICY_BLOB 構造体を返す必要があります。

NCRYPT_UNIQUE_NAME_PROPERTY

L"Unique Name"

オブジェクトの一意の名前を含む null で終わる Unicode 文字列へのポインター。 これは、キーにアクセスするときに使用できる代替名です。 このプロパティは、もともと NCryptCreatePersistedKey に渡されたキー名が、永続化されたキーを確実に識別するのに十分な一意でないと考えられる場合に使用されます。 Microsoft キー ストレージ プロバイダーは、キーのファイル名をこのプロパティとして返します。

NCRYPT_USE_CONTEXT_PROPERTY

L"Use Context"

操作のコンテキストを記述する null で終わる Unicode 文字列へのポインター。 このプロパティは永続的ではなく、プロバイダーまたはキーで設定できます。 キーはプロバイダーの NCRYPT_USE_CONTEXT_PROPERTY プロパティにアクセスできません。プロパティは、設定されているハンドルにのみ固有であるためです。

プロバイダーのコンテキストでこのプロパティを使用する例は、 NCryptOpenKey の呼び出し中にユーザーにプロンプトを表示する必要があるキー ストレージ プロバイダーです (たとえば、"リーダーにスマート カードを挿入する")。 キー ハンドルは NCryptOpenKey が返されるまで使用できないため、アプリケーションは NCryptOpenKey を呼び出す前にプロバイダー ハンドルにこのプロパティを設定する必要があります。

キー ハンドルのコンテキストでこのプロパティを使用する例は、キーを使用する操作中にユーザーにプロンプトを表示する必要があるキー ストレージ プロバイダーです (たとえば、このアプリケーションでは、このキーを使用してドキュメントに署名する必要があります)。。 その後、プロバイダーは、操作中に表示される任意のユーザー インターフェイスで、このコンテキスト情報をユーザーに中継できます。

NCRYPT_USE_COUNT_ENABLED_PROPERTY

L"Enabled Use Count"

プロバイダーがキーの使用状況カウントをサポートしているかどうかを示します。 このプロパティは、プロバイダーがキーの使用状況のカウントをサポートしている場合、1 を含む DWORD です。 このプロパティに他の値が含まれている場合、または NCryptGetProperty 関数が NTE_NOT_SUPPORTEDを返す場合、プロバイダーはキーの使用状況カウントをサポートしません。 このプロパティはプロバイダーにのみ適用されます。

NCRYPT_USE_COUNT_PROPERTY

L"Use Count"

指定した秘密キーが実行した操作の数を含むULARGE_INTEGER変数。 このプロパティは省略可能であり、すべてのプロバイダーでサポートされていない場合があります。 キーでこのプロパティをサポートするプロバイダーは、プロバイダー ハンドルの NCRYPT_USE_COUNT_ENABLED_PROPERTY プロパティもサポートする必要があります。 Microsoft キー ストレージ プロバイダーでは、このプロパティはサポートされていません。 このプロパティは、永続的なキーにのみ適用されます。

NCRYPT_USER_CERTSTORE_PROPERTY

L"SmartCardUserCertStore"

スマート カード ユーザー証明書ストアを表す HCERTSTORE

NCRYPT_VBS_ROOT_PUB_PROPERTY

L"VBS_ROOT_PUB"

MS_KEY_STORAGE_PROVIDER プロバイダーの新しいプロパティ。 このプロパティを使用すると、仮想化ベースのセキュリティ (VBS) のルート署名キー (IDKS) の公開部分を取得できます。

NCRYPT_VERSION_PROPERTY

L"Version"

プロバイダーのソフトウェア バージョンを含む DWORD 。 上位の単語にはメジャー バージョンが含まれており、下位の単語にはマイナー バージョンが含まれています。 たとえば、0x00030033 = 3.51 のようにします。 このプロパティはプロバイダーにのみ適用されます。

NCRYPT_WINDOW_HANDLE_PROPERTY

L"HWND Handle"

表示される任意のユーザー インターフェイスの親として使用されるウィンドウ ハンドル (HWND) へのポインター。

望ましくない動作は、親の NULL ウィンドウ ハンドルを使用してユーザー インターフェイスが表示される場合に発生する可能性があるため、このプロパティが設定されていない限り、キー ストレージ プロバイダーにユーザー インターフェイスを表示しないことを強くお勧めします。

プロパティ データの制限を定義するには、次の値を使用します。

定数 価値 説明
NCRYPT_MAX_PROPERTY_DATA 0x100000 プロパティ値の最大サイズをバイト単位で指定します。
NCRYPT_MAX_PROPERTY_NAME 64 プロパティ名の最大サイズを文字で指定します。

要求事項

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

こちらも参照ください