javacard平台详解.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
javacard平台详解

PAGE \* MERGEFORMAT8  HYPERLINK /javacardsolutions/article/details/6656749 java card平台详解(一)  java卡我想很多人不陌生,有些人已经用过,在java卡上开发applet应用,有些人开发过java卡平台,使用在sun那买的授权之后提供的demo实现,或者是将要进行相关的工作的人。在这里我不想说一些大家很容易就能找到的资料,而是介绍一些更深层次的东西,而又没有侵犯到sun的保密性。 主要分为以下几个部分: 1. java卡框架,java卡的主要组成部分 2. java卡的运行机制,java卡到底是如何执行、如何工作的 3. java卡的API库,如何定制自己的API库 4. java卡的CAP文件加载器 5. java卡的性能优化 java卡框架 native cos的基本架构 首先我们来回顾一下以往native cos的基本架构: HAL层、通讯层、文件系统、算法、安全模块、个人化命令、应用命令等。 一般一个native cos只实现一个应用规范,也有同时实现两个或者更多应用规范的COS,COS实现规范里面定义的所有应用命令。 卡片上电之后,收到卡机发来的APDU后,通过解析APDU头的INS(还需要检查CLA、P1、P2之类)等步骤来找到该命令所对应的函数执行并返回结果。可以简单点来说就是一个APDU指令对应于卡内的一个功能函数,对于非规范内规定的INS,卡片一般都直接返回6d00表示不支持或者无法解析的指令。 java卡特点的简单介绍 java卡是个多应用智能卡平台,与native cos有本质的区别 ,它不是实现某个应用规范或者多个应用规范的cos,而是为cos应用开发人员提供了另外一种途径来实现应用规范。简单的类比一下,java卡和native卡的区别就相当于PC上用C语言开发应用程序和用java语言开发应用程序的区别。 java卡是个平台,是个应用容器,可以动态的装载不同的应用,也可以装载很多相同应用的不同实例。java卡把native卡里面的HAL层、通讯层、文件系统、算法、安全等都封装成了API库,所以java卡上的智能卡应用开发人员和传统的native卡的开发人员相比,工作难度要降低了很多,像文件系统、掉电保护等等通通不用再设计了。 所以java卡和传统native卡在架构上自然有很大的区别。 本章主要从代码级的角度来看java卡的执行流程。 ####################################################################### 先看一个简单的java卡的applet代码(HelloWord): 从下面的代码可以看出一个java卡应用的简单构成,install函数和process函数。其它可选接口如select、deselect和uninstall函数这里没有。 install函数负责安装这个应用,进行一些对象的初始化和注册,告诉jcre这个应用已经被成功安装,接下来就可以对这个应用进行选择和其它命令执行。 process函数是应用的最重要的命令处理函数,这里解析apdu的ins,进行命令分派,相当于native cos的commandDispatcher函数。当然这个示例比较简单,仅仅是返回一个helloword字符串。 package com.sun.javacard.samples.HelloWorld; import javacard.framework.*; public class HelloWorld extends Applet { ??? private byte[] echoBytes; ??? private static final short LENGTH_ECHO_BYTES = 256; ??? //private test testobj; ??? /** ???? * Only this classs install method should create the applet object. ???? */ ??? protected HelloWorld() ??? { ??? ?//testobj = new test(); ??????? ??????? //testobj.setsvalue((short)10); ??????? //testobj.setivalue((int)20); ??????? echoBytes = new byte[LENGTH_ECHO_BYTES]; ??????? register(); ??? } ??? /** ???? * Installs this apple

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档