使用 smartcardio 签署文件

Posted

技术标签:

【中文标题】使用 smartcardio 签署文件【英文标题】:Sign file using smartcardio 【发布时间】:2014-08-05 16:43:25 【问题描述】:

我将开发一个 Java 类来验证智能卡 pin 并使用智能卡中包含的证书签署文档。到目前为止,我已经找到了一些将 APDU 命令发送到智能卡的基本示例。但是我对签署文件有点困惑。

我可以使用 APDU 命令从智能卡获取证书吗? 如果是这样,一旦我检索到证书,我应该使用哪个 API 来签署文件?

非常感谢您对此有所了解

【问题讨论】:

【参考方案1】:

是的,您通常可以从卡中获取证书。对于与 ISO/IEC 7816-4、8 和 15 兼容的基于文件的卡,您可以首先解析在 7816-15 文件结构中找到的信息,然后从文件系统中检索证书。这可以使用 7816-4 中指定的命令(松散地)完成。您还应该获取卡上私钥的参考。

当您拥有证书和私钥后,您可以向卡发送 7816-8 COMPUTE DIGITAL SIGNATURE 命令 APDU。

请注意,并非所有智能卡都符合这些规范。您可能需要发卡机构提供更多信息才能确切知道该怎么做。

【讨论】:

以上是关于使用 smartcardio 签署文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 javax.smartcardio 读取 NFC Mifare Ultralight 卡

如何使用 RFID 读卡器 (javax.smartcardio) 识别德国身份证?

在 Android 上使用 javax.smartcardio 包?

通过 javax.smartcardio 连接到 micro SD

如何使用 smartcardio 和 Java 控制 ACR122 上的 LED?

使用 javax.smartcardio 时 DESfire EV1 为 PPS 命令包装 APDU 的问题