分享
 
 
 

JavaCard开发教程之消息模型

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

图1中说明的消息传递模型是所有java Card通信的基础。它的核心就是应用程序协议数据单元(APDU),CAD和Java Card框架之间交换的一个逻辑数据包。JavaCard框架接收任何CAD发送进来的APDU命令并且传送到相应的小应用程序中。小应用程序处理APDU命令,然后返回一个响应APDU。那些APDU遵守国际标准规格ISO/IEC 7816 - 3和7816 - 4。

图1使用消息传递模型通讯

读卡器和卡之间的通信通常基于下面两种连接协议的一种,面向字节的T = 0,或者面向数据块的T = 1。还可能会用到被称为T = USB和T = RF的替换协议。JCRE APDU类向应用程序隐藏了一些协议细节,但不是全部,因为T = 0协议相当的复杂。

⒈APDU命令

一个APDU命令的结构由它的第一个字节的值控制,大部分情况下看上去如下所示:

图2、APDU命令

一个APDU命令有一个必须有的头和一个可选的体,包含:

· CLA(1字节):这个必要的字段识别指令的一个特定应用程序类。有效的CLA值在ISO 7816 - 4规范中定义:

表格1、ISO 7816 CLA值

CLA 值

指令类

0x0n, 0x1n

ISO 7816 - 4卡指令,比如文件存取和安全操作

20 to 0x7F

保留

0x8n or 0x9n

你可以用作你的特定的应用程序指令的ISO/IEC 7816 - 4格式,根据标准解释' X '

0xAn

特定的应用程序或者供给商的指令

B0 to CF

你可以用作特定应用程序的ISO/IEC 7816 - 4格式

D0 to FE

特定的应用程序或者供给商的指令

FF

保留给协议类型选择

· 理论上,你可以使用所有的CLA值0x80或者更高值来用于特定应用程序指令,但是在许多现在的Java Card实现中,只有黑体显示的是实际认可的。

· INS(1字节):这个必需的字段指明CLA字段中标示的指令类中的一个特定指令。ISO 7816 - 4标准指定用于访问卡上的数据的基本指令,当它根据在像标准中定义的卡上的文件系统那样结构化的时候。附加功能已经在这个标准中的其它地方说明,其中一些是安全功能。表2中是一个ISO 7816指令的列表。只有当使用一个相应的CLA字节值时,你才可以根据标准定义你自己的特定应用程序的INS值,。

表格2、当 CLA = 0x时的ISO 7816 - 4 INS值

INS 值

命令描述

0E

Erase Binary

20

Verify

70

Manage Channel

82

External Authenticate

84

Get Challenge

88

Internal Authenticate

A4

Select File

B0

Read Binary

B2

Read Record(s)

C0

Get Response

C2

Envelope

CA

Get Data

D0

Write Binary

D2

Write Record

D6

Update Binary

DA

Put Data

DC

Update Record

E2

Append Record

· P1(1字节):这个必需的字段定义指令参数1。你可以使用这个字段来检验INS字段,或者用于输入数据。

· P2(1字节):这个必需的字段定义指令参数⒉你可以使用这个字段来检验INS字段,或者用于输入数据。

· Lc(1字节):这个可选的字段是命令的数据字段的字节数。

· 数据字段(可变的,字节Lc数):这个可选的字段保存命令数据。

· Le(1字节):这个可选的字段指定在期望响应的数据字段中的极限字节数。

取决于命令数据的存在与否以及相应是否必须,命令APDU有四种变化。只有在你使用协议T = 0时,你才需要关心这些变化:

点击查看大图

图3、APDU命令的四个可能的结构

一个典型的应用程序将以不同的结构方式使用不同的APDU命令。

2、响应APDU

响应APDU的格式很简单的:

图4、响应APDU

和一个APDU命令相似,响应APDU有可选择的和必要的字段:

· 数据字段(可变长度,由APDU命令中的Le确定):这个可选择的字段包含小应用程序返回的数据。

· SW1(1字节):这个必要的字段是状态字1。

· SW2(1字节):这个必要的字段是状态字2。

这些状态字的值在ISO 7816 - 4规范中定义:

图5、响应状态码

Java Card框架应用编程接口中的ISO7816 Java接口定义了许多常数来帮助规范返回错误代码。

3、过程APDU

每当有一个进入的APDU用于所选择的小应用程序,JCRE就调用小应用程序的PRocess ()方法,把进入的APDU作为一个参数传送。这个小应用程序必须解析APDU命令,处理数据、生成一个响应APDU,然后把控制权返回给JCRE。

RMI(JCRMI)通讯模型

第二种通信模型依靠J2SE RMI分布式对象模型的一个子集。

在RMI模型中,一个服务器应用程序创建并生成可访问的远程对象,并且一个客户应用程序获得到远程对象的远程引用,然后调用它们的远程方法。在JCRMI中,Java Card小应用程序是服务器,而主应用程序是客户端。

JCRMI由类RMIService提供到扩展程序包javacardx.rmi中。JCRMI消息被封装到传入RMIService方法的APDU对象中,换句话说,JCRMI提供了一个基于APDU消息传递模型的分布式对象模型机制,通过这个机制服务器和客户端通信,往返传送方法信息、参数和返回值。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有