如何使用Windows SmartCard框架扩展的APDU【JAVA教程】

!
也想出现在这里? 联系我们
信息

如何使用Windows SmartCard框架扩展的APDU,第1张

概述如何使用Windows SmartCard框架扩展的APDU

我正在使用WinSCard来读取ISO 7816兼容的智能卡(具体来说,这是一个PIV卡)。 该卡上有一个大约12 KB的图片。 现在,我在T = 1模式下连接,并使用SCardTransmit函数发送我的GET DATA APDU命令,然后是一堆GET RESPONSE APDU命令。 我最终从卡上获取所有数据,但是SCardTransmit需要40多个调用,因为每个调用只能得到256个字节。 每次通话都需要大约半秒的时间才能完成,因此最终需要花费将近20秒来读取12 KB的数据。

我想我可以做得更快。 NIST规范规定:“通过阅读器的接触界面,12.5千字节(KB)数据的检索时间不得超过2.0秒”。 该规范引用了扩展长度的APDU,所以我认为它是支持的,但它的使用没有logging。 我试图找出来,但我无法得到它的工作。

这里是当前的命令,返回256字节的状态0x61 0x00,这意味着有更多的数据可以得到。

new byte[] { 0x00,// CLA 0xCB,// INS 0x3F,// P1 0xFF,// P2 0x05,// Lc 0x5C,0x03,// Data FIEld 0x5F,0xC1,0x09,// … (Data) 0x00 // Le };

ISO-7815-4规范的第5.3.2部分对此进行了说明:

windows上的PCSC-lite代码

Java:使用智能卡令牌的相互SSL?

CredMartialCredentials用户名提示(智能卡)

如何在windows 8上正确使用SCardGetStatusChange?

windows中的智能卡通信build立

情况4E-L = 5 +(B2‖B3),(B1)= 0且(B2‖B3)= 0

Lc字段由前3个字节组成,其中B2和B3代码Lc(!= 0)的值从1到65535

B4到Bl-2是数据字段的Lc字节

Le字段由最后2个字节Bl-1和Bl组成,其编码Le从1到65536

我采取这个意思是我的命令应该看这个:

new byte[] { 0x00,// P2 0x00,0x00,0x05,// … (Data) 0x00,0x00 // Le };

但是这不起作用。 我得到响应代码0x67 0x00,意思是“错误的长度”,没有数据从卡中检索。 想法?

基于证书的login

智能卡login窗口绑定到minIDrivers和MS基地CSP或任何CSP将工作?

Js-ctypes无效的参数

如何检测智能卡读卡器接口特性

windows 8禁用智能卡即插即用

您尝试发送的扩展APDU是正确的,但是您的卡可能不支持扩展的APDU。 卡上的Java Card版本应该在2.2.2以上才能发送这样的命令。

有关更多背景信息(也适用于windows): http : //pcsclite.alioth.debian.org/ccID_extended_apdu.HTML

总结

以上是内存溢出为你收集整理的如何使用Windows SmartCard框架扩展的APDU全部内容,希望文章能够帮你解决如何使用Windows SmartCard框架扩展的APDU所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞57 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容