Microsoft Key Storage Provider 获取密钥
Microsoft Key Storage Provider get keys
我正在尝试获取 Microsoft Key Storage Provider 中密钥的详细信息。
为此,我使用以下 API 调用打开存储提供程序:
NCryptOpenStorageProvider(&prov, MS_KEY_STORAGE_PROVIDER, 0);
然后我在 while 循环中调用 NCryptEnumKeys 以获取密钥详细信息。
但是我只能从 KSP 获得一把钥匙。
在循环 NCryptEnumKeys returns NTE_NO_MORE_ITEMS 的第二次迭代期间。
但是我在我的本地机器商店中至少有 3 个证书,这些证书以 Microsoft Key Storage Provider 作为提供者。
我已经通过 certutil -store my command.
确认了这一点
可能有什么问题?
提前致谢。
经过几天的分析和讨论,我终于找到了根本原因。它与特权有关。如果我 运行 具有管理员权限,我还可以从本地计算机证书存储中提取 ECDSA 证书的密钥。
如果您不打算使用管理员权限,只需获取证书管理器或 mmc 和 select 证书,然后根据需要获取所有任务 > 管理私钥授予权限。
我正在尝试获取 Microsoft Key Storage Provider 中密钥的详细信息。
为此,我使用以下 API 调用打开存储提供程序:
NCryptOpenStorageProvider(&prov, MS_KEY_STORAGE_PROVIDER, 0);
然后我在 while 循环中调用 NCryptEnumKeys 以获取密钥详细信息。
但是我只能从 KSP 获得一把钥匙。
在循环 NCryptEnumKeys returns NTE_NO_MORE_ITEMS 的第二次迭代期间。
但是我在我的本地机器商店中至少有 3 个证书,这些证书以 Microsoft Key Storage Provider 作为提供者。
我已经通过 certutil -store my command.
确认了这一点
可能有什么问题?
提前致谢。
经过几天的分析和讨论,我终于找到了根本原因。它与特权有关。如果我 运行 具有管理员权限,我还可以从本地计算机证书存储中提取 ECDSA 证书的密钥。 如果您不打算使用管理员权限,只需获取证书管理器或 mmc 和 select 证书,然后根据需要获取所有任务 > 管理私钥授予权限。