一种Java卡及其应用打补丁的方法

文档序号:6624818阅读:229来源:国知局
一种Java卡及其应用打补丁的方法
【专利摘要】本发明提供一种JAVA卡及其应用打补丁的方法,该方法包括:下载指定应用程序的补丁包,所述补丁包中包括继承所述指定应用程序的小应用程序(Applet)子类;对所述补丁包进行实例化。本发明利用继承关系设计了针对JavaCard的高效易行、简单实用的可商用的应用补丁机制;硬掩膜JAVA卡内置应用APPLET中设计的分层、补丁架构,能够修改APPLET中任意层次出现的问题。
【专利说明】一种Java卡及其应用打补丁的方法

【技术领域】
[0001]本发明涉及智能卡领域,特别是涉及一种Java卡及其应用打补丁的方法。

【背景技术】
[0002]随着科学技术的不断进步,智能卡的应用已涉及到人类生活的各个领域,如商业、医疗、保险、交通、社会公共事业等多种领域。同时,用户手里的智能卡数量也越来越多,特别是同种类的卡由于要升级卡片信息往往需要换一张新卡.所以,如何高效利用智能卡,即如何设计智能卡的补丁机制,以实现发卡后更新卡片应用程序是十分重要的课题。
[0003]一般情况下,针对NATIVE(本地方法实现)卡,如果发现C0S(Card OperatingSystem,卡操作系统)中有程序错误或者需要增加新的功能而需要修改某些函数或文件,最简单的办法就是重新发卡,即回收卡片,重新下载COS。但是当卡片已经在用户手中,这时,不仅要回收卡片,还要经历COS下载、个人化等阶段,这就显的非常麻烦。
[0004]传统的补丁设计方法是直接在程序中预留一段或者多段代码。这样,当需要下载补丁时,只需将补丁程序写到预留的地址中去即可。但是,由于在预留代码时一般不能确定未来下载补丁的大小和个数,所以,这种实现方法有一定的局限性,而且,在需要下载的补丁较大或者较多时,比较容易出现代码重叠的情况,使COS在执行过程中出现异常错误。
[0005]也有人提出通过建立PATCH(补丁)函数表和在操作系统主程序中设计调用补丁的接口来实现补丁的下载和管理,可以根据不同的补丁分类索引进行补丁下载,而且不再受补丁大小的限制,同时支持多个补丁的下载。
[0006]以上是NATIVE卡补丁机制的发展情况,而对于基于面向对象编程思想的JavaCard (爪睡卡),由于跨CAP (Converted Applet,转化小应用程序)包访问的限制,几乎还没有切实可行的补丁机制。导致JavaCard应用开发灵活性差,特别是在卡片已经掩膜完成或已经交付使用后再出现问题,修改难度会非常大,并且修改周期长。出于安全的考虑,Java平台对应用的结构有很大的限制,现有的补丁机制都处于理论阶段,离高效易行、简单实用的目标还有一定差距,大多数JavaCard COS出问题时还是采用全后下载(JAVA程序具有可动态下载的属性,全后下载即将应用程序全部进行后下载,抛弃已经掩膜的所有应用程序)的方式进行修改。
[0007]现有的补丁机制只在理论阶段,没有针对后期的补丁开发的空间代价做考虑,如果应用出现问题,补丁将大量浪费宝贵的可擦除存储区域资源,特别是在商用过程中,将严重影响卡片的竞争力。


【发明内容】

