1 Star 0 Fork 2

itlgl/pboc3.0-Documents

Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
文件
This repository doesn't specify license. Please pay attention to the specific project description and its upstream code dependency when using it.
Clone or Download
整体.txt 7.57 KB
Copy Edit Raw Blame History
jinagchengdeng authored 2016-05-26 10:58 . pboc 3.0
===============主要章节==============
第3部分
第5部分
第6部分
第7部分
第16部分
===============第3部分=================
1)终端和IC卡之间的物理传输
1、数据通过I/O在终端和IC卡之间以异步半双工方式进行双向传输
2、数据在I/O上以如下所述的字符帧方式传输。采用的约定由IC卡在复位应答时发送的初始字符(TS)确定
3、字符帧:适用于IC卡与终端之间所有的报文交换
@ 代表传输的一个字符
@ 组成10个连续位:1个低电平状态的起始位 + 数据字节的8个数据位 + 1个奇偶校验位
@ 字符中的逻辑1的数目必须是偶数,8个数据位和校验位自身均参加校验计算,但起始位不参加校验计算
4、在终端传输层(TTL),数据总是采用高字节先送方式(m.s.)在I/O上传输
5、一个字节内部二进制位的传输顺序(即低位先送还是高位先送)由复位应答回送的TS字符确定
2)IC卡在传输数据前的复位应答回送字符
1、T=0协议,字符传输协议
字符 值 备注
TS 3B/3F 指明正向或反向约定
T0 6x TB1和TC1存在,x表示历史字节的存在个数
TB1 00 不使用VPP(编程电压)
TC1 00~FF 指明所需额外保护时间的数量
2、T=1协议,块传输协议
字符 值 备注
TS 3B/3F 指明正向或反向约定
T0 Ex TB1和TD1存在,x表示历史字节的存在个数
TB1 00 不使用VPP(编程电压)
TC1 00~FF 指明所需额外保护时间的数量
TD1 81 TA2到TC2不存在,TD2存在;使用T=1协议
TD2 31 TA3和TB3存在,TC3和TD3不存在;使用T=1协议
TA3 10~FE 返回IFSI(信息域大小整数),表示IC卡信息域大小的初始值且具有16~254字节的IFSC(IC卡信息域大小)
TB3 高半字节0~4 BWI=0到4,块等待时间整数
低半字节0~5 CWI=0到5,字符等待时间整数
TCK 校验字符
3、字符解释
TS 初始字符 3B-正向约定,高电平代表逻辑1;3F-反向约定,低电平代表逻辑1
T0 格式字符 高半字节(b8~b5)表示后续TD1~TA1是否存在
TA1 传送FI和DI的值。高半字节FI确定F的值;低半字节DI确定D的值
TB1 传送PI1和II的值。PI1定义在b1~b5;II定义在b6和b7;b8不使用,置为逻辑0
TC1 传送N值,用于表示增加到最小持续时间的额外保护时间
TD1 表示是否还要发送更多的接口字节以及后续传输所使用的协议类型。高半字节(b5~b8)用于表示字符TA2到TD2是否存在;低半字节用于表示后续信息交换所使用的协议类型
TA2 表示IC卡是以特定模式还是以协商模式工作。b8表明IC卡是否有能力改变它的操作模式;b7~b6预留,置为00;b5表明在复位应答后是按接口字节提供的传输参数进行,还是按终端默认的传输参数进行;b4~b1表明特定模式下所采用的协议
TB2 传送PI2,PI2用于确定IC卡所需的编程电压P的值。
TC2 专用于T=0协议,传输工作等待时间整数(WI),WI用来确定由IC卡发送的任意一个字符起始位下降沿与IC卡或终端发送的前一个字符起始位下降沿之间的最大时间间隔
TD2 表示是否还要发送更多的接口字节以及后续传输所使用的协议类型。高半字节(b5~b8)用于表示字符TA3到TD3是否存在;低半字节用于表示后续信息交换所使用的协议类型
TA3 TA3(如果TD2中指明T=1)回送IC卡的信息域大小整数(IFSI),IFSI决定了IFSC,并指明了卡片可接收的块信息域的最大长度(INF)。TA3以字节形式表示IFSC的长度,其取值范围从01到FE。00和FF预留(RFU)
TB3 TB3(如果TD2中指明T=1)表明了用来计算CWT和BWT的CWI和BWI值,TB3由两部分组成。低半字节(b1-b4)用于表明CWI值,而高半字节(b5-b8)用于表明BWI值
TC3 TC3(如果TD2中指明T=1)指明了所用的块错误校验码的类型,所用代码类型用b1位表示,b2到b8位未使用
TCK TCK具有一个检验复位应答期间所发送数据完整性的值。TCK的值应使从T0到包括TCK在内的所有字节进行异或运算的结果为零
3)终端和IC卡间的传输协议
1、协议层次
----> 物理层:定义了位交换,是两个协议的公共部分
----> 数据链路层:
@ 字符帧,定义了字符交换,是两个协议的公共部分
@ T=0,定义了 T=0 时的字符交换
@ 对 T=0 的检错与纠错
@ T=1,定义了 T=1 时的块交换
@ 对 T=1 的检错与纠错
----> 传输层:定义了针对每个协议的面向应用的报文传输
----> 应用层:根据相同的应用协议,定义报文交换的内容
2、物理层
T=0与T=1协议均使用了物理层和前面介绍的字符帧
3、数据链路层
#~# 命令头:命令均由终端应用层(TAL)发出,它用5个字节组成的命令头通过TTL向IC卡发送指令。
命令头由5个连续字节CLA、INS、P1、P2和P3组成
----> CLA : 命令类别
----> INS : 指令代码
----> P1和P2 :附加参数
----> P3 : 根据不同的 INS,P3 指明发送给 IC 卡的命令中数据的字节长度或期待 IC 卡响应的最大数据长度。
对于T=0,这些字节和通过命令发送的数据一起构成命令传输协议数据单元(C-TPDU)
#~# T=1块传输协议
----> 块结构如下组成
| 头域(必备) | 信息域(可选) | 尾域(必备) |
| 节点地址(NAD) | 协议控制字节(PCB) | 长度(LEN) | APDU或控制信息(INF) | 错误校验码(EDC) |
| 1字节 | 1字节 | 1字节 | 0~254字节 | 1字节 |
----> 结构说明
NAD :b1~b3表明块的源节点地址(SAD);b5~b7表明块的目的地址(DAD);b4和b8不用,设为0
PCB :分三种类型
@ I块(用于传送APDU):b8置为0;b7表示序列号;b6表示链接(更多的数据,0=最后一块,1=后面还有后续块);b1~b5预留(RFU)
@ R块(用于传送确认的接收准备块):b8置为1;b6~b7置为0;b5表示序列号;b1~b4(0=无错,1=EDC或校验出错,2=其他错误,其他值预留)
@ S块(用于交换控制信息的管理块):b8~b7置为1;b6(0=请求,1=应答);b5~b1(0=再同步请求,1=信息域大小请求,2=放弃请求,3=BWT 扩展请求,4=Vpp 错误,其他值预留)
LEN :指明块的INF长度
INF :出现在I块中时,传送的是应用数据;出现在S块中时,传送的是控制信息;R块不包含INF。
EDC :包含所传送块的EDC,奇偶校验出错和/或EDC出错时,块无效。JR/T 0025仅支持LRC作为EDC。
LRC长度为一个字节,其值由以NAD开始到INF(如果存在的话)的全部字节作异或运算得到。
注:TCi(i>2)指明要使用的错误校验码类型,参见字符解释。
----> C-APDU包含在I块的INF域中,从TTL传送到IC卡。如果一个C-APDU因太长而不能放在一个数据块中时,可通过如下的方法用几个链接块传送
4、终端传输层
#~# T=0协议下APDU的传送
----> 情况1:C-APDU头映射到T=0命令头的前四个字节,T=0命令头的P3置为00
----> 情况2:C-APDU头映射到T=0命令头的前四个字节,长度字节Le从C-APDU的条件体映射到T=0命令头的P3。
在应用选择中发出的读记录(READ RECORED)命令和按JR/T 0025发出的所有情况2的命令的Le都必须为00
----> 情况3:C-APDU头映射到T=0命令头的前四个字节,C-APDU条件体的长度字节Lc映射到T=0命令头的P3
----> 情况4:C-APDU头映射到T=0命令头的前四个字节,C-APDU条件体的长度字节Lc映射到T=0命令头的P3。
应用选择中发出的选择(SELECT)命令和JR/T 0025规定的所有情况4命令的Le都必须为00
#~# T=1协议下APDU的传送
C-APDU从TAL传送到TTL,TTL将其不加变化地映射到C-APDU的一个I块的INF域中,然后把这个I块发送到IC卡。
5、应用层
#~# 应用协议由TAL和TTL之间一组有序的数据交换组成。
#~# C-APDU结构:包含一个必备的连续四字节的命令头,用CLA、INS、P1和P2表示,同时包括一个可变长度的条件体
情况 C-APDU的结构 命令数据 响应数据
1 CLA INS P1 P2 无 无
2 CLA INS P1 P2 Lc 无 有
3 CLA INS P1 P2 Lc Data 有 无
4 CLA INS P1 P2 Lc Data Le 有 有
----> CLA : 指令类型,除‘FF’外可赋任何值
----> INS : 指令类型的指令码。只有在最低位为‘0’,且高半字节既不是‘6’也不是‘9’时,INS才有效。
----> P1/P2 : 完成INS的参数字节。
----> 条件体包括如下字节串:
Lc : 一个字节,定义了在C-APDU中发送数据的字节数。
Data ; 待发送的数据,字节数由Lc定义。
Le :一个字节,指出R-APDU中期望返回的最大字节数。如果Le=0,表明期望返回最大长度为256.
#~# R-APDU结构:一串字节,这一串字节由一个条件体以及必备的两字节状态字SW1 SW2组成。
条件体是一串数据字节,其最大长度在C-APDU中的Le中定义。
4)文件
IC卡中每个应用都包括一系列信息项(通常以文件形式存在),终端成功地完成应用选择后就可以访问这些信息。
一个信息项称为一个数据元,数据元是信息的最小单位,它是可以用名称、逻辑内容描述、格式及代码来标识的最小信息单元。
从终端的角度来看,IC卡上的文件是一种树形结构。树的每一个分支是一个应用定义文件(ADF)或一个目录定义文件(DDF)。一个ADF是一个或者多个应用基本文件(AEF)的入口点。一个ADF及其相关的数据文件处于树的同一分支上。一个DDF是其他ADF或者DDF的入口点。
从终端的角度看,ADF是一个只包含封装在其文件控制信息(FCI)中的数据对象的文件
5)应用选择
应用选择是触点激活/卡片复位之后、在第一个应用功能之前执行的处理过程
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/itlgl/pboc3.0-Documents.git
git@gitee.com:itlgl/pboc3.0-Documents.git
itlgl
pboc3.0-Documents
pboc3.0-Documents
master

Search