以下需求适用于符合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. 谈B2B电商平台与大数据

    数据为王,服务为本——谈B2B电商平台与大数据 2013-06-27 11:10:41 作者:B2B行业资讯 标签:                             大数据           ...

  2. java与数据结构(6)---java实现链栈

    栈之链式存储结构链栈 链栈 栈的链式存储结构成为链栈.链栈是没有头结点,头结点就是栈顶指针top. 代码结构 package list; public interface Stackable;公共接口 ...

  3. ubuntu下,thinkphp验证码不能用

    首先安装gd库 使用apt-get方式为Ubuntu安装PHP+MYSQL+Apache 默认是没有GD库的 1.安装gd库 命令:sudo apt-get install php5-gd 2.给权限 ...

  4. apue

    #ifndef apue_h #define apue_h #define _POSIX_C_SOURCE 200809L #if defined(SOLARIS) /* Solaris 10 */ ...

  5. 知方可补不足~用xsl来修饰xml

    概念相关 XSL是可扩展样式表语言的外语缩写,是一种用于以可读格式呈现 XML(标准通用标记语言的子集)数据的语言. 起始于 XSL 万维网联盟(W3C)开始发展 XSL 的原因是:存在着对于基于 X ...

  6. SqlServer 笔记

    问题一:这标红色的符号 取掉 一直没有见过标红色的符号,尝试把这些符号粘贴出来到 notepad 发现它是乱码,尝试将它粘贴到sql查询分析器里,发现它显示空白.对于这种数据,一直想着找到这个acsi ...

  7. C++ Win32控制台应用程序捕捉关闭事件

      #include#includebool ctrlhandler( DWORD fdwctrltype ){    switch( fdwctrltype )    {    // handle ...

  8. 零基础学习云计算及大数据DBA集群架构师【Linux系统配置及网络配置2015年12月30日周三】

    /Mon *************摘要************** 计划任务 )一次性计划任务 服务:atd 命令:at 服务存放文件:/etc/init.d/atd 系统配置文件:/etc/at. ...

  9. 前端 CSS 基础

    CSS概述 CSS全称:层叠样式表 (Cascading Style Sheets).CSS使得网站可以:创建文档内容清晰地独立于文档表现层. 样式表定义如何显示 HTML 元素,样式通常保存在外部的 ...

  10. 网页HTML

    <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...