uTank-木头
每一个你不满意的现在,都有一个你没有努力的曾经。

1、什么是接触式PBOC/EMV L1:
我们所说的PBOC/EMV L1实际上就是一种“与应用无关的IC卡与终端接口规范”;
规范发布在:中国金融集成电路(IC)卡规范 第3部分;
认证测试主要包括两个部分:电气测试 和 协议测试;

首先,我们看到我们的银行卡,它上面是有6个接触点的,分别对应着:
1、VCC
2、RST
3、CLK
5、GND
6、VPP
7、IO
其中,VPP是编程电压,是没有使用到的;


传输协议:

物理层
数据链路层:(时序、具体选项、错误处理)
字符帧
T=0,定义了T=0时的字符交换
对T=0的检错与纠错
T=1,定义了 T=1是的块交换
对T=1的检错与纠错

传输层:定义了针对每个协议的面相应用的报文传输
应用层:定义报文交换的内容

==============================================
T=0:字符传输协议

命令均由终端应用层(TAL)发出,它用5个字节组成的命令头通过TTL相IC卡发送指令。
CLA、INS、P1、P2、P3

命令处理:
IC收到命令头以后向TTL回传"过程字"或"状态字SW1SW2"。

** TTL和IC卡在二者之间的命令和数据交互的任何时刻都必须知道数据流的方向和IO线由谁驱动。

00 A4 04 00 0E 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00

** 【过程字】IC向TTL表明它需要必须执行的动作;
与INS字节值相同:所有余下的数据将要由TTL传送,或者TTL准备接收所有来自IC卡的数据
与INS字节值得补码相同:下一个数据字节将由TTL传送或者TTL准备接收来自IC卡的下一个数据字节
60:TTL提供根据本条所定义的额外工作等待时间
61:TTL必须等待另一个过程字,然后再以最大长度“xx”向IC卡发送取应答(GetResponse)命令头,其中“xx”是第二个过程字的值;
6C:TTL必须等待另一个过程字,然后再以最大长度“xx”向IC卡立即重发命令头,其中“xx”是第二个过程字的值;

** 在任何情况下,完成指定的动作后,TTL必须等待下一个过程字和状态字;

** 【状态字】IC卡向TTL表明IC对命令的处理已经完成。状态字的意义与处理的命令有关。
TTL必须采取的动作和第一个状态字的对应关系:
当TTL收到第一个状态字SW1的值为“6x”或“9x”(除60/61/6C),TTL必须等待另一个状态字SW2。

 

==============================================
T=1:块传输协议

 

 

==============================================

终端传输层:
终端和IC卡之间传输C-APDU/R-APDU的机制

 

==============================================
应用层:
APDU:应用协议数据单元(Application Protocol Data Unit)

C-APDU包含一个必备的连续四字节的命令头,由CLA/INS/P1/P2表示;
同时包含一个可变长度的命令体;

命令头:
CLA:指令类型,除FF外可赋任何值;
INS: 指令码,只有在最低位为0,且高半字节即不是'6'也不是'9'时,INS才有效
P1/P2: 完成INS的参数字节

条件体:
Lc: 一个字节,表示C-APDU中发送的字节数,Lc取值范围从1~255;
命令数据:C-APDU中将要发送的数据,字节数由Lc定义;
Le: 一个字节,表示R-APDU中期望返回的最大字节数,Le取值范围从0~255;
如果Le=0,则期望返回数据的字节数的最大长度为256;

case1 : CLA INS P1 P2
case2 : CLA INS P1 P2 Le
case3 : CLA INS P1 P2 Lc Data
case4 : CLA INS P1 P2 Lc Data Le

 

posted on 2018-01-18 19:54  uTank  阅读(1151)  评论(0编辑  收藏  举报