[0008]本发明要解决的技术问题是提供一种JAVA卡及其应用打补丁的方法,以在基于面向对象编程思想的JavaCard中实现切实可行的补丁机制。
[0009]为了解决上述技术问题,本发明提供了一种JAVA卡应用打补丁的方法,包括:
[0010]下载指定应用程序的补丁包,所述补丁包中包括继承所述指定应用程序的小应用程序(Applet)子类;
[0011 ] 对所述补丁包进行实例化。
[0012]进一步地,上述方法还具有下面特点:所述小应用程序子类包括:
[0013]重写的所述指定应用程序中的问题子程序。
[0014]进一步地,上述方法还具有下面特点:
[0015]所述指定应用程序为继承所述小应用程序(Applet)的应用程序,声明为抽象属性,存放在第一转化小应用程序文件中;
[0016]所述指定应用程序的应用接口程序继承所述指定应用程序,存放在第二转化小应用程序文件中;
[0017]所述指定应用程序的补丁包存放在第三转化小应用程序文件中。
[0018]为了解决上述问题,本发明还提供了一种JAVA卡,其中,包括:
[0019]下载模块,用于下载指定应用程序的补丁包,所述补丁包中包括继承所述指定应用程序的小应用程序(Applet)子类;
[0020]实例化模块,用于对所述补丁包进行实例化。
[0021]进一步地,上述JAVA卡还具有下面特点:
[0022]所述小应用程序子类包括:重写的所述指定应用程序中的问题子程序。
[0023]进一步地,上述JAVA卡还具有下面特点:还包括,
[0024]存储模块,用于将所述指定应用程序存放在第一转化小应用程序文件中,所述指定应用程序为继承所述小应用程序(Applet)的应用程序,声明为抽象属性;将所述指定应用程序的应用接口程序存放在第二转化小应用程序文件中,所述指定应用程序的应用接口程序继承所述指定应用程序;将所述指定应用程序的补丁包存放在第三转化小应用程序文件中。
[0025]为了解决上述问题,本发明还提供了一种JAVA卡应用打补丁的方法,包括:
[0026]下载指定文件的补丁包,所述补丁包中包括继承所述指定文件的文件子类,和继承调用所述指定文件的应用程序的小应用程序(Applet)子类,所述Applet子类将所述文件子类的实例对象赋值给所述应用程序中用于调用所述指定文件的实例对象;
[0027]对所述补丁包进行实例化。
[0028]进一步地,上述方法还具有下面特点:
[0029]所述文件子类中包括:重写的所述指定文件的问题子程序。
[0030]进一步地,上述方法还具有下面特点:
[0031]所述应用程序为继承所述小应用程序(Applet)的应用程序,声明为抽象属性,放在第一转化小应用程序文件中;
[0032]所述指定文件的补丁包放在第二转化应用程序文件中。
[0033]为了解决上述问题,本发明还提供了一种JAVA卡,其中,包括:
[0034]下载模块,用于下载指定文件的补丁包,所述补丁包中包括继承所述指定文件的文件子类,和继承调用所述指定文件的应用程序的小应用程序(Applet)子类,所述Applet子类将所述文件子类的实例对象赋值给所述应用程序中用于调用所述指定文件的实例对象;
[0035]实例化模块,用于对所述补丁包进行实例化。
[0036]进一步地,上述JAVA卡还具有下面特点:
[0037]所述文件子类包括:重写的所述指定文件的问题函数。
[0038]进一步地,上述JAVA卡还具有下面特点:还包括:
[0039]存储模块,用于将所述应用程序存放在第一转化小应用程序文件中,所述应用程序为继承所述小应用程序(Applet)的应用程序,声明为抽象属性;将所述指定文件的补丁包存放在第二转化应用程序文件中。
[0040]综上,本发明提供一种JAVA卡及其应用打补丁的方法,利用继承关系设计了针对JavaCard的高效易行、简单实用的可商用的应用补丁机制;硬掩膜JAVA卡内置应用APPLET中设计的分层、补丁架构,能够修改APPLET中任意层次出现的问题。考虑后期补丁开发付出的空间代价,设计能利用最小空间实现修改需求的补丁架构。合理布局底层系统和功能函数,模块化处理代码,使得补丁架构简单明晰,缩短开发周期。

【专利附图】

【附图说明】
[0041]图1为本发明实施例一的一种JAVA卡打补丁的方法的流程图;
[0042]图2为本发明实施例一的补丁架构图;
[0043]图3为本发明一应用示例的补丁架构图;
[0044]图4为本发明实施例二的一种JAVA卡打补丁的方法的流程图;
[0045]图5为本发明实施例二的补丁架构图。

