为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 7816-3协议使用说明

7816-3协议使用说明

2022-08-19 20页 doc 120KB 11阅读

用户头像

is_240534

暂无简介

举报
7816-3协议使用说明部门名称文档编号版本号页数密级内部设计代码名称7816(仅供内部使用)文档作者孙昊日  期2008-7-22审  核日  期批  准日  期北京中电华大电子设计有限责任公司二○○八年文档修改履历序号日期修改范围新版本号修改人12008-7-22初稿0.01孙昊22008-7-30结构修改0.02孙昊2009-12-1对ATR正向,反向约定进行补充0.03商木喜...
7816-3协议使用说明
部门名称文档编号版本号页数密级内部代码名称7816(仅供内部使用)文档作者孙昊日  期2008-7-22审  核日  期批  准日  期北京中电华大电子设计有限责任公司二○○八年文档修改履历序号日期修改范围新版本号修改人12008-7-22初稿0.01孙昊22008-7-30结构修改0.02孙昊2009-12-1对ATR正向,反向约定进行补充0.03商木喜目录1  卡的操作过程2  复位应答2.1  概述2.2  复位应答结构2.2.1  初始字符和编码约定2.2.2  格式字节T02.2.3  接口字节TA(i)TB(i)TC(i)TD(i)2.2.3.1  TD(i)2.2.3.2  TA(i)TB(i)TC(i)2.2.3.3  历史字节T1,T2……TK2.2.3.4  校验字节TCK2.2.4  ATR示例2.3  参数T2.4  异步字符2.4.1  基本时间单元2.4.2  字符帧2.5  错误处理3  PPS3.1  概述3.2  PPS结构3.3  成功的PPS交换3.4  错误处理4  T=0,异步半双工字符传输协议4.1  APDU结构4.2  过程字节4.2.1  概述4.2.2  发送“60”4.2.3  确认字节4.2.4  状态字节4.3  错误处理4.4  APDU示例5  T=1异步半双工块传输协议5.1  块帧5.1.1  概述5.1.2  起始域5.1.2.1  节点地址字节5.1.2.2  协议控制字节5.1.2.3  长度(LEN)5.1.3  信息域(INF)5.1.4  终止域5.2  协议参数5.2.1  T=1时的特殊接口字节5.2.2  信息域尺寸5.2.2.1  卡的信息域尺寸(IFSC)5.2.2.2  接口设备的信息域尺寸IFSD5.2.2.3  IFSC和IFSD的编码5.2.3  等待时间5.2.3.1  字符等待时间CWT5.2.3.2  块等待时间(BWT)5.2.3.3  块保护时间(BGT)5.2.4  错误检测编码5.3  T=1ATR的示例和块的示例5.4  错误处理5.5  T=0与T=1的比较1卡的操作过程在7816协议下,从卡插入读卡器后的整个过程。1)读卡器激活电路(通电了,卡可以工作了)2)卡被读卡器复位(一开始是冷复位,之后可以有热复位)3)卡的复位应答(一开始由冷复位启动,之后的过程中可由热复位启动)。这个步骤是必须的。在这里就是指卡被复位之后,需要对读卡器进行应答,应答的内容包括:●正、反向约定●T协议的取值●FiDi(设置分频比)●历史字节(卡自身的一些信息),等内容(这些会在后面的章节讲述)4)PPS协商。主要是根据卡对读卡器复位应答的信息,做出通信协商。主要协商T协议和FiDi。不是必需的,由协议T的取值的个数决定,若T只有一个取值,那么可以不进行PPS协商,直接进行数据通信。5)在协议T=0的情况下,进行异步半双工字符传输协议。在协议T=1的情况下,进行异步半双工块传输协议。这部分是卡与读卡器交换信息、工作的部分6)如需要,可以返回第2步(进行热复位),然后继续后面的步骤。如无需要直接进行第7步7)接口设备释放电路电路的释放顺序应在卡上触点和接口设备上触点之间的机械断开之前结束。2复位应答2.1概述如第一章所述,复位应答发生在读卡器对卡进行复位(冷/热)之后,是卡对读卡器的回应。它告诉读卡器,卡自己所支持的协议、分频比和一些其它的信息。复位应答是一系列字节,在I/O电路上,每个字节在一个异步字符中传输。这一系列的字节的长度是可变的,但最多只能是33个字符,它们是(如图1):8)初始字符TS,长度为一个字节,强制性。是复位应答的开始,只能为“3B”、“3F”两个值中的一个。3B是正向约定,3F是反向约定。9)T0格式字符,强制性。高四位表明TA(1)、TB(1)、TC(1)、TD(1)的存在,低四位表明历史字节的个数(0-15)。10)TA(i)TB(i)TC(i)TD(i)接口字符,可选的。主要用于设置Fi、Di(这两个值用来表明分频比),T=0或T=1协议。11)T1T2-Tk历史字符,可选的。标明通用信息(可自己设计的信息)12)Tck检测字符,有条件的。除TS外所有字节的异或值。图1复位应答的结构2.2复位应答结构2.2.1初始字符和编码约定TS为一个字节,是复位应答的开始。简单来说TS可以有两个值,分别为3B(11011100)(正向约定),3F(00111111)(反向约定)。所谓正向约定,就是高电平为“1”,低电平为“0”。而所谓反向约定,就是低电平为“1”,高电平为“0”。详细的说明:图2为初始字符TS的结构:13)m1到m4时刻定义同步序列(Z)AZZA。14)m5到m7时刻以值AAA或ZZZ分别指明000反向或正向约定。15)m8到m10时刻等于AAZ。图2初始字符TSTS有两个可能值,显示为处于状态Z或A的十个时刻的字符,并且按照编码协议,显示为1或0值的八位的字节。字符(Z)AZZAAAAAZ设定状态A编码值1以及m2时刻传输最高有效位msb处的反向约定。反向约定解码时传输的字节等于3F。字符(Z)AZZAZZZAAZ设定状态Z编码值1以及m2时刻传输最低有效位lsb处的正向约定。正向约定解码时传输的字节等于3B。2.2.2格式字节T0格式字节T0在初始字节TS之后,为一个字节。T0有两个作用,分别由它的高四位b5-b8和低四位b1-b4承担。按照图3,字节T0由两部分组成:16)位b5到b8表明后面TA(1)、TB(1)、TC(1)、TD(1)的存在,“1”为存在,“0”为不存在。17)位b4到b1构成K,K值为历史字节的个数,范围从0到15。图3T0编码T0的作用与之后提到的TD(i)的类似,都是在b8-b5位表明了后面TA(i1)、TB(i1)、TC(i1)、TD(i1)的存在与否。2.2.3接口字节TA(i)TB(i)TC(i)TD(i)2.2.3.1TD(i)按照图4,字节TD(i)由两部分组成。18)位b5到b8表明后面TA(i1)、TB(i1)、TC(i1)、TD(i1)的存在,“1”为存在,“0”为不存在。19)位b4到b1构成2.4中定义的参数T的值,“0000”,T=0;“0001”,T=1;“1111”,T=15。●在不同的TD(i)中,可以分别告诉读卡器卡所支持的T协议。●如果两个或多个参数T的值存在于TD(1)、TD(2)……中它们应当按照数字升序存在。如果存在,T=0是第一个,T=15是最后一个。TD(1)中禁止设置T=15。●如果TD(i)不存在,则接口字节TA(i1)、TB(i1)、TC(i1)和TD(i1)也不存在。图4TD(i)编码2.2.3.2TA(i)TB(i)TC(i)TA(1)代码:20)FI,位b8到b5上的时钟率转换因子的引用见表1。21)DI,位b4到b1上波特率校正因子的引用见表2。这里设置的FI、DI所对应的分频比,是卡支持的最小分频比,就是最快的。虚线中的内容,我也不太明白。-----------------------------------------------------------------------TB(1)b8=0代码:22)II,位b7b6上最大编程电流的引用。23)PI1,位b5到b1上编程电压的值。注:接口设备可以忽略TB(1)的位b8。TC(1)代码,N计算八位额外保护时间的引用。TA(2)是专用模式字节。TB(2)用八位上的编程电压值PI2编码以代替PI1。TA(i)在TD(i-1)(i>2)中的T=15的第一个出现后编码:24)XI位b8b7上时钟停止指示的参考。25)UI位b6到b1上级别指示的参考。------------------------------------------------------------------------表1Fi指明的时钟率转换因子的值表2Di指明的波特率校正参数的值接口字节TA(i)TB(i)和TC(i)(i=1,2,3,……)是全局的或专用的。26)如果T≠15则字节是协议T专用的。27)如果T=15则字节是全局的。注:参数T与位图技术的组合,允许仅发送有用的接口字节,并在需要为那些与不存在的接口字节对应的参数使用缺省值。2.2.3.3历史字节T1,T2……TK历史字节标明通用信息。例如:卡生产商、插入卡中的芯片、芯片的掩膜ROM、卡的寿命状态。ISO/IEC7816-4了历史字节的内容(应用中也可自己定义)。历史字节的个数是在T0的b4-b1中设定的。2.2.3.4校验字节TCK字节TCK的值是从T0(不包括TS)到TK(TCK前一个字节)的所有字节的异或值。如果仅指明T=0(可能通过缺省),则字节TCK不存在。如果T=0和T=15存在并在所有其它情况下,字节TCK应当存在。2.2.4ATR示例表3ATR示例字符(Character)值(Value)描述(Description)TS‘3B’正向约定T0‘95’TA1和TD1存在4个历史字节TA1‘97’时钟频率转换因子FI=9(F=512)波特率调整因子DI=7(D=64)TD1‘80’仅TD2存在,支持协议T=0TD2‘B1’TA3、TB3和TD3存在支持协议T=1TA3‘FE’IFSC有254个字节长TB3‘00’块等候整数=0字符等候整数=0TD3‘1F’仅TA4存在,后跟全局接口字节TA4‘43’支持时钟停止(低电状态)支持3V,5VT1‘51’CPU架构T2‘16’芯片型号T3‘0D’T4‘01’测试cos主版本号T5‘00’测试cos副版本号TCK‘DA’2.3参数TT参数指明了传输协议和/或接口字节的类型,参数T的值由TD(i)的位b4到b1的编码值确定:28)T=0异步半双工字符传输协议在第4章中说明。29)T=1异步半双工块传输协议在第5章中说明。30)T=2和T=3保留用于将来的全双工操作。31)T=4保留用于增强的异步半双工字符传输协议。32)T=5到T=13保留待未来使用。33)T=14未由ISO/IECJTC1SC17化的传输协议。34)T=15不属于传输协议,仅指明了全程接口字节的类型。2.4异步字符2.4.1基本时间单元在复位应答期间,1etu应与372个时钟周期相等。1etu=372/f2.4.2字符帧字符传输前,I/O端应被置为状态Z。如图5所示,一个字符包括10个连续的时刻,每一时刻不是在状态Z(高电平),就是在状态A(低电平)。35)第一个时刻m1被置于状态A,这个时刻称为起始时刻。36)m2-m9这八个时刻传送1个字节。37)最后一个时刻m10确保字符奇偶校验。它传送“奇偶校验位”。图5字符帧在每个字符中,如果在时刻mn结束时状态改变,则从字符上升沿到mn下降沿间的延迟应是tn=(n±0.2)etu。发送方的时间起点是字符的上升沿。当寻找一个字符时,收方定期地对I/O取样:取样时间应少于0.2etu,接收方的时间起点是在Z状态的最后一个观察点和A状态的第一个观察点中间。接收方应在0.7etu(接收方时间)之前确认m1,然后应在(1.5±0.2)etu,收到m2,在(2.5±0.2)etu收到m3,……在(8.5±0.2)etu收到m9,在(9.5±0.2)etu收到m10,字符奇偶校验在不工作时进行。两个连续字符上升沿之间的延迟至少是12etu,例如,一个字符的持续时间(10±0.2)etu加上保持时间在保护时间,接口设备和卡都保持接收状态(因此I/O状态为Z)。在复位应答期间,卡发出的两个连续字符的上升沿间的延迟应不超过9600etu,这个最大值被称为初始等待时间。2.5错误处理在复位应答期间,下列字符的重发过程取决于协议类型,该过程对使用协议类型T=0是强制性的。当奇偶差错时,在(10.5±0.2)etu(接收方时间)时,收方传送一个状态为A(拉低电平),最少为1etu,最大为2etu的差错信号,然后,收方将等待对有争议的字符重发见图9。为了检测到一个差错信号,发方将检查I/O电路在(11±0.2)etu(发送方时间)时的状态,例如字符的上升沿之后:38)如果I/O为状态Z,即假定为正确接收。39)如果I/O状态为A,即假定传输是不正确。在检测到差错信号后的至少2个etu的延迟之后,发送方重复该字符。如果卡没有重发字符:40)卡忽略接口设备来的错误信号并不应受其破坏。41)接口设备应能启动重复整个复位操作。图6字符传送和重发3PPS3.1概述PPS协商发生在ATR之后,但是PPS协商不是必需的。当ATR(复位应答)时,只指定了一种T协议,那么PPS协商可以不进行,将使用372分频。3.2PPS结构PPS协商包括(见图7),它的长度是不是固定的:42)一个初始字节PPSS。PPSS识别PPS请求或响应并等于FF,即PPSS=FF,在COS里会作判断,判断是否在进行PPS协商。43)一个格式字节PPS0。PPS0通过位b5、b6、b7分别指明可选字节PPS1、PPS2、PPS3的存在。位b4到b1为T的值,“0000”为T=1,“0001”为T=1。位b8留作未来使用并设定为0。44)三个可选参数字节PPS1、PPS2和PPS3,45)一个检测字节PCK。图7PPS请求和相应的结构PPS1允许读卡器对卡提出F和D的值。F值和D值对应的分频比,应大于或等于ATR中TA(1)设定的F值和D值对应的分频比。TA(1)中设置的是最小分频比(速度最快),其他大于这个分频比的可用值,将在COS里面设置,也就是卡所支持的分频比。3.3成功的PPS交换如果PPS响应准确反应PPS请求,则PPS交换是成功的。也就是说读卡器给卡发什么,卡就给读卡器返回什么,当然前提是读卡器发送的PPS是正确的。如图8,蓝色的字符是读卡器发送给卡的,“FF1111FF”,其中第一个“FF”为PPSS;第一个“11”为PPS0,高4位的1说明PPS1存在,低四位的1说明T=1;第2个“11”,指定了Fi=1,Di=1,通过看表可以知道这是372分频;最后一个“FF”是前面三个值的异或值。之后卡发送同样的数据(白色的字符)作为回复,说明PPS协商成功。这是最普通的情况,也是我们经常使用的情况,也可能发生其它情况。图8成功的PPS交换当PPS响应为下列情况之一时,该PPS交换也是成功的:46)PPSS响应=PPSS请求。47)PPS0响应:●应回送b1至b4。●回送b5或将其置为0。如果b5=1PPS1响应=PPS1请求。如果b5=0则没有PPS1响应就意味着应使用Fd和Dd。●回送b6或将其置为0。如果b6=1PPS2响应=PPS2请求。如果b5=0则PPS2响应和PPS2请求都不存在。●回送b7或将其置为0。如果b7=1PPS3响应=PPS3请求。如果b7=0则PPS3响应和PPS3请求都不存在。3.4错误处理PPS与复位应答以相同的方式发送。PPS响应的两个连续字符的上沿之间的延迟不应超过“初始等待时间(9600etu)”。只有读卡器可以开始PPS交换48)读卡器应发送一个PPS请求给卡。49)如果卡收到一个错误PPS请求,则它不作任何响应。50)如果卡收到一个正确PPS请求,则应返回一个PPS响应,否则将超过初始等待时间。51)如果超过初始等待时间,则读卡器或者复位或者拒绝卡。52)如果读卡器收到错误PPS响应,则读卡器或者复位或者拒绝卡。53)如果PPS交换失败,则读卡器或者复位或者拒绝卡。当读卡器发送PPS请求时,出现奇偶校验出错,卡会在(10.5±0.2)etu(接收方时间)时,传送一个状态为A(拉低电平),最少为1etu,最大为2etu的差错信号。然后,卡将等待对有争议的字符重发。同样当卡返回PPS响应的时候,出现奇偶校验出错,读卡器会在(10.5±0.2)etu(接收方时间)时,传送一个状态为A(拉低电平),最少为1etu,最大为2etu的差错信号。然后,读卡器将等待对有争议的字符重发。4T=0,异步半双工字符传输协议当PPS协商完成之后(或者是ATR之后),读卡器会根据PPS协商(或ATR中的设置)的结果T=0还是T=1(或者其它在第2章提到的值),来发送新的字节。本章中将讲述T=0的情况。T=0,就是进行异步半双工字符传输协议。在这种情况下,要发送APDU命令。4.1APDU结构APDU命令是由读卡器发出的,它以一个5个字节的报头通知卡做什么,然后卡会发出过程字节(卡对那5个字节的反应),之后读卡器会根据卡返回的过程字节,继续发送、接受或者其它操作。接口设备通过五个连续字节传送一个报头,这五个字节指定为CLA,INS,P1,P2,P3。54)CLA是指令类别,值“FF”为PPS保留。验证时,CLA一般设为“00”。55)INS是指令类别中的指令代码。指令代码只有当最高有效半字节不是6和9时才有效。在验证时,INS的代码,会让COS知道执行那一个子程序,也是运行哪一个测试用例。56)P1,P2是一个完成指令代码的参考符号(例如地址)。在验证时,它传递的是测试用例所需要的参数。57)P3读卡器向卡发送/卡向读卡器发送的数据字节的个数。在由卡向读卡器传输的命令中,P3=0表示从卡发送256个字节的数据;在读卡器向卡传输的命令中,P3=0代表无数据输入。这样,在一个5字节报头传输之后,读卡器等待一个过程字节,之后传输数据,或者接收数据,数据的长度为P3中的值。P3=Lc是发送的数据长度,P3=Le是接收的数据长度。一个APDU包括一个命令APDU和一个响应APDU。命令APDU格式:CLAINSP1P2P3(Le/Lc)DATA响应APDU格式:DATASW1SW2命令共分四种情况:情况1:CLAINSP1P200SW1SW2在这种情况下,读卡器不向卡发送数据,卡执行的操作由INS决定,P1、P2用来传递参数(也可以不传递,无参数)。情况2:  CLAINSP1P2Le长度为Le的数据SW1SW2注:Le=00,表示传送256个字节。在这种情况下,读卡器将接收从卡发送来的数据,其中长度为Le。卡执行的操作由INS决定,P1、P2用来传递参数(也可以不传递,无参数)。情况3:CLAINSP1P2Lc长度为Lc的数据SW1SW2在这种情况下,卡将接收从读卡器发送来的数据,其中长度为Lc。卡执行的操作由INS决定,P1、P2用来传递参数(也可以不传递,无参数)。情况4:CLAINSP1P2Lc长度为Lc的数据SW1SW29F   xx根据xx,发送辅助数据传输命令GETRESPONSECLAINSP1P2xx长度为xx的数据SW1SW2SW1SW291   xx根据xx,发送辅助数据传输命令FETCHCLAINSP1P2xx长度为xx的数据SW1SW2在这种情况下,读卡器向卡发送一条APDU指令后,卡返回的SW2,将作为读卡器发送给卡的第二条APDU的P3的值,同样的第三条APDU的P3也是卡第二次返回的SW2的值。这种情况,主要用于验证DES,需要多条APDU联合完成。4.2过程字节4.2.1概述读卡器向卡发送APDU之后,卡要向读卡器发送一个响应,这就是过程字节。已规定了三种类型的过程字节:58)“60”。通知读卡器继续等待,不要因为等待时间过长,对卡进行复位。59)ACK。在ACK中除了值“6X”和“9X”以外,在ACK字节中的七个最高有效位(b8至b2)全都等于INS字节中相应位或与之互补。60)SW1。SW1的值为“6X”或“9X”,但不包括60。在每一个过程字节中,卡可以用一个ACK或NULL字节来把这个命令继续进行下去,或以适当的不应答表示不赞同,或用结束序列SW1-SW2结束这个命令。在验证中,我们使用的是将INS(APDU的第2个字节)值直接返回给读卡器,之后进行余下的操作,最后卡返回状态字。或者直接发送状态字。表4过程字节4.2.2发送“60”当读卡器发送ADPU之后,卡在9600etu没有反应,读卡器会对卡进行热复位,还有可能读卡器认为通讯失败,停止与卡进行交互。所以,为了避免这些情况,卡要在9600etu内,发送“60”(这个可由COS控制,也可由串口芯片自动发送),通知读卡器继续等待。4.2.3确认字节ACK字节用于控制VPP(编程电压)状态和数据传输:当用INS字节对ACK字节进行异或运算结果为00或者FF时,接口设备保持或者置VPP为空闲状态。当用INS字节对ACK字节进行与或运算结果为01或者FE时,接口设备保持或者设置VPP为激活状态。当ACK字节中的七个最高有效位和INS字节中的相应位数值相同时,如果有剩余数据字节,那么,要传输所有余下的数据字节(Di……Dn)。当ACK字节中的七个最高有效位和INS字节中的相应位互补时,如果有余下数据,那么仅仅下一个数据字节(Di)被传送。在这些动作完成之后,接口设备等待一个新的过程字节。4.2.4状态字节SW1要求将VPP置为或保持在空闲状态。读卡器等待一个传输SW2字节的字符,对SW2的值无限制。结束序列SW1-SW2在命令的结尾给出卡的状态,SW1-SW2=“90”-“00”,标志正常结束。当SW1的最高有效半字节等于6时,SW1的含义是与应用无关的,定义如下五个值:61)6E卡不支持指令类型。62)6D指令代码没有被编程或者无效。63)6B参考错误。64)67长度错误。65)6F没有给出准确的诊断。66)其它值保留给将来使用。当SW1既不等于6E,也不等于6D时,卡支持指令。4.3错误处理当读卡器发送ADPU之后,卡在9600etu没有反应,读卡器会对卡进行热复位,还有可能读卡器认为通讯失败,停止与卡进行交互。所以,为了避免这些情况,卡要在9600etu内,发送“60”,通知读卡器继续等待。当读卡器发送数据时,出现奇偶校验出错,卡会在(10.5±0.2)etu(接收方时间)时,传送一个状态为A(拉低电平),最少为1etu,最大为2etu的差错信号。然后,卡将等待对有争议的字符重发。同样当卡返回响应的时候,出现奇偶校验出错,读卡器会在(10.5±0.2)etu(接收方时间)时,传送一个状态为A(拉低电平),最少为1etu,最大为2etu的差错信号。然后,读卡器将等待对有争议的字符重发。4.4APDU示例SEND_BYTES命令是终端向卡片发送数据,卡片将接收到的数据储存在XRAM中。表5APDU示例代码数 值CLA‘00’INS‘20’P1‘00’P2‘00’Lc‘y’(y个字节的数据)DATA发送给卡片的数据(yByte)Le无SW‘9000’:正常结束在这个示例中,读卡器会发送Lc(y)个字节到卡中,卡会接受这些数据(由INS值来告诉COS执行接收的指令,Lc(P3)作为一个参数传递到所执行得中,函数就知道要接收多少个字节了。),然后返回状态字(SW)。在这个APDU中,没有Le,所以卡不会向读卡器发送数据(也是由COS控制的)。5T=1异步半双工块传输协议与上一章所讲述的T=0的情况不同,T=0是字符传输,而T=1是块传输。块是由字符组成的,块包含了几个不同的域,不同的域有不同的作用。当T=1时,读卡器不再发送APDU,它只是在T=0时发送的。而读卡器向卡发送命令的功能,将由一个叫做“块帧”的东西取代。而卡对读卡器命令的响应,也同样是一个“块帧”。这两个“块帧”的基本结构是相同的,而其包含的内容是不同的。所以说,在T=1下,“块帧”就是读卡器与卡交换信息的最小单元。5.1块帧5.1.1概述一个块由一串字节组成,每个字节以异步字符的形式传输。块由下列域构成(图9):67)起始域(强制性的)包括节点地址字节、协议控制字节和长度字节(信息域的长度)。68)信息域(可选的)由0-254个字节组成,这里储存的信息就是读卡器向卡发出的命令,或者是卡向读卡器的响应。69)终止域(强制性的)包括一个或两个字节,做校验用。图9块帧本协议定义了三种基本块类型(不同类型的“块帧”):70)信息块(I块):用于传送应用层信息。另外,它传输肯定或否定的确认信息。71)接受准备块(R块):用于发送肯定或否定的确认信息,它的信息域不出现。72)管理块(S块):用于读卡器和卡之间交换控制信息,S块的信息域存在与否取决于S块控制功能的需要。虚线中的内容,我也不是很明白-----------------------------------------------------------------------------------------------------------5.1.2起始域5.1.2.1节点地址字节节点地址(NAD)是用于标识块的源和预期目的的一个字。NAD可用于区分同时存在的多逻辑连接。b1到b3位指明源节点地址SAD,b5到b7位指明目的节点地址DAD。b4和b8位用于表示VPP状态控制。在不使用编址时,SAD和DAD的值都应被置0。当SAD与DAD的值相同时,NAD的其它值留待将来使用。由读卡器发送的第一个块的NAD确定了SAD和DAD地址的逻辑连接关系。在随后的块中的NAD域也包含相同的SAD/DAD地址对,并具有相同的逻辑关系。在后续的信息交换期间内其它的逻辑连接同样也由相应的SAD/DAD对定义。注:例如,由读卡器发送的块,其SAD的值为X,DAD的值为Y;由卡发送的块,SAD的值为Y,DAD的值为X。这属于一个逻辑连接,标记为(X,Y)。然而,如由读卡器发送的块其SAD值为V,DAD的值为W,由卡发送的块其SAD值为W,DAD的值为V,则属于另一个逻辑连接(V,W)。5.1.2.2协议控制字节协议控制字节用于传送控制传输所需要的信息本协议定义了三种基本块类型,即信息块(I块)、接受准备块(R块)、管理块(S块)。编码细节见图10、11、12。图10I块PCB编码图11R块PCB的编码图12S块PCB的编码-------------------------------------------------------------------------------------------------------5.1.2.3长度(LEN)LEN指示其块的信息域中被传输的位数,编码应是:73)“00”表明不存在信息域。74)“01”至“FE”代表信息域中的字节数,对应为1到254个。75)“FF”留待将来使用。5.1.3信息域(INF)对INF的使用取决于块的类型:76)I块中的INF传送应用信息77)R块中不存在INF78)S块中的INF传送应用信息●INF应与S块中的一个单独字节一起存在,负责调整IFS和WTX。●在一个指示VPP状态出错或管理链中止或再同步的S块中不存在INF。5.1.4终止域该域是强制性的,块的差错检测编码。有两种检验方式:79)LRC(纵向冗余校验)80)CRC(循环冗余校验)。LRC长度为一个字节,CRC长度为两个字节。LRC的值与块中之前所有字节进行异或运算的结果。是使用LRC还是CRC是在ATR(复位应答)中设定的。5.2协议参数5.2.1T=1时的特殊接口字节与T=0情况不同的是,当T=1时,需要在ATR中设置一些参数。当TD(i-1)(i>2)中的T=1第一次出现之后时,后面的TA(i),TB(i)和TC(i)用来设置协议T=1的参数。为了表示简洁,这三个字节被命名为第一TA(i),第一TB(i)和第一TC(i)。5.2.2信息域尺寸5.2.2.1卡的信息域尺寸(IFSC)IFSC是卡能够接收的各块中的信息域的最大长度。IFSC的初始值由第一TA(i)给定,缺省值为32。5.2.2.2接口设备的信息域尺寸IFSDIFSD是接口设备能接收的各块中的信息域的最大长度。初始值定为32。5.2.2.3IFSC和IFSD的编码IFSC和IFSD在协议启动时被初始化。协议执行过程中,由S(IFS请求)和S(IFS响应)调整IFSC和IFSD,其中INF由一个名为IFS的字节组成。任何情况下第一TA(i)和IFS字节应按下述编码:81)“00”和“FF”留待将来使用82)“01”至“FE”为数字1至254注:块的尺寸是在起始域、信息域和终止域中被传输的所有字节的总数。块的最大尺寸等于IFSC加上4或5(视终止域的长度而定,LRC为1字节,CRC为2字节)。5.2.3等待时间5.2.3.1字符等待时间CWT字符等待时间定义为同一块中两个连续字符起始沿之间的最长时间(见图13)。注:当可能存在长度差错时,CWT可以用来检测一个块的结束。第一TB(i)的低4位(b4至b1)编码为字符等待时间整数值(CWI),其范围为0~15。CWT的计算公式为:因此CWT的最小值等于12etu,CWI的缺省值为13。图13字符等待时间5.2.3.2块等待时间(BWT)一个块等待时间被定义为送达到卡的最后一个字符的起始沿与由卡发送出的第一个字符的起始沿之间的最长时间。见图14,BWT用来检测无响应的卡。图14块等待时间和块保护时间第一TB(i)的最高有效半字节(b8至b5)编码为块等待时间BWI整数值,其范围为0-9,10-15留待将来使用。BWT的计算公式为:BWI的缺省值为45.2.3.3块保护时间(BGT)块保护时间为两个相对方向发送的连续字符的起始沿之间的最短时间。因此一个已接收块的最后一个字符与一个被传输块的第一个字符之间的迟延至少应为BGT但小于BWT(如图14)。5.2.4错误检测编码第一TC(i)的位b1规定使用的错误检测编码为:83)CRC如果b1=184)LRC如果b1=0将位b8至b2置为0以留待将来使用。5.3T=1ATR的示例和块的示例T=1的情况下,采用LRC校验表6T=1ATR示例字符(Character)值(Value)描述(Description)TS‘3B’正向约定T0‘95’TA1和TD1存在4个历史字节TA1‘97’时钟频率转换因子FI=9(F=512)波特率调整因子DI=7(D=64)TD1‘80’仅TD2存在,支持协议T=0TD2‘B1’TA3、TB3和TD3存在支持协议T=1TA3‘FE’IFSC有254个字节长TB3‘00’块等候整数=0字符等候整数=0TD3‘1F’仅TA4存在,后跟全局接口字节TA4‘43’支持时钟停止(低电状态)支持3V,5VT1‘51’CPU架构T2‘16’芯片型号T3‘0D’T4‘01’测试cos主版本号T5‘00’测试cos副版本号TCK‘DA’如图15,读卡器向卡发送的块帧(蓝色)和卡向读卡器返回的块帧。“00”“00”对应的是NAD和PCB,“07”是INF的长度(LEN)。之后的“00A40000023F00”就是INF,在这个例子里没有特殊含义,“9E”是LRC的值,就是将前面所有的值异或(但是这个值是错的,原因在后面说明)。之后是卡返回的数据,也是一个块。“00”“00”对应的是NAD和PCB,“02”是INF的长度(LEN)。之后是“6581”,这是代表前面读卡器发送的数据LRC错误,这是由COS处理的。“E6”是LRC,这是正确的值。图15T=1的块帧和卡返回的数据5.4错误处理在T=1协议中,不使用错误信号和字符重复。读卡器发送字节数据奇偶校验错,卡片在收到错误数据的时候对错误数据正常接收,不会抛弃。卡片发送出错的时候不会重发。如卡或读卡器发送的块的LRC或CRC检验出错,这些应由卡的系统和读卡器的系统共同处理,并不由串口芯片拉低电平要求重发处理。5.5T=0与T=1的比较T=0是以字符为最小的传输单位。在此协议中,读卡器向卡发送的APDU指令,就是由5个字符组成,但这5个字符,每一个的意义是很明确的、固定的。而在T=1协议中,除了定义了块的结构外,其它的信息都是存储在INF中,也就是说读卡器对卡发送的指令和数据都存在这个INF域中,而并没有对这些指令和数据作严格的规定,在这些方面T=1较T=0更为灵活。
/
本文档为【7816-3协议使用说明】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索