首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 认证考试 > JAVA认证 >

JavaCard开发教程之接口

2008-10-05 
Java card应用编程接口规范定义了传统的java程序设计语言应用编程接口的一个小的子集--甚至小于j2 ...
Java card应用编程接口规范定义了传统的java程序设计语言应用编程接口的一个小的子集--甚至小于j2me的cldc。不支持字符串也不支持多线程。没有象boolean和integer这样的包装类,也没有class和system类。

  除java核心类的小子集以外,java card框架还定义了它自己的特定支持java card应用程序的核心类。这些包含在下面的程序包中:

  · java.io定义了一个异常类,基本的ioexception类,来完成rmi异常层次。除此之外,没有包含其他传统的java.io类。

  · java.lang定义了object和throwable类,但是没有j2se中那么多方法。它还定义了许多异常类:exception基本类,各种运行时间异常和cardexception。除此之外,没有包含其他传统的java.lang类。

  · java.rmi定义了remote接口和remoteexception类。 除此之外,没有包含其他传统的java.rmi类。 对远程方法调用(remote method invocation,rmi)的支持被包含来简化的移植并整合到使用java card技术的设备中。

  · javacard.framework定义了组成核心java card框架的接口,类和异常。 它定义了重要的概念,例如个人识别号(personal identification number,pin),应用程序协议数据单元(application protocol data unit,apdu),java card小应用程序applet,java card system(jcsystem)和一个utility类。 它还定义了各种iso7816常数和各种java card特定的异常。 表格5总结了这些程序包的内容:

  table 5. 表格java card v2.2 javacard.framework

接口

iso7816定义与iso 7816-3和iso 7816-4相关的常数。

multiselectable识别可以支持并发选择的小应用程序。

个人识别号码(pin)描述一个被用于安全(验证)目的的个人识别号。

shareable识别一个共享对象。能通过小应用程序防火墙的对象必须实现这个接口。

aid定义了一个遵循iso7816-5与应用程序提供者关联的application标识符;一个小应用程序必备的属性。

apdu定义了一个遵循iso7816-4的应用程序协议数据单元,是小应用程序(卡上)和主应用程序(卡外)之间使用的通信格式。

小应用程序定义了一个java card应用程序。所有的小应用程序必须扩展这个抽象类。

jcsystem提供了控制小应用程序生命周期、资源和事务管理,和小应用程序内部对象共享和对象删除的方法。

ownerpin是pin接口的一个实现。

util提供用于操作数组和各种short的方法,包括arraycompare()、arraycopy()、arraycopynonatomic()、arrayfillnonatomic()、getshort()、makeshort()、setshort()。

异常

定义了各种的java card虚拟机异常类:apduexception、cardexception、cardruntimeexception、isoexception、pinexception、systemexception、transactionexception、userexception。


  javacard.framework.service定义了用于服务的接口、类和异常。 服务处理apdu格式的进入的命令。 表格6总结了框架服务应用编程接口:

  表格6. javacard.framework.service

接口

service,基本的服务接口,定义了processcommand()、processdatain()和processdataout()方法。

remoteservice是一个普通service,提供到卡上的服务的远程处理。

securityservice扩展了service基本接口,并且提供了查询当前安全状况的方法,包括isauthenticated ()、ischannelsecure ()和iscommandsecure ()。

basicservice是一个服务的默认实现;它提供帮助方法来处理apdu和服务协作。

dispatcher维护一个服务的注册。如果你想委托一个apdu的处理到几个服务上,你可以使用一个dispatcher。 一个dispatcher可以使用process ()方法完整的处理一个apdu,或者使用dispatch ()方法把它发送到几个服务上让其处理。

异常

serviceexception一个服务相关的异常


  javacard.security定义了用于java card安全框架的类和接口。 java card规范定义了一个强健的安全应用编程接口,包括各种型式的私钥和公钥及其算法、用于计算循环码校验(crcs)的方法、消息摘要和签名:

  表格7. javacard.security

接口

普通的基本接口key,privatekey、publickey和secretkey,以及描述各种类型安全密钥和算法的子接口:aeskey、deskey、dsakey、dsaprivatekey、dsapublickey、eckey、ecprivatekey、ecpublickey、rsaprivatecrtkey、rsaprivatekey、rsapublickey

checksum:用于循环冗余码校验算法抽象基本类

keyagreement:用于秘钥约定算法的基本类

keybuilder:秘钥-对象工厂

keypair:一个保存一对秘钥的容器,一个私钥一个公钥

messagedigest:用于散列算法的基本类

randomdata:用于生成随机数的基本类

signature:用于签名算法的基本抽象类

异常

cryptoexception:与加密有关异常,比如不支持的算法或者未初始化的秘钥。


  javacardx.crypto是一个扩展程序包,定义了接口keyencryption和cypher类,都在自己的程序包中,便于控制导出。使用keyencryption来解密一个使用加密算法的输入秘钥。 cypher是所有的密码必须实现的基本抽象类。

  cardremoteobject定义两个方法export()和unexport(),允许或者禁止从卡外到对象的远程访问。rmiservice扩展了basicservice,并且实现remoteservice来处理rmi请求。

  安全和信任服务应用编程接口(satsa)

  定义在jsr177中的satsa,指定一个提供用于j2me的安全和信任应用编程接口的可选程序包。客户端应用编程接口提供了到通过一个安全元素(例如一张智能卡)提供的服务的访问,包括敏感信息的安全存储与检索,以及加密和验证服务。

  satsa利用定义在cldc 1.0版本中的普通连接框架(gcf)来提供到消息传递和jcrmi通信模型的更抽象的接口。为了支持信息传送,satsa定义了apdu:url模式和apduconnection, 并且为了支持jcrmi,它定义了jcrmi:模式和javacardrmiconnection。



  satsa有下面的程序包组成:

   java.rmi定义了java2标准版java.rmi程序包的一个子集,特别是remote和remoteexception。

   javacard.framework定义了一个远程方法可能抛出的标准java card应用编程接口异常:cardruntimeexception、isoexception、apduexception、cardexception、pinexception、systemexception、transactionexception和userexception。

   javacard.framework.service定义了远程的方法可能抛出的一个标准的java card应用编程接口服务异常:serviceexception。

   javacard.security定义了一个远程方法可能抛出的标准的java card应用编程接口与加密相关的异常:cryptoexception。

   javax.microedition.io定义了两个连接子接口,apduconnection用于基于apdu协议的智能卡的访问,javacardrmiconnection用于java card rmi协议。

   javax.microedition.jcrmi定义了java card rmi stub编译程序生成的stub使用的类和接口。

   javax.microedition.pki定义了用于用户证书基本管理的类。

   javax.microedition.securityservice定义了用于生成应用程序级别的数字签名的类。

  java card运行时环境

  jcre规范定义了java card虚拟机的生命周期,小应用程序生命周期,小应用程序如何被选择并相互隔离,事务和对象持久性和共享。这jcre提供一个平台无关的接口到卡片的操作系统提供的服务。它由java card虚拟机、java card应用编程接口和任何特定供应商的扩展组成:


图java card体系结构和运行时环境