2012-05-21 38 views
18

我正在开发一个使用SUNMSCAPI访问智能卡(电子ID)并检索某些证书的应用程序。在Windows上访问智能卡时重用Java Keystore

直到前一阵我可以创建密钥库并签署一个文件列表,而不需要重新创建密钥库,但现在我一次只能签署一个文件。

签署文件列表时,第一个文件的签名是正确的;当签署第二个文件时,我得到一个“插入智能卡”对话框,正在使用的智能卡变灰。

有没有人看到这种行为?

+1

您使用多线程吗?它也可能是Windows或其他应用程序,阻止应用程序获取(完全)访问该卡。 –

+0

哦,欢迎来到stackoverflow。 –

+0

由于您的回答非常少,您可能会发布一些代码示例来显示您正在使用的内容?您也可能希望解决@owlstead的问题。 –

回答

3

是的,我以前见过这个。

我正在开发用于在线使用葡萄牙ID卡的前端和中间件,一个特殊功能是能够签署多个文件(电子签名),这就是我们的确切行为!

智能卡上的安全模型可确保一次认证只支持一项操作。签名文件是一个动作,因此我们必须缓存身份验证详细信息(PIN码),并针对我们希望签名的每个文件在身份验证过程中循环。

+1

很可能是这个我们正确的答案。请注意,对签名操作的访问控制是特定于卡的,有时甚至是用户可配置的。 –