密钥存储属性标识符

以下值用于标识密钥存储属性。

标识符

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"

一个 LPWSTR 值,该值指示椭圆曲线Diffie-Hellman (ECDH) 密钥的容器名称,该密钥用于椭圆曲线数字签名算法 (ECDSA) 密钥的给定句柄。 如果卡上没有 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 ,这些标志指定持久密钥的导出策略。 此属性仅适用于密钥。 这可以包含零个值,也可以包含以下一个或多个值的组合。

标识符 说明
NCRYPT_ALLOW_EXPORT_FLAG 0x00000001 可以导出私钥。
NCRYPT_ALLOW_PLAINTEXT_EXPORT_FLAG 0x00000002 私钥可以纯文本形式导出。
NCRYPT_ALLOW_ARCHIVING_FLAG 0x00000004 可以将私钥导出一次,以便进行存档。 此标志仅适用于设置它的原始密钥句柄。 此策略只能应用于原始密钥句柄。 关闭密钥句柄后,无法再出于存档目的导出密钥。
NCRYPT_ALLOW_PLAINTEXT_ARCHIVING_FLAG 0x00000008 私钥可以以纯文本形式导出一次,以便进行存档。 此标志仅适用于设置它的原始密钥句柄。 此策略只能应用于原始密钥句柄。 关闭密钥句柄后,无法再出于存档目的导出密钥。

NCRYPT_IMPL_TYPE_PROPERTY

L"Impl Type"

包含一组用于定义提供程序实现详细信息的标志的 DWORD 。 此属性仅适用于密钥存储提供程序。 这可以包含零个值,也可以包含以下一个或多个值的组合。

标识符 说明
NCRYPT_IMPL_HARDWARE_FLAG 0x00000001 提供程序基于硬件。
NCRYPT_IMPL_SOFTWARE_FLAG 0x00000002 提供程序基于软件。
NCRYPT_IMPL_REMOVABLE_FLAG 0x00000008 提供程序是可移动的。
NCRYPT_IMPL_HARDWARE_RNG_FLAG 0x00000010 提供程序是基于硬件的随机数生成器。

NCRYPT_KEY_TYPE_PROPERTY

L"Key Type"

包含一组定义键类型的标志的 DWORD 。 此属性仅适用于密钥。 这可以包含零或以下值。

标识符 说明
NCRYPT_MACHINE_KEY_FLAG 0x00000020 密钥适用于本地计算机。 如果此标志不存在,则密钥将应用于当前用户。

NCRYPT_KEY_USAGE_PROPERTY

L"Key Usage"

包含一组标志的 DWORD ,这些标志定义密钥的用法详细信息。 此属性仅适用于密钥。 这可以包含零个值,也可以包含以下一个或多个值的组合。

标识符 说明
NCRYPT_ALLOW_DECRYPT_FLAG 0x00000001 密钥可用于解密。
NCRYPT_ALLOW_SIGNING_FLAG 0x00000002 密钥可用于签名。
NCRYPT_ALLOW_KEY_AGREEMENT_FLAG 0x00000004 密钥可用于机密协议加密。
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 将缓存此值,以便每个进程仅提示用户一次。

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: 不支持此值。

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 结构的指针。 此属性仅适用于持久性键。 NCryptGetPropertyNCryptSetProperty 函数的 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"

如果与 NCryptSetPropertyNCryptGetProperty 函数一起使用,则这是指向包含密钥强键用户界面策略 的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_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

另请参阅