使用PINPAD

时间:2016-09-06 09:52:35

标签: android smartcard apdu smartcard-reader eid

我在PINPAD阅读器上验证PIN码的所有尝试最终都失败了,这是我的情况:

设置

  • 比利时EID卡;
  • Vasco DIGIPASS 875,蓝牙连接;
  • 使用Vasco SDK的Android应用程序。

情况

我使用APDU命令选择和读取文件,设置安全环境(MSE:SET),经过大量研究和合并不同文档的不同解决方案后,我可以让读者询问我的PIN码码。但是使用我的伪APDU命令,我收到69 | C#响应。相同的过程(读取文件,设置安全环境和验证PIN)在没有PINPAD的USB读卡器上正常工作,所以我猜APDU命令没问题,但不是之前的伪APDU命令。

使用的文档

The BEID documentation,PC / SC Spec第10部分(2.5.2)和补充(2.2.1)和USB Smart Card devices,用于6.1.11.3至6.1.11.6的章节。

我明白了什么?

第一部分应为FF C2 01 06,以便在阅读器上进行直接PIN验证,然后是后续数据的大小。  接下来应遵循PC / SC第10部分的结构,其中包括:

  1. 超时1& 2(默认为00);
  2. 格式(对我来说应该是89,因为它应该是10001001 1个字节的偏移PIN,左对齐和BCD);
  3. PIN块格式(应为48,因为包含4位长度,PIN块为8字节);
  4. PIN长度格式(04:PIN块中的4位偏移量);
  5. 最小/最长PIN长度:040C(但没有这样的工作,0404肯定能够正常工作);
  6. 确认条件为02表示ok按钮;
  7. 消息数量:01使用命令中的消息;
  8. 英语的语言为0409;
  9. 要显示的消息为00,表示输入PIN;
  10. 000000因为此字段未被使用;
  11. 使用PIN格式化后传输的最终APDU命令的长度(0000000D是我的猜测);
  12. 然后是APDU命令:0020000108FFFFFFFFFFFFFFFF
  13. 结果

    我已经多次改变了一些我不太确定的值(2,3,4,11和12对于已经存在的填充字符),没有成功,有时只是不同的结果代码。 / p>

    我在这里做错了什么?

    提前谢谢!

1 个答案:

答案 0 :(得分:2)

经过最后一轮研究和检查后,我发现另一个例子告诉我我的错误:PIN块!它是47,因为它不包括控制/有效PIN长度。所以对我来说正确的答案是:

0xFF, 0xC2, 0x01, 0x06, // Base PPDU command
0x20,                   // Length of the data
0x00,                   // timeout
0x00,                   // timeout
0x89,                   // format
0x47,                   // PIN block
0x04,                   // PIN length format
0x04,                   // Min pin size
0x04,                   // Max pin size
0x02,                   // Entry validation condition
0x01,                   // Number of messages to display
0x04, 0x09,             // English
0x00,                   // Message "Enter pin"
0x00, 0x00, 0x00,       // Non significant here
0x00, 0x00, 0x00, 0x0D, // Length of the apdu once formatted
0x00, 0x20, 0x00, 0x01, // APDU command VERIFY
0x08,                   // APDU command Data length
0x20,                   // APDU command Control data + Effective PIN length
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF // APDU command PIN + filler