【具体实施方式】
[0046]为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
[0047]图1为本发明实施例一的一种JAVA卡打补丁的方法的流程图,如图1所示,本实施例的方法是针对应用程序进行打补丁,可以包括以下步骤:
[0048]步骤11、下载指定应用程序的补丁包,所述补丁包中包括继承所述指定应用程序的小应用程序(Applet)子类;
[0049]步骤12、对所述补丁包进行实例化。
[0050]以下以具体实施例对本发明的方法进行详细的说明。
[0051 ] 本实施例中,可以将JAVA APPLET按模块进行细分,如图2所示,假设:
[0052]最底层的相关类(包含常用的基本文件和共享接口,如二进制文件、变长记录文件等)放在名为fileSyStem(此名字为示例,下同)的CAP中,作为底层系统库;
[0053]含应用功能的类(即应用程序)extends Applet (继承于Applet),可调用底层系统库中的类,并声明为abstract(抽象)属性,放在名为absapplet的CAP中,作为应用功能库,其中各功能皆模块化处理,区分明晰,函数采用逐层调用设计,单个函数代码量小,便于减小补丁代码量;声明为abstract (抽象)属性的类可以被继承,但无法独立运行,但如果该类继承了 Applet,则继承该类的子类可以独立运行,否则继承该类的子类也不能独立运行。
[0054]作为与JAVA平台交互的应用接口包,继承应用功能库的类具有applet的属性,可接收和处理JAVA平台分发的指令,放在名为pboc的CAP中,这个CAP占用空间很小,相比于整个COS系统所占空间,可忽略不计。
[0055]应用接口包中的应用接口与应用功能库包中的应用程序——对应。
[0056]继承是面向对象语言的重要机制,借助继承,可以扩展原有的代码,应用到其他程序中,而不必重新编写这些代码。在JAVA语言中,继承是通过扩展原有的类,声明新类来实现的。扩展声明的新类称为子类,原有的类称为超类(父类)。继承机制规定,子类可以拥有超类的所有属性和方法,也可以扩展定义自己特有的属性,增加新方法和重新定义超类的方法。
[0057]如果需要修改JAVA APPLET功能,需要后下载一个新的应用接口包patchpboc.CAP,称为补丁应用接口包,替代原应用接口包,并在patchpboc.CAP中实现功能修改,使用时通过该接口包进行实例化即可实现补丁功能。
[0058]所述补丁应用接口包中包括继承待修改的应用程序的APPLET子类,这样对该补丁应用接口包中的APPLET子类进行实例化,即可实现待修改的应用程序的全部属性。
[0059]所述补丁应用接口包中包括继承待修改的应用程序的APPLET子类,该APPLET子类包括重写的待修改的应用程序中的待修改的子程序。
[0060]本实施例的方法可以在多应用的商用项目中使用,例如,可以在支持中国人民银行发布的借贷记3.0应用、EDEP及EDEP扩展应用,如图3所示,详细框架如下:
[0061]A.底层系统库
[0062]包含常用的基本文件和共享接口,重点是基本文件,包括:
[0063]二进制文件(Binary File);
[0064]变长记录文件(VariableRecord File);
[0065]定长记录文件(FixRecord File);
[0066]循环记录文件(CyclicRecord File);
[0067]......
[0068]为了模块化管理文件系统,各文件间采用根据文件属性的异同点,采用继承的方式实现,既可以节省大量空间,也便于后续补丁设计。除了基本文件,文件系统还含有另一部分内容一PBOC共享接口,该接口通过Sharable (共享)接口实现,主要是为了实现applet之间的访问操作。
[0069]b.应用功能库
[0070]应用功能库包括权限管理、交易功能等,该库中的类继承APPLET(该库中的类在声明时都写成了 XX extends applet, applet是平台自有的专门声明应用小程序的类,这样应用接口包中的类只要继承该类就可以独立运行了,不需要再继承applet 了)并声明为abstract类型,涉及文件处理方面的需求,皆调用底层系统库,可含多个这样的类,以支持多应用,如图2中的PB0C3.0、EDEP和EDEP扩展应用,所有的功能函数都尽量模块化,使得函数层次明确,单个函数代码不宜过多,避免在补丁中重写该函数时,代码中无误的部分也需要重写,造成空间浪费。
[0071]c.与JAVA平台交互的应用接口包
[0072]在应用接口包中主要实现applet与JAVA平台的交互,该包中的类继承应用功能库中的类,具有applet的属性,可接收和处理平台分发的指令,这个CAP占用空间要尽量小,将真正的applet简化成一个很小的“壳”,如果后续需要打补丁,则只需重新下载一个类似的“壳”并重写相应的功能函数的补丁包,即可达到修改功能的目的。
[0073]本实施例设计的补丁机制,可以修改硬掩膜内置JAVA应用出现的问题,包括最底层的文件系统中的问题。
[0074]本发明实施例相应地提供一种JAVA卡,可以包括:
[0075]下载模块,用于下载指定应用程序的补丁包,所述补丁包中包括继承所述指定应用程序的小应用程序(Applet)子类;
[0076]实例化模块,用于对所述补丁包进行实例化。
[0077]其中,所述小应用程序子类包括:重写的所述指定应用程序中的问题子程序。
[0078]本实施例的JAVA卡还可以包括:
[0079]存储模块,用于将所述指定应用程序存放在第一转化小应用程序文件中,所述指定应用程序为继承所述小应用程序(Applet)的应用程序,声明为抽象属性;将所述指定应用程序的应用接口程序存放在第二转化小应用程序文件中,所述指定应用程序的应用接口程序继承所述指定应用程序;将所述指定应用程序的补丁包存放在第三转化小应用程序文件中。
[0080]图4为本发明实施例二的一种JAVA卡打补丁的方法的流程图,如图4所示,本实施例的方法是针对JAVA卡中的文件系统进行打补丁,可以包括以下步骤:
[0081]步骤21、下载指定文件的补丁包,所述补丁包中包括继承所述指定文件的文件子类,和继承调用所述指定文件的应用程序的小应用程序(Applet)子类,所述Applet子类将所述文件子类的实例对象赋值给所述应用程序中用于调用所述指定文件的实例对象;
[0082]步骤22、对所述补丁包进行实例化。
[0083]如图5所示,在对JAVA卡中的文件系统的补丁中新建一文件子类,该文件子类继承待修改的文件,例如,文件系统中的fileA出问题待修改,在补丁包中包括一新文件子类file B, file B继承file A,在file B中重写fileA中的问题函数。
[0084]在该补丁包中还包括用于调用新文件子类file B的模块,该模块将新文件子类fileB的实例对象赋值给应用程序中用于调用待修改文件flie A的实例对象flieA a。
[0085]本实施例的补丁架构,易读易懂,结构简单明晰,对JavaCard语法和面向对象编程比较了解即可单独设计和使用此类补丁,开发周期可以很短,可以大大提高项目的执行效率。本实施例用于实现补丁功能的应用接口包占用空间很小,将ROM代码的利用率保持在很高的水平,避免资源的浪费,节省的空间可以增加卡片能承载的应用数量。
[0086]本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
[0087]以上仅为本发明的优选实施例,当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
【权利要求】
1.一种JAVA卡应用打补丁的方法,包括: 下载指定应用程序的补丁包,所述补丁包中包括继承所述指定应用程序的小应用程序(Applet)子类; 对所述补丁包进行实例化。
2.如权利要求1所述的方法,其特征在于:所述小应用程序子类包括: 重写的所述指定应用程序中的问题子程序。
3.如权利要求1或2所述的方法,其特征在于: 所述指定应用程序为继承所述小应用程序(Applet)的应用程序,声明为抽象属性,存放在第一转化小应用程序文件中; 所述指定应用程序的应用接口程序继承所述指定应用程序,存放在第二转化小应用程序文件中; 所述指定应用程序的补丁包存放在第三转化小应用程序文件中。
4.一种JAVA卡,其特征在于,包括: 下载模块,用于下载指定应用程序的补丁包,所述补丁包中包括继承所述指定应用程序的小应用程序(Applet)子类; 实例化模块,用于对所述补丁包进行实例化。
5.如权利要求4所述的JAVA卡,其特征在于: 所述小应用程序子类包括:重写的所述指定应用程序中的问题子程序。
6.如权利要求4或5所述的JAVA卡,其特征在于:还包括, 存储模块,用于将所述指定应用程序存放在第一转化小应用程序文件中,所述指定应用程序为继承所述小应用程序(Applet)的应用程序,声明为抽象属性;将所述指定应用程序的应用接口程序存放在第二转化小应用程序文件中,所述指定应用程序的应用接口程序继承所述指定应用程序;将所述指定应用程序的补丁包存放在第三转化小应用程序文件中。
7.—种JAVA卡应用打补丁的方法,包括: 下载指定文件的补丁包,所述补丁包中包括继承所述指定文件的文件子类,和继承调用所述指定文件的应用程序的小应用程序(Applet)子类,所述Applet子类将所述文件子类的实例对象赋值给所述应用程序中用于调用所述指定文件的实例对象; 对所述补丁包进行实例化。
8.如权利要求7所述的方法,其特征在于: 所述文件子类中包括:重写的所述指定文件的问题子程序。
9.如权利要求7或8所述的方法,其特征在于: 所述应用程序为继承所述小应用程序(Applet)的应用程序,声明为抽象属性,放在第一转化小应用程序文件中; 所述指定文件的补丁包放在第二转化应用程序文件中。
10.一种JAVA卡,其特征在于,包括: 下载模块,用于下载指定文件的补丁包,所述补丁包中包括继承所述指定文件的文件子类,和继承调用所述指定文件的应用程序的小应用程序(Applet)子类,所述Applet子类将所述文件子类的实例对象赋值给所述应用程序中用于调用所述指定文件的实例对象; 实例化模块,用于对所述补丁包进行实例化。
11.如权利要求10所述的JAVA卡,其特征在于: 所述文件子类包括:重写的所述指定文件的问题函数。
12.如权利要求10或11所述的JAVA卡,其特征在于:还包括: 存储模块,用于将所述应用程序存放在第一转化小应用程序文件中,所述应用程序为继承所述小应用程序(Applet)的应用程序,声明为抽象属性;将所述指定文件的补丁包存放在第二转化应用程序文件中。
【文档编号】G06F9/44GK104331275SQ201410425823
【公开日】2015年2月4日 申请日期:2014年8月26日 优先权日:2014年8月26日
【发明者】陈志 , 熊艳萍 申请人:大唐微电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1