以下需求适用于符合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. 1.Linux标准IO编程

    1.1Linux系统调用和用户编程接口 1.1.1系统调用 用户程序向操作系统提出请求的接口.不同的系统提供的系统调用接口各不相同. 继承UNIX系统调用中最基本和最有用的部分. 调用按照功能分:进程 ...

  2. (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  3. 标准IO的缓冲问题

    在看APU时,第8章进程时, #include <stdio.h> #include <unistd.h> ; char buf[] = "a write to st ...

  4. 文件IO和标准IO的区别【转】

    一.先来了解下什么是文件I/O和标准I/O: 文件I/O:文件I/O称之为不带缓存的IO(unbuffered I/O).不带缓存指的是每个read,write都调用内核中的一个系统调用.也就是一般所 ...

  5. 【Java TCP/IP Socket】Java NIO Socket VS 标准IO Socket

    简介 Java  NIO从JDK1.4引入,它提供了与标准IO完全不同的工作方式. NIO包(java.nio.*)引入了四个关键的抽象数据类型,它们共同解决传统的I/O类中的一些问题.    1. ...

  6. 深究标准IO的缓存

    前言 在最近看了APUE的标准IO部分之后感觉对标准IO的缓存太模糊,没有搞明白,APUE中关于缓存的部分一笔带过,没有深究缓存的实现原理,这样一本被吹上天的书为什么不讲透彻呢?今天早上爬起来赶紧找了 ...

  7. [APUE]标准IO库(下)

    一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...

  8. [APUE]标准IO库(上)

    一.流和FILE对象 系统IO都是针对文件描述符,当打开一个文件时,即返回一个文件描述符,然后用该文件描述符来进行下面的操作,而对于标准IO库,它们的操作则是围绕流(stream)进行的. 当打开一个 ...

  9. 标准io与文件io

    A: 代码重复: 语句块1: while(判断) { 语句块2: 语句块1: } 上面可以改写为: while(1) { 语句块1: if(判断) break: 语句块2: } B: 标准IO和文件I ...

随机推荐

  1. COJ 0020 30201象棋中的皇后

    30201象棋中的皇后 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 在n×m的棋盘上放置两个相互攻击的皇后,总共有多少种不同 ...

  2. HDU4605---Magic Ball Game(主席树 好题)

    题意:一颗二叉树,任意节点要么有两个孩子要么没孩子. 然后有一个球,从结点1开始往子孙结点走. 每碰到一个结点,有三种情况 如果此球重量等于该结点重量,球就停下了 如果此球重量小于该结点重量,则分别往 ...

  3. SPOJ3267--D-query (主席树入门练习)

    题意:查找区间内不同数字的个数. 两种做法,一种是 树状数组离线,另一种就是主席树. 树状数组离线操作的链接 http://www.cnblogs.com/oneshot/p/4110415.html ...

  4. FZU2179/Codeforces 55D beautiful number 数位DP

    题目大意: 求  1(m)到n直接有多少个数字x满足 x可以整出这个数字的每一位上的数字 思路: 整除每一位.只需要整除每一位的lcm即可 但是数字太大,dp状态怎么表示呢 发现 1~9的LCM 是2 ...

  5. C plus plus primer plus

    1,运算符,操作数; 使用相同的符号(基本运算符,+ - * /  %),进行多种操作(指使用一个运算符符号,对不用类型的变量进行操作,int ,float,double),此概念将运算符的重载(op ...

  6. 创建git repo

    http://git-scm.com/book/en/Git-Basics-Getting-a-Git-Repository Getting a Git Repository You can get ...

  7. 关于Python中的for循环控制语句

    #第一个:求 50 - 100 之间的质数 import mathfor i in range(50, 100 + 1):    for j in range(2, int(math.sqrt(i)) ...

  8. windows下定时利用bat脚本实现ftp上传和下载

    前言: 工作中可能会遇到以下情况,利用windows作为中转,来实现两台linux服务器的文件传输. 实现步骤: 1.FTP上传和下载的bat脚本. 脚本分为两部分:可执行bat脚本和ftp命令文件: ...

  9. FTP服务器上删除文件夹失败

    很多人都知道:要删除FTP服务器上的文件夹时,必须确保文件夹下面没有其他文件,否则会删除失败! 可是,有些服务器考虑到安全等因素,通常会隐藏以点开始的文件名,例如“.test.txt”.于是,有的坏人 ...

  10. [React] React Router: IndexRoute

    IndexRoute allows us to define a default child component to be rendered at a specific route when no ...