ISO7816标准IO通讯方面的需求
以下需求适用于符合ISO7816的Reader的测试:换句话说只要Reader能通过以下指令,就基本符合了ISO7816标准,具体需求为:
1 概述
本文档主要描述CDCAS系统中用到的CA证书的格式及相关约定。
2 证书格式
2.1 SW1、SW2返回值含义:
|
值(Hex) |
说明 |
|
6E 00 |
CLA错误 |
|
6D 00 |
INS错误 |
|
67 00 |
数据长度错误 |
|
69 88 |
数据内容有错误 |
|
6A 00 |
P1/P2错误 |
|
90 00 |
数据正确 |
2.2 各项输入指令、输入数据,输出数据及期望的正确返回
2.2.1 ATR测试
由于指令修改,智能卡中ATR所带版本信息增加。测试方法为,向输入Reset指令,卡返回ATR如下:
|
版本 |
ATR |
|
SpecIC2.0.00 |
0x3B 7A 18 00 00 20 00 53 70 65 63 43 61 72 64 |
|
SpecIC2.0.01 |
0x3B 7A 18 00 00 20 01 53 70 65 63 43 61 72 64 |
2.2.2 INS测试
a) 向卡输入指令0x00 20 00 00 04,过2etus卡返回INS(0x20),之后向卡输入数据1,2,3,4,卡验证输入数据正确并返回0x90 00。具体输入输出如表1所示:
表1
|
1.输入指令 |
CLA |
0x00 |
|
INS |
0x20 |
|
|
P1 |
0x00 |
|
|
P2 |
0x00 |
|
|
Lc |
0x04 |
|
|
2.等待时间 |
2etus |
|
|
3.返回ACK |
0x20 |
|
|
4.输入数据 |
1,2,3,4 |
|
|
5.返回 |
SW1 |
0x90 |
|
SW2 |
0x00 |
|
b) 向卡输入指令0x00 22 00 00 04,过9600etus卡返回INS(0x22),之后向卡输入数据1,2,3,4,卡验证输入数据正确并返回0x90 00。具体输入输出如表2所示:I
表 2
|
1.输入指令 |
CLA |
0x00 |
|
INS |
0x22 |
|
|
P1 |
0x00 |
|
|
P2 |
0x00 |
|
|
Lc |
0x04 |
|
|
2.等待时间 |
9600etus |
|
|
3.返回ACK |
0x22 |
|
|
4.输入数据 |
1,2,3,4 |
|
|
5.返回 |
SW1 |
0x90 |
|
SW2 |
0x00 |
|
2.2.3 输入输出测试
a) 向卡输入指令0x00 30 00 00 FF,卡返回INS(0x30),之后向卡输入数据1,2,3,……255,卡验证输入数据正确并返回0x90 00。具体输入输出如表3所示:
表 3
|
1.输入指令 |
CLA |
0x00 |
|
INS |
0x30 |
|
|
P1 |
0x00 |
|
|
P2 |
0x00 |
|
|
Lc |
0xFF |
|
|
2.返回ACK |
0x30 |
|
|
3.输入数据 |
1,2,3……255 |
|
|
4.返回 |
SW1 |
0x90 |
|
SW2 |
0x00 |
|
b) 向卡输入指令0x00 32 00 00 00,卡返回INS(0x32),之后卡输出数据0,1,2,3,……255,输出数据完成后卡返回0x90 00。具体输入输出如表4所示:
表 4
|
1.输入指令 |
CLA |
0x00 |
|
INS |
0x32 |
|
|
P1 |
0x00 |
|
|
P2 |
0x00 |
|
|
Le |
0x00 |
|
|
2.返回ACK |
0x32 |
|
|
3.输出数据 |
0,1,2……255 |
|
|
4.返回 |
SW1 |
0x90 |
|
SW2 |
0x00 |
|
c) SpecIC2.0.00版本支持
向卡输入指令0x00 34 00 00 FF,卡返回INS(0x34),之后向卡输入数据1,2,3,……255,卡验证正确后输出数据1,2,3,4,输出数据完成后卡返回0x90 00。具体输入输出如表5-1所示:
表5-1
|
1.输入指令 |
CLA |
0x00 |
|
INS |
0x34 |
|
|
P1 |
0x00 |
|
|
P2 |
0x00 |
|
|
Le |
0xFF |
|
|
2.返回ACK |
0x34 |
|
|
3.输入数据 |
1,2,3……255 |
|
|
4.返回 |
0x61,0x 04 |
|
|
5.输入指令 |
CLA |
0x00 |
|
INS |
0xC0 |
|
|
P1 |
0x00 |
|
|
P2 |
0x00 |
|
|
Le |
0x04 |
|
|
6.返回ACK |
0xC0 |
|
|
7.输出数据 |
1,2,3,4 |
|
|
8.返回 |
SW1 |
0x90 |
|
SW2 |
0x00 |
|
d) SpecIC2.0.01版本支持
向卡输入指令0x00 34 00 00 FF,卡返回INS(0x34),之后向卡输入数据1,2,3,……255,卡验证正确后输出数据1,2,3,……255,输出数据完成后卡返回0x90 00。具体输入输出如表5-2所示:
表5-2
|
1.输入指令 |
CLA |
0x00 |
|
INS |
0x34 |
|
|
P1 |
0x00 |
|
|
P2 |
0x00 |
|
|
Le |
0xFF |
|
|
2.返回ACK |
0x34 |
|
|
3.输入数据 |
1,2,3……255 |
|
|
4.返回 |
0x61,0x FF |
|
|
5.输入指令 |
CLA |
0x00 |
|
INS |
0xC0 |
|
|
P1 |
0x00 |
|
|
P2 |
0x00 |
|
|
Le |
0xFF |
|
|
6.返回ACK |
0xC0 |
|
|
7.输出数据 |
1,2,3……255 |
|
|
8.返回 |
SW1 |
0x90 |
|
SW2 |
0x00 |
|
2.2.4 工作等待时间测试
a) 向卡输入指令0x00 40 00 00 04,卡返回INS(0x40),之后向卡输入数据1,2,3,4,过4秒后卡返回0x90 00,在4秒期间,卡每隔9300etus输出0x60,具体输入输出如表6所示:
表 6
|
1.输入指令 |
CLA |
0x00 |
|
INS |
0x40 |
|
|
P1 |
0x00 |
|
|
P2 |
0x00 |
|
|
Lc |
0x04 |
|
|
2.返回ACK |
0x40 |
|
|
3.输入数据 |
1,2,3,4 |
|
|
4.等待时间 |
4秒,期间每隔>9300etus卡输出0x60 |
|
|
5.返回 |
SW1 |
0x90 |
|
SW2 |
0x00 |
|
b) 向卡输入指令0x00 42 00 00 04,4秒后卡返回INS(0x42),之后卡输出数据1,2,3,4。在4秒期间,卡每隔9300etus输出0x60,具体输入输出如表7所示:
表 7
|
1.输入指令 |
CLA |
0x00 |
|
INS |
0x42 |
|
|
P1 |
0x00 |
|
|
P2 |
0x00 |
|
|
Le |
0x04 |
|
|
2等待时间 |
4秒,其间每隔>9300etus卡输出0x60 |
|
|
3.返回ACK |
0x42 |
|
|
4.输出数据 |
1,2,3,4 |
|
|
5.返回 |
SW1 |
0x90 |
|
SW2 |
0x00 |
|
2.2.5 读取SerialNumber
表8
|
1.输入指令 |
CLA |
0x00 |
|
INS |
0x50 |
|
|
P1 |
0x00 |
|
|
P2 |
0x00 |
|
|
Le |
0x08 |
|
|
2.返回ACK |
0x50 |
|
|
3.输出数据 |
8个Byte长度SerialNumber |
|
|
4.返回 |
SW1 |
0x90 |
|
SW2 |
0x00 |
|
2.2.6 标准pps改变速率
PPS卡可以设置通信速率,通过该卡用户能够验证机顶盒等读卡器设备能否在不同的速率下和智能卡进行正确的通信。PPS协议具体可参考ISO_IEC_7816-3第八章。
根据公式: 我们可以计算每个etu消耗的时间,
具体输入输出如表9所示:
表9
|
1.Reset |
设置速率前必须Reset |
|
|
2.卡返回 |
0x3B 7A 18 00 00 20 00 53 70 65 63 43 61 72 64 |
其中第三个Byte 0x18,表示FI=1,DI=8,查图1可得:Fi=372,Di=12。根据计算etu的公式可以计算出传输速率将是原来的12倍。 |
|
2.读卡器输入 |
0xFF 10 18 F7 |
|
|
3.卡返回 |
0xFF 10 18 F7 |
设置速率完成,下面按设置的速率进行通信 |
图1
2.2.7 设置速率
使用指令0x88可以修改智能卡与读卡设备之间的通信速率,目前支持三种速率的设置:1、6、12,具体输入输出如表10所示:
表10
|
1.输入指令 |
CLA |
0x00 |
|
INS |
0x88 |
|
|
P1 |
0x00 |
|
|
P2 |
0x01或0x06或0x0C |
|
|
Le |
0x00 |
|
|
2.返回 |
SW1 |
0x90 |
|
SW2 |
0x00 |
ISO7816标准IO通讯方面的需求的更多相关文章
- 1.Linux标准IO编程
1.1Linux系统调用和用户编程接口 1.1.1系统调用 用户程序向操作系统提出请求的接口.不同的系统提供的系统调用接口各不相同. 继承UNIX系统调用中最基本和最有用的部分. 调用按照功能分:进程 ...
- (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- 标准IO的缓冲问题
在看APU时,第8章进程时, #include <stdio.h> #include <unistd.h> ; char buf[] = "a write to st ...
- 文件IO和标准IO的区别【转】
一.先来了解下什么是文件I/O和标准I/O: 文件I/O:文件I/O称之为不带缓存的IO(unbuffered I/O).不带缓存指的是每个read,write都调用内核中的一个系统调用.也就是一般所 ...
- 【Java TCP/IP Socket】Java NIO Socket VS 标准IO Socket
简介 Java NIO从JDK1.4引入,它提供了与标准IO完全不同的工作方式. NIO包(java.nio.*)引入了四个关键的抽象数据类型,它们共同解决传统的I/O类中的一些问题. 1. ...
- 深究标准IO的缓存
前言 在最近看了APUE的标准IO部分之后感觉对标准IO的缓存太模糊,没有搞明白,APUE中关于缓存的部分一笔带过,没有深究缓存的实现原理,这样一本被吹上天的书为什么不讲透彻呢?今天早上爬起来赶紧找了 ...
- [APUE]标准IO库(下)
一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...
- [APUE]标准IO库(上)
一.流和FILE对象 系统IO都是针对文件描述符,当打开一个文件时,即返回一个文件描述符,然后用该文件描述符来进行下面的操作,而对于标准IO库,它们的操作则是围绕流(stream)进行的. 当打开一个 ...
- 标准io与文件io
A: 代码重复: 语句块1: while(判断) { 语句块2: 语句块1: } 上面可以改写为: while(1) { 语句块1: if(判断) break: 语句块2: } B: 标准IO和文件I ...
随机推荐
- iOS 操作系统架构
Mac OS 和 iOS 操作系统架构 做iOS开发已经半年多了,但是感觉对iOS开发的理解却还只停留在表面,昨天刚把两个项目结了,今天打算学了一下iOS系统的架构,以便于更好的理解和开发. 首先看一 ...
- COJ 0995 WZJ的数据结构(负五)区间操作
WZJ的数据结构(负五) 难度级别:C: 运行时间限制:1000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 请你设计一个数据结构,完成以下功能: 给定一个大小为 ...
- COJ 0026 汉诺塔问题
汉诺塔问题 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 经典的汉诺塔游戏相信很多同学都会玩的,规则就不用赘述,百科一下就OK ...
- [LeetCode] 116. Populating Next Right Pointers in Each Node 解决思路
Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...
- MySQL 遇到的问题:在服务里找不到自己的 MySQL,以及在命令行窗口中运行服务出现的问题。
1.用数据库的时候在服务里找不到自己的 MySQL ,于是就想用命令行窗口去运行. ①.在开始里,键入 cmd ,打开命令行窗口. ②.输入:mysql -u root -p 回车,这时会提示请输入密 ...
- [Qt] CFlip 翻页功能实现
由于需要给table制作翻页功能,所以写了一个翻页的类. 看上去总体效果感觉还是不错的,哈哈. //flip.h #ifndef CFLIP_H #define CFLIP_H #include &l ...
- 新建cocos2d-xproject
在cocos2d-x v3.1.1版本号中,採用命令行的方式来创建一个新的project.比方新建一个名为MyGame的project能够用以下的命令: watermark/2/text/aHR ...
- wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验
wxWidgets刚開始学习的人导引全文件夹 PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wx ...
- 关于Javascript语言中this关键字(变量)的用法
最近很多 Javascript初学者朋友总在问: Javascript 的this 关键字的用法.我在这里索性总结一下 this关键字的用法. this 关键字是面向对象编程语言中的一个重要概念!在J ...
- iOS 音频开发经验汇总
一.音乐播放类概念 iOS 下能支持歌曲和声音播放的的类有几个: SystemSound AVFoundtion库中的AVAudioPlayer #重要 MediMPMusicPlayerContro ...