Nik*_*car 5 java dialog itext x509certificate
我需要从我的java桌面程序中从 Windows 商店中选择一个证书。代码 :
KeyStore ks = KeyStore.getInstance("Windows-MY");
...
Run Code Online (Sandbox Code Playgroud)
是否java有像这个 Win Dialog 这样的“随时可用”的东西?
我使用过 C# 并且有:
X509Certificate2Collection sel = X509Certificate2UI.SelectFromCollection(certificates, null, null, X509SelectionFlag.SingleSelection);
Run Code Online (Sandbox Code Playgroud)
是否有java等价物,或者我必须dialog从密钥库 certArray创建我自己的?
这是一个已经很老的问题了,但是,我在谷歌搜索完全相同的问题时发现了它(因为我也在寻找这种可能性)。我还没有找到一个工作示例,就像我假设的那样,所以我将此答案作为非常罕见的基础并创建了一个示例项目,它正是我所需要的,并且我希望它也适合您的用例。如果没有,它至少应该为您提供一个可以让您的用例发挥作用的起点。
我已经将项目上传到我的 github 帐户中,它应该很简单(但是,我也评论了一些事情),希望它可以帮助任何像我一样遇到这个问题的人:)
它基本上使用Java Native Access 库来运行 Crypt32 API(仅适用于 Windows)和 CryptUI 库的功能。CryptUI 库用于通过您在问题中作为屏幕截图上传的证书提示来提示用户。Crypt32 库用于检索证书和证书存储(默认为 Windows-MY 证书存储,但可以轻松更改)。我还付出了一些努力来过滤证书列表,并将它们放入中间内存/缓存证书存储中(因为这是我的用例的一部分),以过滤特定的密钥用法和扩展的密钥用法。
我的示例项目还将用户选择的证书从 CERT_CONTEXT 结构(这是本机 C 结构)转换为 java java.security.cert.X509Certificate 对象,然后可以将其放入密钥库或您想要的任何内容中。
如果有关于如何改进的建议,或者如果我完全错过了一些要点,我很乐意以任何方式获得评论/问题/反馈:)
| 归档时间: |
|
| 查看次数: |
2474 次 |
| 最近记录: |