我正在使用javax.smartcardio
通过CardChannel.transmit(CommandAPDU command)
向智能卡发送APDU命令。
然而,当我没有收到来自智能卡的APDU响应时,似乎某处定义了超时,因为我总是得到sun.security.smartcardio.PCSCException: Unknown error 0x8010002f
。
当我想要生成超过60秒的密钥并且在60秒后它总是失败时,就会发生这种情况。用于生成少于60秒的密钥长度的密钥的每个其他命令都可以正常工作。
我试图找到导致此异常的原因,但我真的不知道。 它是Java特定的还是我应该在其他地方看看?
此行为在桌面Windows 7 x64上使用Java 8.在具有相同操作系统和Java版本生成的不同桌面上有趣的是,没有任何例外情况可以正常工作...
答案 0 :(得分:1)
在协议级别(即,T = 0或T = 1),如果卡超过ATR的BWI中指示的时隙,则卡必须发送所谓的WTX(等待时间扩展)请求。
所以我会考虑这些可能性:
但是:所有可能的原因都不受操作系统或Java版本的影响,所有这些都在读卡器内或卡内。