以下值用于标识密钥存储属性。
标识符
NCRYPT_ALGORITHM_GROUP_PROPERTY
L"Algorithm Group"
一个以 null 结尾的 Unicode 字符串,其中包含对象的算法组的名称。 此属性仅适用于密钥。 Microsoft密钥存储提供程序返回以下标识符。
标识符 | 价值 | DESCRIPTION |
---|---|---|
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 ,用于指定持久密钥的导出策略。 此属性仅适用于密钥。 这可以包含以下一个或多个值的零或组合。
标识符 | 价值 | DESCRIPTION |
---|---|---|
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 ,其中包含一组标志,用于定义提供程序的实现详细信息。 此属性仅适用于密钥存储提供程序。 这可以包含以下一个或多个值的零或组合。
标识符 | 价值 | DESCRIPTION |
---|---|---|
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 ,其中包含一组用于定义键类型的标志。 此属性仅适用于密钥。 这可以包含零个或以下值。
标识符 | 价值 | DESCRIPTION |
---|---|---|
NCRYPT_MACHINE_KEY_FLAG | 0x00000020 | 密钥适用于本地计算机。 如果此标志不存在,则密钥将应用于当前用户。 |
NCRYPT_KEY_USAGE_PROPERTY
L"Key Usage"
一个 DWORD ,其中包含一组标志,用于定义密钥的使用详细信息。 此属性仅适用于密钥。 这可以包含以下一个或多个值的零或组合。
标识符 | 价值 | DESCRIPTION |
---|---|---|
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 将缓存此值,以便每个进程仅提示用户一次。
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 加密提供程序开发工具包(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"
指示提供程序是否支持密钥的使用情况计数。 此属性是一个 DWORD ,如果提供程序支持密钥的使用计数,则包含 1。 如果此属性包含任何其他值,或者 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 窗口句柄显示用户界面时,可能会发生不良行为,因此强烈建议密钥存储提供程序不显示用户界面,除非设置了此属性。
以下值用于定义属性数据的限制。
恒定 | 价值 | DESCRIPTION |
---|---|---|
NCRYPT_MAX_PROPERTY_DATA | 0x100000 | 指定属性值的最大大小(以字节为单位)。 |
NCRYPT_MAX_PROPERTY_NAME | 64 | 指定属性名称的最大大小(以字符为单位)。 |
要求
要求 | 价值 |
---|---|
支持的最低客户端 | Windows Vista [仅限桌面应用] |
支持的最低服务器 | Windows Server 2008 [仅限桌面应用] |
标题 | Ncrypt.h |