1

我是 Pavel,主要是一名 Java 开发人员。这是我的问题:

我正在尝试使用 Java Sun PKCS#11 提供程序在 HSM 插槽中列出别名,但我得到一个空列表。我已经在 Windows XP/Server 平台上使用 Java 6 和 7 进行了尝试。我下载了 Sun PKCS#11 源并检查了它们,打开了调试,做了其他技巧,所以最后我发现别名映射是空的,因为令牌没有设置 LOGIN_REQUIRED 标志。在 Sun PKCS#11 实现中,有一个 IF 构造,因此当未设置此标志时,即使向密钥库提供了 PIN 字节,也不会调用 C_Login!我觉得很奇怪!如果它是 PKCS#11 提供程序的 Sun 实现中的一个错误,或者它背后有一个总体想法,有人可以解释我吗?无论如何,当我“破解”

4

1 回答 1

0

没错,Sun PKCS#11 提供程序在查找别名时会尝试查找所有公开可见(无需登录)的私钥。之后,它将尝试为私钥找到一个可行的证书链(首先通过 PKCS#11 ID,然后通过 X509 颁发者)。

我不知道为什么,但在我看来,PKCS#11 提供程序在引入 Sparc T1 处理器 (Niagara) 的同时出现,其中包含一个加密处理器。Sun/Oracle 从未提供过任何兼容性数据——我认为他们的主要关注点是让 T1 在 Java 中工作——但这​​只是猜测。唯一确定它的方法是问。

如果你想有一个更好的提供者,你可以看看 IAIK 软件(其较低级别的开源实现被 Sun/Oracle 使用)。它们确实提供了支持和兼容性声明。然而,这是一种商业产品。

或者你可以让你的补丁被接受,我当然会对在使用 PKCS#11 FindObjects 查找可用私钥之前登录的选项感兴趣。如果您提交错误报告,我肯定会投赞成票。

于 2011-11-21T21:23:29.643 回答