APDU
# APDU #
定义:APDU(ApplicationProtocolDataUnit--应用协议数据单元)。协议数据单元PDU(ProtocolDataUnit)是指对等层次之间传递的数据单位。协议数据单元(ProtocolDataUnit)物理层的PDU是数据位(bit),数据链路层的PDU是数据帧(frame),网络层的PDU是数据包(packet),传输层的PDU是数据段(segment),其他更高层次的PDU是数据(data)。
APDU命令与响应格式
命令格式
- APDU命令由命令头和命令体组成: CLA | INS | P1 | P2 | Lc | DATA | Le
- 命令头: CLA | INS | P1 | P2
命令体: Lc | DATA | Le
命令各字段含义
- CLA:命令报文的类别字节
- P1: 参数 1
- P2:参数 2
- Lc:Data的长度(含4字节mac)
- Data:在命令的数据字段中发送的字节串
Le:在向命令响应的数据字段中期望的字节最大数
命令可分为四种情况:
- 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
Case1
- 这种情况时,命令中没有数据送到卡( Lc)中,也没有数据从卡中返回( Le)。
- 不含安全报文的命令: CLA | INS | P1 | P2
- 含安全报文的命令: CLA | INS | P1 | P2 | Lc | MAC
注: Lc = MAC 的长度, 4 字节。
Case2
- 这种情况时,命令中没有数据送到卡( Lc)中,有数据从卡中返回( Le)。
- 不含安全报文的命令: CLA | INS | P1 | P2 | Le
- 含安全报文的命令: CLA | INS | P1 | P2 | Lc | MAC | Le
注: Lc = MAC 的长度, 4 字节。
Case3
- 这种情况时,命令中有数据送到卡( Lc)中,没有数据从卡中返回( Le)。
- 不含安全报文的命令: CLA | INS | P1 | P2 | Lc | Data
- 含安全报文的命令: CLA | INS | P1 | P2 | Lc | Data+MAC
注: Lc = 数据的长度 + MAC 的长度( 4 字节)。
Case4
- 这种情况时,命令中既有数据送到卡( Lc)中,也有数据从卡中返回( Le)。
- 不含安全报文的命令: CLA | INS | P1 | P2 | Lc | Data | Le
- 含安全报文的命令: CLA | INS | P1 | P2 | Lc | Data+MAC | Le
注: Lc = 数据的长度 + MAC 的长度( 4 字节)。
响应格式
格式1
| Data | SW1 SW2 |
格式2
- | SW1 SW2 |
响应各字段含义
- Data:在响应的数据字段中收到的字节串
- SW1:状态字 1
- SW2:状态字 2
APDU格式详解
APDU定义了主机和卡之间交互的数据格式,绝大部分卡片遵循此数据格式,当然为了保密或其它原因是可以自定义新的数据格式。APDU分为发送命令(C-APDU)和返回命令(R-APDU)。
一、C-APDU元素说明:
发送命令(C-APDU)的格式如下,包含一个必须头部段和一个可选数据段:
- CLA(1字节):用于命令类别的标示,传输安全控制,传输信道说明等。
比特值 说明 0XXXXXXX 为ISO规定的指令类别,0x00,0x04(线路保护)等 1XXXXXXX 为私有自定义指令类别,0x80,0x84(线路保护)等 2.INS(1字节):用于指明CLA字段中标示的指令类中的一个特定指令。
3.P1(1字节):指令参数1,如没有填0x00。
4.P2(1字节):指令参数2,如没有填0x00。
5.LC(1字节):这个可选的字段是命令的数据字段的字节数。
6.LE(1字节):这个可选的字段指定在期望响应的数据字段中的极限字节数。
7.四种C-APDU结构如下:
二、R-APDU元素说明:
返回命令(R-APDU)的格式如下,包含一个可选数据段和一个必须状态值:
数据字段(可变长度,由APDU命令中的LE确定):这个可选择的字段包含卡片返回的数据。
SW1(1字节):这个必要的字段是状态字1。
SW2(1字节):这个必要的字段是状态字2。
SW1-SW2成功一般为9000,其他值为某种状态、警告或者错误!
常用SW1-SW2值:
9000: 执行成功
6100: 数据被截断
6283: 应用无效
6300: 认证失败
6400: 原因不明
6700: 长度不对
6982: 需要PIN验证
6983: 文件无效
6984: 数据无效
6985: 条件不满足
6986: 不允许该命令
6982: 安全条件不满足
6987: 安全消息丢失
6988: 安全消息不正确
6999: 应用选择失败
6A80: 数据错误
6A81: 功能不支持
6A82: 文件找不到
6A83: 记录找不到
6A84: 没有足够的空间
6A86: 不正确的参数(P1,P2)
6A88: 引用数据没找到
6B00: 错误的参数 (P1,P2)
6C00: 长度错误 (Le)
6D00: INS不支持
6E00: CLA 不支持
6F00: 未知错误
参考博客:
APDU的更多相关文章
- 如何把apdu[decode_len]打印出来
memcpy(data, &apdu[decode_len], apdu_len - decode_len); int i = 0; for(i=0;i<apdu_len;i ...
- PBOC APDU命令解析【转】
转自:http://blog.csdn.net/zuokong/article/details/49335257 版权声明:本文为博主原创文章,未经博主允许不得转载. 应用层发出的命令报文和卡片回送到 ...
- 7816的报文结构APDU
命令APDU 包括头和主体(这可以在上面的图中看到).头包括CLA,INS,P1 和P2 域.同T0 协议一样,CLA 和INS 说明了应用的分类和指令.P1 和P2 用来详细说明具体指令,并由每一条 ...
- 7816的报文结构——APDU
命令APDU 包括头和主体(这可以在上面的图中看到).头包括CLA,INS,P1 和P2 域.同T0 协议一样,CLA 和INS 说明了应用的分类和指令.P1 和P2 用来详细说明具体指令,并由每一条 ...
- ISO 7816-4: Annex A: Transportation of APDU messages by T=0
http://www.cardwerk.com/smartcards/smartcard_standard_ISO7816-4_annex-a.aspx Annex A: Transportation ...
- Extended APDU support
http://pcsclite.alioth.debian.org/ccid_extended_apdu.html To be able to use an extended APDU you nee ...
- Complete list of APDU responses
https://www.eftlab.com.au/index.php/site-map/knowledge-base/118-apdu-response-list List of APDU resp ...
- APDU命令与响应格式【转】
本文转载自:http://map.im/apduintroduce 命令格式 APDU命令由命令头和命令体组成: CLA | INS | P1 | P2 | Lc | DATA | Le命令头: CL ...
- SIM卡APDU指令【转】
本文转载自:http://blog.csdn.net/hlx156/article/details/54136756 一个APDU可以是一个命令,也可以是命令的响应. 命令APDU的一般格式: CLA ...
随机推荐
- 【初探HTML本相】道之真谛不过自然,html标签脱俗还真
前言 须弥般若有无空,阴阳道化真虚同:洗尽前恩本非相,还吾面目下九重. 咳咳,其实老夫对佛教文化有点点研究啦,说以我们这里来了一点很有哲理的东西,因为我这里准备干一件很戳的事情,我准备来看看我们的ht ...
- 详细解读XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
本文主要参考:MDN 分析并操作 responseXML属性 如果你使用 XMLHttpRequest 来获得一个远程的 XML 文档的内容,responseXML 属性将会是一个由 XML 文档解析 ...
- SAP中删除假脱机请求
好几次公司的SAP都碰到所有的SMARTFORM都打印不了的情况.查了一下原因原来是假脱机请求太多了.清了一下,问题就解决了. 删除假脱机请求的一些方法: 1.避免经常出现此类错误,最好还 ...
- silverlight如何通过单独部署的WCF站点访问sharepoint2013的图片库
最近有项目silverlight通过单独部署的WCF站点访问sharepoint2013的图片库,需要做个笑脸墙效果如下: 结果开发完毕后无法在SP站点显示出来.使用VS自带的WCF工具进行测试.如下 ...
- Websphere 系列的https证书的配置说明
术语解释 v IHS IBM HTTP Server v WP Websphere portal v WAS Websphere Application Server 系统安装 WAS6.1 安装了例 ...
- 关于SharPoint2013一点细节的深究
在进行SharePoint2013的开发过程中我发现在开启了某些功能,或者说是创建了个人站点之后有很多地方变了比如下面这个地方: 当然相应的URL地址也发生改变.也许很明确的我就打开了Welc ...
- Kotlin语法(基础)
一.基础语法: 1. 定义包名: 包名应该在源文件的最开头,包名不必和文件夹路径一致:源文件可以放在任意位置. package my.demo 2. 定义函数: fun sum(a: Int , b: ...
- 我的Android第四章:Android的adb命令使用以及SQlite数据库运用
adb是什么?:adb的全称为Android Debug Bridge,就是起到调试桥的作用. adb有什么用?:借助adb工具,我们可以管理设备或手机模拟器的状态.还可以进行很多手机操作, ...
- NSString方法与NSMutableString方法
NSString方法+(id) stringWithContentsOfFile:path encoding:enc error:err创建一个新字符串并将其设置为path指定的文件的内容,使用字符编 ...
- iOS 教你如何实现手势密码
本次讲的手势密码,是在九个按键上实现的,这里讲的是手势密码的基本实现和效果 同样先上效果图 其实就是对画图功能的一个实现,再加上手势操作结合起来 屏幕宽度高度,方便下面操作,不做解释 #define ...