javax.smartcardio SCARD_SHARE_SHARED 和 SLEE4442 延迟

Posted

技术标签:

【中文标题】javax.smartcardio SCARD_SHARE_SHARED 和 SLEE4442 延迟【英文标题】:javax.smartcardio SCARD_SHARE_SHARED and SLEE4442 delay 【发布时间】:2014-03-11 18:56:16 【问题描述】:

使用“javax.smartcardio.CardTerminal”我无法使用 SCARD_SHARE_SHARED 参数连接智能卡...连接方法没有该参数...

public abstract Card connect(String protocol) throws CardException

建立与卡的连接。如果连接先前已建立指定的协议,则此方法返回与先前调用相同的 Card 对象。 参数: protocol - 要使用的协议(“T=0”、“T=1”或“T=CL”)或“”使用任何可用的协议进行连接。*

有什么方法可以使用 javax.smartcardio 执行连接 smarcard 的共享模式?

我在连接 SLEE4442 智能卡时遇到延迟问题(插入卡后 15-20 秒),我认为使用 SHARED MODE 连接可能是线索。

【问题讨论】:

【参考方案1】:

使用 Java 的 SmartcardIO,与智能卡的连接默认使用SCARD_SHARE_SHARED 打开,因此您应该已经以共享模式连接。

然后您可以使用Card.beginExclusive() 以独占模式重新打开该连接 (SCARD_SHARE_EXCLUSIVE)。

或者您可以使用以下命令以直接模式 (SCARD_SHARE_DIRECT) 打开连接:

card = terminal.connect("direct");

但在该模式下,您还需要使用 IOCTL 命令手动设置通信协议,然后才能将 APDU 发送到卡。

【讨论】:

请用哪种 smartcardio 方法发送 IOCTL?

以上是关于javax.smartcardio SCARD_SHARE_SHARED 和 SLEE4442 延迟的主要内容,如果未能解决你的问题,请参考以下文章

在 Open JDK 11(Redhat)上找不到 javax.smartcardio.*

使用 javax.smartcardio 读取 NFC Mifare Ultralight 卡

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

getATR() 不会在 javax.smartcardio 中重置智能卡

如何在 Android 上使用 javax.smartcardio 包?

在 Android 上使用 javax.smartcardio 包?