概述如何使用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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容