Linux 使用pr533 jmrtd和pcsc lite在phyflex i.MX6上读取Passport失败

Linux 使用pr533 jmrtd和pcsc lite在phyflex i.MX6上读取Passport失败,linux,yocto,pcsc,Linux,Yocto,Pcsc,我们目前正在使用此设置: 硬件: phyFlex i.MX6(Fsl臂)板 液晶显示器 PR533 Usb评估板(ccid compat) 软件: yocto poky/oe 1.7,当前眩晕fsl层 pcsc lite(1.8.6也用1.8.13测试) ccid(1.4.8)也使用1.4.18进行了测试 fsl社区3.18 火柴盒佐藤作为x11会话管理器 JMRTD 0.4.9(使用jar应用程序进行测试) 我们希望使用pcsc lite和JMRTD读取passport(用于测试加密狗

我们目前正在使用此设置:

硬件:

  • phyFlex i.MX6(Fsl臂)板
  • 液晶显示器
  • PR533 Usb评估板(ccid compat)
软件:

  • yocto poky/oe 1.7,当前眩晕fsl层
  • pcsc lite(1.8.6也用1.8.13测试)
  • ccid(1.4.8)也使用1.4.18进行了测试
  • fsl社区3.18
  • 火柴盒佐藤作为x11会话管理器
  • JMRTD 0.4.9(使用jar应用程序进行测试)
我们希望使用pcsc lite和JMRTD读取passport(用于测试加密狗)。安装程序使用标准linux(Mint)工作站工作,但无法使用嵌入式版本读取passport(可能是由于超时?)

它似乎会断开与passport的连接(状态词
0x6600
0x6F01
0x6F00
),而在工作站上,在成功连接之前,这种情况只会发生一次或两次。 我们也尝试了更新版本的pcsc或ccid,但没有任何改变

您可以在下面找到主机和目标的详细日志

有没有关于为什么会发生这种情况的建议

主机日志:

00000004 Card ATR: 3B 80 80 01 01 
00000003 ifdhandler.c:291:IFDHPolling() usb:1fc9/010b:libudev:0:/dev/bus/usb/003/009 (lun: 0) 5000 ms
00000003 ccid_usb.c:1202:InterruptRead() before (0)
00052371 winscard_svc.c:319:ContextThread() Received command: CMD_GET_READERS_STATE from client 14
00001788 winscard_svc.c:319:ContextThread() Received command: CMD_GET_READERS_STATE from client 14
00000056 winscard_svc.c:319:ContextThread() Received command: STATUS from client 14
00000014 readerfactory.c:772:RFReaderInfoById() RefReader() count was: 1
00000004 winscard.c:1291:SCardStatus() UnrefReader() count was: 2
00000003 winscard_svc.c:561:ContextThread() STATUS rv=0x80100069 for client 14
00000121 winscard_svc.c:319:ContextThread() Received command: CONNECT from client 14
00000018 winscard.c:235:SCardConnect() Attempting Connect to NXP PR533 (3.60) 00 00 using protocol: 3
00000004 readerfactory.c:745:RFReaderInfo() RefReader() count was: 1
00000003 winscard.c:330:SCardConnect() powerState: POWER_STATE_INUSE
00000003 prothandler.c:87:PHSetProtocol() Attempting PTS to T=1
00000005 ifdhandler.c:668:IFDHSetProtocolParameters() protocol T=1, usb:1fc9/010b:libudev:0:/dev/bus/usb/003/009 (lun: 0)
00000002 ifdhandler.c:682:IFDHSetProtocolParameters() Timeout: 3000 ms
00000002 winscard.c:409:SCardConnect() Active Protocol: T=1
00000004 winscard.c:429:SCardConnect() hCard Identity: 64aa6fd3
00000004 winscard.c:490:SCardConnect() UnrefReader() count was: 2
00000004 winscard_svc.c:453:ContextThread() CONNECT rv=0x0 for client 14
00000053 winscard_svc.c:319:ContextThread() Received command: CMD_GET_READERS_STATE from client 14
00000037 winscard_svc.c:319:ContextThread() Received command: STATUS from client 14
00000011 readerfactory.c:772:RFReaderInfoById() RefReader() count was: 1
00000003 winscard.c:1291:SCardStatus() UnrefReader() count was: 2
00000003 winscard_svc.c:561:ContextThread() STATUS rv=0x0 for client 14
00000096 winscard_svc.c:319:ContextThread() Received command: TRANSMIT from client 14
00000020 readerfactory.c:772:RFReaderInfoById() RefReader() count was: 1
00000005 winscard.c:1587:SCardTransmit() Send Protocol: T=1
00000006 APDU: 00 A4 04 0C 07 A0 00 00 02 47 10 01 
00000003 ifdhandler.c:1266:IFDHTransmitToICC() usb:1fc9/010b:libudev:0:/dev/bus/usb/003/009 (lun: 0)
00000004 commands.c:1513:CmdXfrBlockAPDU_extended() T=0 (extended): 12 bytes
00000007 -> 000000 6F 0C 00 00 00 00 1B 00 00 00 00 A4 04 0C 07 A0 00 00 02 47 10 01 
00078174 <- 000000 80 02 00 00 00 00 1B 00 00 00 90 00 
00000020 SW: 90 00 
00000006 winscard.c:1632:SCardTransmit() UnrefReader() count was: 2
00000006 winscard_svc.c:608:ContextThread() TRANSMIT rv=0x0 for client 14
00000169 winscard_svc.c:319:ContextThread() Received command: TRANSMIT from client 14
00000018 readerfactory.c:772:RFReaderInfoById() RefReader() count was: 1
00000005 winscard.c:1587:SCardTransmit() Send Protocol: T=1
00000004 APDU: 00 A4 02 0C 02 01 1E 
00000004 ifdhandler.c:1266:IFDHTransmitToICC() usb:1fc9/010b:libudev:0:/dev/bus/usb/003/009 (lun: 0)
00000002 commands.c:1513:CmdXfrBlockAPDU_extended() T=0 (extended): 7 bytes
00000006 -> 000000 6F 07 00 00 00 00 1C 00 00 00 00 A4 02 0C 02 01 1E 
00017077 <- 000000 80 02 00 00 00 00 1C 00 00 00 69 82 
00000019 SW: 69 82
0000000 4卡自动识别码:3B 80 01
00000003 ifdhandler.c:291:IFDHPolling()usb:1fc9/010b:libudev:0:/dev/bus/usb/003/009(lun:0)5000毫秒
00000003 ccid_usb.c:1202:InterruptRead()在(0)之前
00052371 winscard_svc.c:319:ContextThread()从客户端14接收到命令:CMD\u GET\u READERS\u STATE
00001788 winscard_svc.c:319:ContextThread()从客户端14接收到命令:CMD\u GET\u READERS\u STATE
00000056 winscard_svc.c:319:ContextThread()从客户端14接收到命令:STATUS
00000014 readerfactory.c:772:RFReaderInfoById()RefReader()计数为:1
00000004 winscard.c:1291:SCardStatus()UnrefReader()计数为:2
0000000 3 winscard_svc.c:561:ContextThread()状态rv=0x80100069,适用于客户端14
00000121 winscard_svc.c:319:ContextThread()从客户端14接收到命令:CONNECT
000000 18 winscard.c:235:SCardConnect()正在尝试使用协议3连接到NXP PR533(3.60)00 00
0000000 4 readerfactory.c:745:RFReaderInfo()RefReader()计数为:1
00000003 winscard.c:330:SCardConnect()电源状态:电源状态使用
0000000 3 prothandler.c:87:PHSetProtocol()正在尝试将PTS转换为T=1
00000005 ifdhandler.c:668:IFDHSetProtocolParameters()协议T=1,usb:1fc9/010b:libudev:0:/dev/bus/usb/003/009(lun:0)
00000002 ifdhandler.c:682:IFDHSetProtocolParameters()超时:3000毫秒
00000002 winscard.c:409:SCardConnect()活动协议:T=1
00000004 winscard.c:429:SCardConnect()hCard标识:64aa6fd3
00000004 winscard.c:490:SCardConnect()UnrefReader()计数为:2
0000000 4 winscard_svc.c:453:ContextThread()CONNECT rv=0x0用于客户端14
00000053 winscard_svc.c:319:ContextThread()从客户端14接收到命令:CMD\u GET\u READERS\u STATE
00000037 winscard_svc.c:319:ContextThread()从客户端14接收到命令:STATUS
00000011 readerfactory.c:772:RFReaderInfoById()RefReader()计数为:1
00000003 winscard.c:1291:SCardStatus()UnrefReader()计数为:2
0000000 3 winscard_svc.c:561:ContextThread()状态rv=0x0,用于客户端14
000000 96 winscard_svc.c:319:ContextThread()收到命令:从客户端14传输
00000020 readerfactory.c:772:RFReaderInfoById()RefReader()计数为:1
00000005 winscard.c:1587:SCardTransmit()发送协议:T=1
0000000 6 APDU:00 A4 04 0C 07 A0 00 02 47 10 01
00000003 ifdhandler.c:1266:IFDHTransmitToICC()usb:1fc9/010b:libudev:0:/dev/bus/usb/003/009(lun:0)
0000000 4个命令。c:1513:CmdXfrBlockAPDU_extended()T=0(扩展):12字节
00000007->0000006F 0C 00 00 00 1B 00 00 00 00 00 A4 04 0C 07 A0 00 02 47 10 01
00078174000000 6F 07 00 00 00 00 1C 00 00 00 00 A4 02 0C 02 01 1E
00017077000000 6F 0C 00 00 00 35 00 00 00 00 00 A4 04 0C 07 A0 00 00 02 47 10 01
02712060  000000 65 00 00 00 00 00 36 00 00 00 

00001206您没有发布任何代码,因此我无法确定错误的确切原因。这可能与设置得太短的超时或您正在读取的芯片上的电源不足有关,但您日志中吸引我注意的状态字是
0x6982


0x6982
是什么意思? 基本上
0x6982
表示存在某种未经授权的访问。从文档中可以看出:

支持基本访问控制的MRtd非接触式IC必须 响应未经验证的读取尝试(包括选择 “安全状态未满足”的(受保护的)LDS中的文件 (0x6982)一旦建立安全通道。发送不安全的 在安全通道中选择将导致安全通道中止 通道。在安全通道关闭之前发送不安全选择时 已建立或安全通道已中止时,两个 9000份是符合国际民航组织要求的答复

0x6982
用作对许多命令的响应,根据接收状态词的确切上下文,其含义略有不同,但基本含义保持不变:存在某种安全问题。例如,下面是一些更具体的
0x6982
定义:

在通用身份验证命令的上下文中,它意味着:

未满足安全状态。
终端无权执行协议(例如,密码被阻止、停用或挂起)

在Verify命令的上下文中,它表示:

未满足安全状态
终端无权执行验证

在激活或停用命令的上下文中,它表示:

未满足安全状态
终端无权更改PIN状态

我无法从您发布的日志中判断错误发生在哪个上下文中,但正如您所看到的,一般主题总是相同的


那么
0x6F01
0x6F00
0x6600
呢? 状态词whi
00000140 readerfactory.c:795:RFReaderInfoById() RefReader() count was: 1
00000042 winscard.c:1314:SCardStatus() UnrefReader() count was: 2
00000034 winscard_svc.c:606:ContextThread() STATUS rv=0x80100069 for client 14
00000483 winscard_svc.c:353:ContextThread() Received command: CONNECT from client 14
00000141 winscard_svc.c:484:ContextThread() Authorized client for 'NXP PR533 (3.60) 00 00'
00000038 winscard.c:258:SCardConnect() Attempting Connect to NXP PR533 (3.60) 00 00 using protocol: 3
00000033 readerfactory.c:768:RFReaderInfo() RefReader() count was: 1
00000028 winscard.c:353:SCardConnect() powerState: POWER_STATE_INUSE
00000029 prothandler.c:110:PHSetProtocol() Attempting PTS to T=1
00000039 ifdhandler.c:682:IFDHSetProtocolParameters() protocol T=1, usb:1fc9/010b:libudev:0:/dev/bus/usb/001/003 (lun: 0)
00000028 ifdhandler.c:696:IFDHSetProtocolParameters() Timeout: 3000 ms
00000022 winscard.c:432:SCardConnect() Active Protocol: T=1
00000039 winscard.c:452:SCardConnect() hCard Identity: 31739a24
00000036 winscard.c:513:SCardConnect() UnrefReader() count was: 2
00000035 winscard_svc.c:498:ContextThread() CONNECT rv=0x0 for client 14
00000232 winscard_svc.c:353:ContextThread() Received command: CMD_GET_READERS_STATE from client 14
00000202 winscard_svc.c:353:ContextThread() Received command: STATUS from client 14
00000132 readerfactory.c:795:RFReaderInfoById() RefReader() count was: 1
00000040 winscard.c:1314:SCardStatus() UnrefReader() count was: 2
00000031 winscard_svc.c:606:ContextThread() STATUS rv=0x0 for client 14
00000450 winscard_svc.c:353:ContextThread() Received command: TRANSMIT from client 14
00000222 readerfactory.c:795:RFReaderInfoById() RefReader() count was: 1
00000042 winscard.c:1610:SCardTransmit() Send Protocol: T=1
00000050 APDU: 00 A4 04 0C 07 A0 00 00 02 47 10 01 
00000031 ifdhandler.c:1283:IFDHTransmitToICC() usb:1fc9/010b:libudev:0:/dev/bus/usb/001/003 (lun: 0)
00000028 commands.c:1590:CmdXfrBlockAPDU_extended() T=0 (extended): 12 bytes
00000066 -> 000000 6F 0C 00 00 00 00 35 00 00 00 00 A4 04 0C 07 A0 00 00 02 47 10 01 
02712060 <- 000000 80 02 00 00 00 00 35 01 00 00 6F 01 
00000058 SW: 6F 01 
00000030 winscard.c:1655:SCardTransmit() UnrefReader() count was: 2
00000033 winscard_svc.c:653:ContextThread() TRANSMIT rv=0x0 for client 14
00004692 winscard_svc.c:353:ContextThread() Received command: CMD_GET_READERS_STATE from client 14
00000241 winscard_svc.c:353:ContextThread() Received command: CMD_GET_READERS_STATE from client 14
00000287 winscard_svc.c:353:ContextThread() Received command: CMD_GET_READERS_STATE from client 14
00115382 ccid_usb.c:1254:InterruptRead() after (0) (0)
00000060 NotifySlotChange: 50 02 
00000039 ifdhandler.c:1787:IFDHICCPresence() usb:1fc9/010b:libudev:0:/dev/bus/usb/001/003 (lun: 0)
00000046 -> 000000 65 00 00 00 00 00 36 00 00 00 
00001206 <- 000000 81 00 00 00 00 00 36 02 00 00 
00000040 ifdhandler.c:1908:IFDHICCPresence() Card absent
00000056 eventhandler.c:358:EHStatusHandlerThread() Card Removed From NXP PR533 (3.60) 00 00
00000043 ifdhandler.c:304:IFDHPolling() usb:1fc9/010b:libudev:0:/dev/bus/usb/001/003 (lun: 0) 600000 ms
00000027 ccid_usb.c:1210:InterruptRead() before (0)