APDU命令与响应格式【转】

本文转载自:http://map.im/apduintroduce

命令格式

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

时间: 2024-07-31 18:11:00

APDU命令与响应格式【转】的相关文章

LPC1788做U盘的时候对命令的响应

首先是对于端点的数据处理 #ifndef __USBEP2_H_ #define __USBEP2_H_ #include "usb.h" #include "usbhw.h" #include "msc.h" #include "mscuser.h" void usb_ep2_in_process(void); void usb_ep2_out_process(void); #endif #include "usb

Linux上命令的使用格式和基础命令详解

一.Linux上命令的使用格式 命令行提示符详解: 用户通过终端的命令行接口来控制操作系统,登陆后如下: [[email protected] ~]# root: 当前登录的用户 @:分隔符 localhost: 当前主机的主机名,非完整格式:此处的完整格式为:localhost.localdomain [[email protected] ~]# hostname localhost.localdomain ~:用户当前所在的目录(current directory),也称为工作目录(work

inux系统上命令的使用格式及基础命令的使用

Linux系统上命令的使用格式: COMMAND[OPTIONS...] [ARGUMENTS...] command:命令 OPTIONS [选项]:用于启用或关闭命令的某个或某些功能: 短选项:-+一个字符, 例如:-l, -h:多个短选项可合并使用,例如-l -h, 可写作-lh:如何不合并,要使用空白字符隔开. 长选项:--word,例如:--long,--human-readable:多个长选项不可以合并使用. ARGUMENTS [参数]:命令的作用对象,向命令提供数据:多参数应该使

命令的使用格式及介绍

命令的使用格式及介绍 命令的通用格式 COMMAND OPTIONS ARGUMENTS:命令 选项 参数 发起一个命令,请求内核将某个二进制程序运行为一个进程 程序到进程,静态到动态,具有生命周期 COMMAND 命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享文件 OPTIONS 指定命令的运行特性 ARGUMENTS 命令的作用对象:命令对什么生效 相关基础命令介绍及使用 ifconfig 常用选项 -a:显示当前系统所有可用的接口的信息,甚至是down的接口 -s:简短

ubuntu下用java代码调用命令将java格式文件转换为html格式文件

首先我们应该在电脑上装上GNU Source-highlight 3.1.7,给个链接参考: http://www.gnu.org/software/src-highlite/#mozTocId120994 下面代码实现了 将java类型的代码转换为html文件类型的代码,如果java代码的文件名为 helloword.java,则转换为html格式的文件名为helloword.java.html,将java代码在浏览器上显示出来.其次我还将html文件中的内容提取出来,便于在html文件里编写

http请求响应格式

当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:l   请求方法URI协议/版本l   请求头(Request Header)l   请求正文下面是一个HTTP请求的例子:GET/sample.jspHTTP/1.1 Accept:image/gif.image/jpeg,*/*Accept-Language:zh-cnConnection:Keep-AliveHost:localhostUser-Agent:Mozila/4.0(co

HTTP——请求和响应格式

HTTP请求格式:<request-line><headers><blank line>[<request-body>]说明:第一行必须是一个请求行(request-line),用来说明请求类型,要访问的资源以及所使用的HTTP版本.      紧接着是一个首部(header)小节,用来说明服务器要使用的附加信息.      之后是一个空行.      再后面可以添加任意的其他数据[称之为主体(body)].例1 GET请求: GET / HTTP/1.1A

sqlite3命令读出sqlite3格式的文件内容案例

/*********************************************************************  * Author  : Samson  * Date    : 07/09/2014  * Test platform:  *              3.11.0.11-generic #19-Ubuntu  *              GNU bash, version 4.2.45  * ****************************

PHPcms 调用命令的基本格式:

PHPcms 调用命令的基本格式: 开始:{pc:content action="模块操作名" catid="调用栏目ID" num="数据调用数量" siteid="默认调用系统站点" order="排序方式.一般按照listorder ASC排序,即栏目的添加顺序" return="定义的数组变量名"} 结束:{/pc} 循环的调用语句:开始:{loop $data(这是定义的数组变