APDU命令的结构和处理【转】
本文转载自:http://blog.csdn.net/yonghenzhita/article/details/36402525
版权声明:本文为博主原创文章,未经博主允许不得转载。
简单说,IFD(接口设备)与IC卡之间的通讯是这样的:
a、首先,IFD(接口设备)发送5个字节的命令头给IC卡,这5个字节的内容告诉了IC卡要做什么操作;
b、然后,IC卡回传一个过程字节给IFD,告诉IFD(接口设备)IC卡是否支持该操作;
c、如果返回的过程字节告诉IFD——IC卡支持该操作,则接下来就进行数据的传输(如果有的话),数据从IFD输入到IC卡或数据从IC卡输出到IFD;
d、如果返回的过程字节告诉IFD——IC卡不支持该操作,则IC卡回传给IFD两个状态字节SW1 SW2,IFD根据SW1 SW2两字节判断IC卡不支持该操作的原因;
下面介绍ISO/IEC 7816-4 中规定的标准操作流程(以下内容由本人翻译原英文版ISO/IEC 7816-4而来,如有错漏之处请不吝指教):
10.3 命令的结构和处理
10.3.1 概述
首先,每一条命令均由IFD(接口设备)发起,它通过5字节的命令头告诉卡设备做什么。
然后,在卡发送的过程字节的控制下,该命令继续在某一个方向上传输一串数据字节。
为了区分用于输入数据的命令(其中处理过程中,数据字节进入卡)和用于输出数据的命令(其中处理数据字节时该数据离开卡),假设卡和接口设备预先知道数据运送方向。
10.3.2 命令头
命令头由5个字节组成,分别为CLA,INS,P1,P2和P3。其中CLA,INS,P1和P2这些参数的值由ISO/IEC7816-4部分定义。
—— CLA 表示指令类别(class)。其中值‘FF’被保留用于PPS(见6.3.1和9.2)。
注意 ISO/IEC 7816-4 强制‘FF’对于CLA为无效值。
—— INS 表示指令代码(instruction)。其中值‘6X’和‘9X’为无效值。
注意 ISO/IEC 7816-4 强制‘6X’和‘9X’对于INS为无效值。
—— P1 P2 表示命令参数。对于不同的指令(INS)P1 P2有不同的含义。
—— P3 表示数据字节的长度。对命令期间待传送的字节D1~Dn的数目n进行编码。
l 在输出数据的传送命令中,P3=0表示从卡传输256字节。
l 在输入数据的传送命令中,P3=0表示不从卡传输数据。
10.3.3 过程字节
IFD(接口设备)发送完5字节的命令头后,应该等待卡设备传入一个过程字节。有三种类型的过程字节,见表11。
过程字节不同的值表示不同含义:
——如果值为‘60’,表示为一个NULL字节。它要求不进行数据字节的传送。IFD应该等待卡设备传入下一个过程字节。
——如果值为‘6X(≠60)’或‘9X’,表示为SW1字节。字要求不进行数据字节的传送。IFD(接口设备)应等待卡设备传入一个SW2字节。这里对SW2的值无限制。
注意 ISO/IEC7816-4 强制‘60’为无效的SW1值,以及其它任不同于‘9X’和‘6X’的值。
——如果值与INS相等,除‘6X’和‘9X’以外,它是一个ACK字节。则表示运送所有剩余字节(如果存在)Di~Dn。然后IFD(接口设备)应等待卡设备传入一个过程字节。
——如果值与INS⊕FF(异或)相等,除‘6X’和‘9X’以外,它是一个ACK字节。则表示运送下一个数据字节(如果存在)Di。然后IFD(接口设备)应等待卡设备传入一个过程字节。
——如果为其它值,则属无效。
表11 ——过程字节
|
字节 |
值 |
数据的传送操作 |
然后接收 |
|
NULL |
‘60’ |
无动作 |
一个过程字节 |
|
ACK |
INS |
所有剩余数据字节 |
一个过程字节 |
|
INS⊕FF(异或) |
下一个数据字节 |
一个过程字节 |
|
|
SW1 |
‘6X(≠60)’或‘9X’ |
无动作 |
SW2字节 |
当过程字节为NULL和ACK时,卡设备能继续处理命令;或者当过程字节为SW1 SW2时,卡设备结束命令的处理;或者不响应表示不赞成。
10.3.4 状态字节
状态字节SW1 SW2表示命令结束时卡设备的状态。它们的值由ISO/IEC 7816-4 指定。
注 ISO/IEC7816-4 强制6个状态字节值的定义。
‘9000’ 命令正常结束;
‘6E00’ CLA不支持;
‘6D00’ CLA支持,但INS不支持;
‘6B00’ CLA INS 均支持,但是P1 P2错误;
‘6700’ CLA INS P1 P2均支持,但是P3错误;
‘6F00’ 命令不支持,但是没有找出精确的诊断;
根据定义,在传入的SW2字节的前沿12etu后,命令结束。
注:本节内容翻译自 ISO/IEC 7816-4:2006 第10.3节。
APDU命令的结构和处理【转】的更多相关文章
- PBOC APDU命令解析【转】
转自:http://blog.csdn.net/zuokong/article/details/49335257 版权声明:本文为博主原创文章,未经博主允许不得转载. 应用层发出的命令报文和卡片回送到 ...
- APDU命令与响应格式【转】
本文转载自:http://map.im/apduintroduce 命令格式 APDU命令由命令头和命令体组成: CLA | INS | P1 | P2 | Lc | DATA | Le命令头: CL ...
- 转:APDU命令格式
CLA INS P1 P2 Lc Data Le 其中CLA为指令类别:INS为指令码:P1.P2为参数:Lc为Data的长度:Le为希望响应时回答的数据字节数,0表最大可能长度. 一 ...
- redis常用命令及结构
##常用结构及命令: keys * #查询所有key randomkey #随机返回key type key #返回key的类型 exists key #判断key是否存在 del key1 key2 ...
- ADPU 大全
APDU协议 APDU协议,即是智能卡与读写器间的应用层协议,在ISO7816-4[7]中定义了该协议的结构格式.APDU数据有两种结构,读写器使用的APDU结构为命令APDU,C-APDU(Comm ...
- SQL Server里查询表结构命令
现提供两条命令查询表结构: 1.sp_help table_name; 如: [sql] sp_help Student; 2.sp_columns table_name; ...
- 精通awk系列(6):awk命令结构和awk语法结构
回到: Linux系列文章 Shell系列文章 Awk系列文章 awk命令行结构和语法结构 awk命令行结构 awk [ -- ] program-text file ... (1) awk -f p ...
- APDU
# APDU # 定义:APDU(ApplicationProtocolDataUnit--应用协议数据单元).协议数据单元PDU(ProtocolDataUnit)是指对等层次之间传递的数据单位.协 ...
- 智能卡 APTU命令
一条命令APDU含有一个头标和一个本体.本体可有不同长度,或者在相关数据字段为空时,整个可以不存 在. 头标由四个数据元组成,它们是类CLA(ClAss)字节,命令INS(INStructic,n)字 ...
随机推荐
- HDFS的Java API 对文件的操作
在本次操作中所用到的命令 1.首先启动HDFS $HADOOP_HOME/sbin/start-dfs.sh 2.关防火墙 切换到root用户,执行service iptables stop 3.拷贝 ...
- 洛谷 4933 洛谷10月月赛II T2 大师
[题解] f[i][j]表示最后一个数为h[i],公差为j的等差数列的个数.n方枚举最后一个数和倒数第二个数转移即可.注意公差可能为负数,需要移动为正数再作为下标. #include<cstdi ...
- POJ 2096 找bug 期望dp
题目大意: 一个人受雇于某公司要找出某个软件的bugs和subcomponents,这个软件一共有n个bugs和s个subcomponents,每次他都能同时随机发现1个bug和1个subcompon ...
- bzoj 2223 [Coci 2009]PATULJCI
[Coci 2009]PATULJCI Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1286 Solved: 553[Submit][Status ...
- Network(poj 3694)
题意:一个无向图可以有重边,下面q个操作,每次在两个点间连接一条有向边,每次连接后整个无向图还剩下多少桥(注意是要考虑之前连了的边,每次回答是在上一次的基础之上) /* tarjan+LCA 先用ta ...
- 【BZOJ4403】序列统计(Lucas定理,组合计数)
题意:给定三个正整数N.L和R, 统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量. 输出答案对10^6+3取模的结果. 对于100%的数据,1≤N,L,R≤10^9,1≤T≤100, ...
- poj 3233 Matrix Power Series 矩阵求和
http://poj.org/problem?id=3233 题解 矩阵快速幂+二分等比数列求和 AC代码 #include <stdio.h> #include <math.h&g ...
- codeforces Gym 100735 D、E、G、H、I
http://codeforces.com/gym/100735 D题 直接暴力枚举 感觉这道题数据有点问题 为什么要先排下序才能过?不懂.. #include <stdio.h> #in ...
- poj_2524_Ubiquitous Religions_201407211506
Ubiquitous Religions Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 23390 Accepted: ...
- 服务器Centos7.4 下jdk1.8环境配置、mysql环境搭建,mysql找回(重置)密码看这篇就够了
最近一直帮我的同学搭建自己的服务器,其中涉及到了以下知识点,经过查询博客资料等方式,再加上多重实践,我成功总结出了完整的配置一个简单服务器环境的步骤: (来自 ZYXS 的CSDN 博客 ,全文地址请 ...