PBOC APDU命令解析
应用层发出的命令报文和卡片回送到应用层的响应报文统称为应用协议数据单元(APDU)。响应是
和命令相对应的,通常被称为APDU命令-响应对。在一个APDU命令-响应对中,命令报文或响应报文都可
能包含数据。
1:C-APDU 格式
C-APDU由一个4字节长的必备头后跟一个变长的条件体组成。
C-APDU中发送的数据长度用Lc(命令数据域的长度)表示。
R-APDU中期望返回的数据字节数用Le(期望数据长度)表示。
当Le存在且值为0时,表示要求可能的最大字节数(≤256)。
在应用选择中所给出的读记录(READ RECORD)命令、选择(SELECT)命令Le应该等于“00”。
图1:APDU命令结构
2:C-APDU命令内容
命令均由终端应用层(TAL)发出,它用5个字节组成的命令头通过TTL向IC卡发送指令。命令头由5个连续字节CLA、INS、P1、P2和P3组成:
CLA:命令类别;INS:指令代码;P1 和 P2:附加参数;P3:根据不同的 INS, 指明发送给 IC 卡的命令中数据的字节长度或期待 IC 卡响应的最大数据长度。
图2:APDU命令内容
3:R-APDU格式
当使用T=1协议时,对于所有Le=’00’的命令,状态字SW1 SW2=“90 00”或“61 La”均表示命令的成功执行。
但由于可读性的需要,这两种状态字只用了“90 00”作为参考。
R-APDU格式由一个变长的条件体和后随两字节长的必备尾组成,见图3。
图3:APDU响应结构
R-APDU中接收到的数据字节数用Lr(响应数据域长度)表示。Lr不通过传输层返回,应用层在需要时可以依靠响应报文数据域对象结构计算出Lr。
响应结尾的2个字节代码是命令的处理状态,它们通过传输层回送。
表1:响应 APDU 内容
4:命令报文和响应报文
A:读记录命令
表2:读记录命令报文
表3:读记录命令引用控制参数(2)
B:选择命令
选择命令通过文件名或AID来选择IC卡中的PSE或ADF。成功执行该命令设定PSE或ADF的路径。
后续命令作用于SFI选定的PSE或ADF相联系的AEF。从IC卡返回的响应报文包含回送FCI。
表4:SELECT 命令报文
表5:SELECT命令引用控制参数
表6:SELECT命令的可选参数
响应报文数据域
响应报文中数据域应包括所选择的PSE或ADF的FCI。在选择命令的响应报文回送的FCI模板中,除了“BF0C”模板中包含的数据元之外,不应有附加数据元。
表7定义了成功选择PSE后回送的FCI。
表7:选择 PSE的响应报文(FCI)
表8:选择 ADF 的响应报文(FCI)
当一个DF成功选中后,终端重复发出选择(SELECT)命令,且P2设置为选择下一个文件的选项及使用相同的部分DF名时,
卡片应该选中与部分DF名称匹配的不同的DF文件(如果这样的DF存在)。在没有应用层命令干扰的情况下重复发出相同的选择(SELECT)命令,
卡片应该可以找到所有满足条件的DF文件,且每个文件不会被找到两次。当所有满足条件的DF都被选择后,再发出同样的选择(SELECT)
命令,应该得到没有文件被选择的结果,卡片应该响应SW1SW2=“6A82”(文件未找到)。
参考文档
PBOC3.0规范
起草时间
2015-10-22
PBOC APDU命令解析相关推荐
- SylixOS DSP upgrade命令解析
SylixOS DSP upgrade命令解析 --SylixOS DSP6678平台下升级BSP 一.适用范围 本升级方案,针对TI官方评估板(TMDSEVM6678LE),主要介绍如何将Sylix ...
- Aix netstat命令解析
1.1 Aix netstat命令解析 1.1.1 概述 1.1.2 命令报告及其输出 1.1.2.1 接口可用性.地址和统计(-i/-in) 首先,应检验所有配置的网络接口的状态,使用 netsta ...
- Aix iostat命令解析
1.1 Aix iostat命令解析 1.1.1 概述 1.1.2 命令报告及其输出 1.1.2.1 确定磁盘使用率 $ iostat -T 2 10<?xml:namespace prefix ...
- 【Linux】一步一步学Linux——初识Linux命令解析器(10)
00. 目录 文章目录 00. 目录 01. Shell简介 02. Shell分类 03. 交互式shell和非交互式shell 04. 登录shell和非登录shell 05. Shell类型 0 ...
- shell--指“提供使用者使用界面”的软件(命令解析器)
在计算机科学中,Shell俗称壳(用来区别于核), 是指"提供使用者使用界面"的软件(命令解析器). 它类似于DOS下的command.com.它接收用户命令,然后调用相应的应用程 ...
- Aix vmstat命令解析
1.1 Aix vmstat命令解析 1.1.1 概述 vmstat 命令报告内核线程.虚拟内存.磁盘.Traps.CPU 活动的统计数据. AIX <?xml:namespace prefix ...
- Android 系统(172)---如何使用addr2line命令解析native backtrace
如何使用addr2line命令解析native backtrace 有时遇到ANR问题,查看SWT_JBT_TRACES文件,发现有些是native backtrace,且GAT-LogView目前无 ...
- 单片机串口实现字符串命令解析
通常情况下串口通信用的大多数都是用十六进制数据来传输指令,比如最常见的modbus的通信,如读保持寄存器指令:01 03 00 00 00 01 84 0A,这种十六进制的指令在这里就不讨论了.想要详 ...
- FTP 编写 4:命令解析
FTP 编写 4:命令解析 我们知道在现实生活中使用的 FTP 是应答式的,客户端和服务端按照一定的规定进行交流,不是随便弄的,在上几篇中的 FTP 没有人机交互的功能.所以这篇文章的主要内容 ...
最新文章
- java redis释放连接池_Java 使用连接池操作redis
- linux音频驱动dma数据,Linux音频驱动简述
- 云计算推进企业管理深化,私有云将会深入企业
- OOP设计模式[JAVA]——03职责链模式
- 玩具版VR盒子没玩够?小米正式开放高端VR头显的开发机申请
- tomcat的缺少tcnative-1.dll的解决
- linux7配置开启防火墙,CentOS7防火墙设置
- Dev Express Report 学习总结(五)在分组中使用聚集表达式AggregateExpression
- python使用协程实现udp_python-socket和进程线程协程(代码展示)
- mysql 多行 连续_mysql多表连续查询的问题
- 系统安全工作笔记001---springcloud系统安全隐患与改善_工作经验_随时更新
- 示例 - 10行代码在C#中获取页面元素布局信息
- RGBA alpha 透明度混合算法实现和测试
- DW个人网站制作成品 简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码
- 单点登录系统和传统登录的区别
- python修改pdf文件
- STA | 12. 时序签核方法学及实战经验
- 短信设备常用AT指令集
- Java 爬虫工具Jsoup解析
- 大商创小程序源码_小程序直播系统有哪些基本功能