JavaCard开发教程之接口

779 篇文章 0 订阅
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

  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体系结构和运行时环境

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值