CN107743614A - 用于修改集成电路卡的独立于平台方法的执行的方法 - Google Patents
用于修改集成电路卡的独立于平台方法的执行的方法 Download PDFInfo
- Publication number
- CN107743614A CN107743614A CN201680033976.6A CN201680033976A CN107743614A CN 107743614 A CN107743614 A CN 107743614A CN 201680033976 A CN201680033976 A CN 201680033976A CN 107743614 A CN107743614 A CN 107743614A
- Authority
- CN
- China
- Prior art keywords
- platform
- independently
- virtual machine
- alternative functions
- sequence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/328—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for runtime instruction patching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44536—Selecting among different versions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种用于修改集成电路卡(ICC)内的应用(APP)的独立于平台的第一方法(F0)的执行的方法(MTH),所述集成电路卡(ICC)包括第一非易失性存储器(MEM1)、第二可重写非易失性存储器(MEM2)、虚拟机(VM)和处理器单元(PR),其中所述独立于平台的第一方法(F0)包括第一操作序列(F0b)和第二操作序列(F0c),并且其中所述方法(MTH)包括:‑借助于所述虚拟机(VM)检查在所述独立于平台的第一方法(F0)内是否存在对特定的第二方法(F1)的调用,所述特定的第二方法(F1)包括一个参数(TG1);‑如果存在这样的调用,并且如果所述特定的第二方法(F1)不是独立于平台的,则借助于所述处理器单元(PR)根据所述参数(TG1)检查是否存在与被存储在所述集成电路卡(ICC)的存储器(MEM1,MEM2)中的所述独立于平台的第一方法(F0)相关联的替代函数(F2);‑如果存在关联的替代函数(F2):‑借助于所述处理器单元(PR)或借助于所述虚拟机(VM)执行所述替代函数(F2),所述替代函数(F2)替换所述第一操作序列(F0b);‑在完成所述替代函数(F2)时,借助于所述虚拟机(VM)执行所述独立于平台的第一方法(F0)的第二操作序列(F0c);‑否则借助于所述虚拟机(VM)执行所述独立于平台的第一方法(F0)的第一操作序列(F0b)和第二操作序列(F0c)。
Description
技术领域
本发明涉及一种用于修改集成电路卡内的应用的独立于平台的第一方法的执行的方法,所述集成电路卡包括第一非易失性存储器、第二可重写非易失性存储器、虚拟机和处理器单元。
本发明还涉及一种关联的集成电路卡。
这种方法可以用于支付应用的非限制性示例中。
背景技术
应用开发人员在应用的整个生命周期中面临着越来越多的挑战,他们必须使他们的应用易于定制,并且在性能方面足够高效,以满足快速变化的市场需求。
与应用相关的源代码包括与要执行的应用的多个操作序列相对应的至少一个独立于平台的第一方法。独立于平台的第一方法是以独立于平台的代码的语言编写的,所述独立于平台的代码编译后由所述集成电路卡的虚拟机来解释和执行。独立于平台的代码与集成电路卡的处理器单元独立,使得它可以在由任何提供商发行的任何集成电路卡上以相同的方式执行。
当所述应用已经被加载到集成电路卡中时,为了定制应用或者改善应用的一些关键部分的运行时间,本领域技术人员熟知的一种解决方案是建议通过称为类扩展的机制来修改独立于平台的方法的执行,其要求将独立于平台的方法的代码拆分成小方法,并将它们下载到集成电路卡中以替换要定制或优化的(多个)操作序列。
这种现有技术的问题在于,所有小方法的多次启用(invocation)降低了应用性能。
发明内容
本发明的一个目的是提供一种借助于集成电路卡的虚拟机来修改独立于平台的第一方法的执行的方法,所述集成电路卡包括第一非易失性存储器、第二可重写非易失性存储器和处理器单元,其允许在保持所述独立于平台的第一方法的互操作性并且不降低应用性能的同时,定制和/或优化所述独立于平台的方法。
为此,提供了一种用于修改集成电路卡内的应用的独立于平台的第一方法的执行的方法,所述集成电路卡包括第一非易失性存储器、第二可重写非易失性存储器、虚拟机和处理器单元,其中所述独立于平台的第一方法包括第一操作序列和第二操作序列,并且其中所述方法包括:
-借助于所述虚拟机检查在所述独立于平台的第一方法内是否存在对特定的第二方法的调用,存储在所述集成电路卡的存储器中的所述特定的第二方法包括一个参数;
-如果存在这样的调用,则所述处理器单元或所述虚拟机执行所述特定的第二方法;
-所述处理器单元或所述虚拟机检查是否存在与所述独立于平台的第一方法相关联的替代函数,所述替代函数被存储在所述集成电路卡的存储器中;所述处理器单元或所述虚拟机使用所述参数在所述集成电路卡存储器内定位该替代函数;
-如果存在关联的替代函数:
-借助于所述处理器单元或借助于所述虚拟机执行所述替代函数,所述替代函数替换所述第一操作序列;
-在完成所述替代函数时,跳过所述第一操作序列并借助于所述虚拟机执行所述独立于平台的第一方法的第二操作序列。
如我们将进一步详细地看到的,如果执行独立于平台的第一方法的集成电路卡配备有用于所述第一独立于平台的方法的第一操作序列的替代函数(由所述参数标识),则对所述函数的调用(经由特定的第二方法)将跳转到该替代函数的实现,并且在返回该替代实现时,跳过第一操作序列的原始实现。
如果集成电路卡不支持这种替代函数,或者如果没有与该参数相关联的替代函数,则对第二方法的调用将不起任何作用,使得第一操作序列的原始实现将被正常执行。
根据本发明的非限制性实施例,依照本发明的优化方法还包括以下特征。
在非限制性实施例中,如果所述特定的第二方法是独立于平台的,则不执行对替代函数的检查。
在非限制性实施例中,所述独立于平台的第一方法包括至少一个参量,并且所述方法还包括:
-如果存在关联的替代函数,则借助于所述虚拟机恢复所述独立于平台的第一方法的所述至少一个参量用以所述替代函数使用和修改。
在非限制性实施例中,所述独立于平台的第一方法包括至少一个局部变量,并且所述方法还包括:
-如果存在关联的替代函数,则借助于所述虚拟机恢复所述与独立于平台的第一方法的所述至少一个局部变量用以所述替代函数使用和修改。
在非限制性实施例中,所述替代函数是独立于平台的函数或本地函数。
在非限制性实施例中,所述特定的第二方法是独立于平台的方法或本地方法或者是所述虚拟机的特定指令的集合。
在非限制性实施例中,所述特定的第二方法被包括在第一包中,所述独立于平台的第一方法被包括在第二包中,并且所述替代函数被包括在第三包中,所有三个包都不同于彼此。
在非限制性实施例中,所述替代函数被存储在所述第一非易失性存储器或所述第二可重写非易失性存储器中。
在非限制性实施例中,所述特定的第二方法返回布尔(Boolean)类型,并且:
-在完成所述替代函数时,所述特定的第二方法返回假(false)值;
-当不存在与对应于所述参数的所述独立于平台的第一方法相关联的替代函数时,所述特定的第二方法返回真值;
-当所述特定的第二方法是独立于平台的时,所述特定的第二方法返回真值。
在非限制性实施例中,所述第二非易失性存储器包括至少一个表,所述至少一个表包括所述替代函数的关联的引用,其指示与所述独立于平台的第一方法相关联的所述替代函数被存储在所述集成电路卡内的存储器中的何处。
在非限制性实施例中,所述虚拟机是JavaTM虚拟机。
在非限制性实施例中,所述集成电路卡是安全元件。
在非限制性实施例中,所述第二可重写非易失性存储器不同于所述第一非易失性存储器。
在非限制性实施例中,所述方法还包括将所述替代函数下载到所述集成电路卡的存储器中,所述下载包括:
-第一信息,其用来标识独立于平台的第一方法被定义的所述应用;
-第二信息,其用来将参数关联到对应于替代函数的引用;
-第三信息,其包括作为所述第一操作序列的替换操作序列的所述替代函数的实现。
此外,提供了一种包括虚拟机、处理器单元、第一非易失性存储器和第二可重写非易失性存储器的集成电路卡,其中所述集成电路卡适于修改所述集成电路卡内的应用的独立于平台的第一方法的执行,所述独立于平台的第一方法包括第一操作序列和第二操作序列,并且其中:
-所述虚拟机适于检查在所述第一独立于平台的方法内是否存在对特定的第二方法的调用,所述特定的第二方法包括一个参数;
-如果存在这样的调用,则所述处理器单元或所述虚拟机适于根据所述参数检查是否存在与存储在所述集成电路卡的存储器中的所述独立于平台的第一方法相关联的替代函数;
-如果存在关联的替代函数:
-所述处理器单元或所述虚拟机适于执行所述替代函数,所述替代函数替换所述第一操作序列;
-在完成所述替代函数时,所述虚拟机还适于执行所述第一独立于平台方法的第二操作序列;
-否则,所述虚拟机还适于执行所述第一独立于平台方法的第一操作序列和第二操作序列。
在非限制性实施例中,所述处理器单元适于当所述特定的第二方法是独立于平台时不执行对是否存在替代函数的检查。
在非限制性实施例中,所述集成电路卡包括:
-包括所述第二特定的方法的第一包;
-包括所述第一独立于平台的方法的第二包;以及
-包括所述替代函数的第三包,所述第一包、第二包和第三包彼此不同。
另外,提供了一种包括指令的集合的计算机程序产品,当该指令集合被加载到集成电路卡中时,使得集成电路卡实行根据前述特性中的任何一个的方法。
附图说明
现在仅以示例的方式并参照附图来描述依据本发明的实施例的方法和/或装置的一些实施例,其中:
-图1示意性地示出了实行本发明的方法并且支持替代函数的集成电路卡的第一非限制性实施例;
-图2示意性地示出了实行本发明的方法并且不支持替代函数的集成电路卡的第二非限制性实施例;
-图3是根据本发明的非限制性实施例的方法的示意性组织图。
具体实施方式
在下面的描述中,本领域技术人员熟知的功能或结构没有详细描述,因为它们会在不必要的细节上模糊本发明。
本发明涉及一种用于通过集成电路卡ICC的虚拟机VM修改独立于平台的第一方法F0的执行的方法MTH。
正如我们将看到的,该方法提供了通过(多个)替代函数来定制或优化独立于平台的方法的部分的性能的能力,同时在任何平台上,这里是在包括虚拟机的任何集成电路卡ICC上,保持应用(部分或完全由所述独立于平台的方法实现)可互操作且可加载(甚至在发行后)。
在下面的描述中:
-应用APP是指一个或多个程序的集合,被设计来实行操作序列的集合以执行特定的任务。应用APP包括至少一个小应用(applet);
-平台是指包括至少一个操作系统和虚拟机的集成电路卡ICC。
-小应用是指程序,其以源代码编写并以虚拟机指令的形式递送给用户。在所述集成电路卡ICC的使用期内,在所述集成电路卡ICC被制造后,可以将小应用加载到该集成电路卡ICC中。小应用包括至少一个独立于平台的方法。
-源代码是指编程代码,其为独立于平台的代码。源代码是可互操作的,因为它可以在诸如支持虚拟机VM的集成电路卡ICC的任何类型的设备上运行而不用修改。它是以便携式语言编写的,由虚拟机运行。一旦被编译,源代码生成虚拟机指令;
-虚拟机指令是指通过虚拟机而不是特定处理器单元(诸如集成电路卡ICC的处理器单元)运行的编程代码。这样的编程代码是独立于平台的代码。所述虚拟机指令是从源代码的编译发行的。虚拟机指令在需要使用集成电路卡ICC的平台资源时启用(invoke)本地函数;
-本地函数是指在编译时生成本地代码的编程代码;
-本地代码(也称为机器语言)是指被配置为在特定处理器单元上运行的编程代码。如果本地代码在专门为之编写的处理器单元以外的处理器单元上使用,则本地代码通常不会运行。它是平台相关的代码。在集成电路卡ICC的示例中,本地代码被链接到所述集成电路卡的处理器单元;
-虚拟机VM是解码并执行虚拟机指令的解释器;
-本地方法是在源代码中声明为本地的并启用本地函数的方法。本地方法是依赖于平台的;
-操作(也称为功能)是指函数过程;
-指令是指由虚拟机或处理器单元执行的基本操作;
-在非限制性实施例中,包允许将独立于平台的方法分组在一起,所述独立于平台的方法都是相关的。在所举的例子中,方法都与支付交易有关。而且,包可以被存储在结构化的容器中(在JavaCardTM包的示例中称为cap文件),允许将该方法作为功能一致的组下载。
在非限制性的例子中:
-虚拟机是JavaTM虚拟机JVM,便携式语言是专用于集成电路卡ICC卡的JavaTM语言,其被称为JavaCardTM。
-源代码是以JavaCardTM编写的。虚拟机指令是字节码的形式。它们包括一个或多个字节。在集成电路卡ICC中,字节码被存储在称为cap文件的文件中。
-本地函数是以C语言编写的。
这些非限制性的示例将在下面的描述中被采用。
下面参照图1描述实行方法MTH的集成电路卡ICC。
在描述中,集成电路卡ICC也被称为ICC卡。
在非限制性实施例中,集成电路卡ICC是安全元件。
安全元件是包括安全芯片并且可以执行加密功能的安全组件,并且适于存储秘密信息。
在非限制性变型中,安全元件是智能卡、焊接元件等。在非限制性示例中,安全元件是银行卡,诸如EMV卡。
如图1所示,ICC卡包括:
-虚拟机VM;
-处理器单元PR。处理器单元PR包括一个或多个处理器。
-第一非易失性存储器MEM1;
-第二可重写非易失性存储器MEM2。
在非限制性实施例中,第一存储器MEM1不同于第二存储器MEM2。在非限制性示例中,第一非易失性存储器MEM1是ROM(“只读存储器”),并且第二可重写非易失性存储器MEM2是诸如EEPROM(“电可擦除可编程只读存储器”)、FLASH存储器等的存储器。
ICC卡包括以JavaCardTM编写的源代码SC。该源代码在非限制性示例中是指支付应用的应用APP。
在非限制性实施例中,对应于源代码SC的字节码被存储在第二存储器MEM2中。
要注意的是,在支付应用中,支付交易的性能需要最佳,因为根据支付标准,诸如例如,银行EMV(“Europay Mastercard Visa”)标准,支付交易被执行的时间量是有限的。
尤其是当在非接触式产品中使用集成电路卡时,应用的时间执行是一个重要的问题。
源代码SC包括一个或多个独立于平台的方法,其在非限制性示例中指的是以接触式或非接触式方式在ICC卡和支付终端之间建立支付交易所需的不同操作。
独立于平台的方法是以为独立于平台的代码的语言编写的,其在编译后由所述集成电路卡的虚拟机来解释和执行。独立于平台的代码与集成电路卡的处理器单元是独立的,使得它可以在任何提供者发行的任何集成电路卡上以相同的方式执行。
独立于平台的方法中的一些关键的方法,尤其是在支付应用的情况下的时间方面,必须进行优化。一些独立于平台的方法需要被更新,使得它们以新的方式运行。
这些方法被称为第一独立于平台的方法F0。
所述独立于平台的方法F0在由所述虚拟机VM执行时为字节码的形式。
在所给出的非限制性示例中以JavaCardTM编写的独立于平台的第一方法F0在第一类CLS0中被定义和实现。所述类是小应用。
要注意的是,在ICC卡的个性化阶段期间,或者在发行之后,所述小应用被下载到ICC卡中。
独立于平台的第一方法F0包括:
-要被优化和/或定制的第一操作序列F0b;
-在第一操作序列F0b之后要被执行的第二操作序列F0c。
要注意的是,操作序列包括一个或多个操作。
在非限制性实施例中,第二操作序列F0c至少包括从所述独立于平台的第一方法F0退出的返回操作。
在非限制性实施例中,独立于平台的第一方法F0包括要在第一操作序列F0b和第二操作序列F0c之前执行的第三操作序列F0a。
独立于平台的第一方法F0包括对特定的第二方法F1的调用(也称为调取),所述特定的第二方法F1包括一个参数TG1。
要注意的是,对不同的特定的第二方法的几个调用F1可以发生在相同的独立于平台的第一方法F0中。
在非限制性的给出的示例中,所述独立于平台的第一方法F0内的对所述特定的第二方法的调用F1被执行:
-在所述第一操作序列F0b和所述第二操作序列F0c之前;以及
-在所述第三操作序列F0a之后。
在非限制性实施例中,特定的第二方法F1在所述源代码SC中被声明为静态方法。静态声明允许第二方法F1对于启用所述第二方法F1的所有第一独立于平台的方法F0是可用的,而不需要具有对所述第二方法在每次启用时F1的实例的任何创建。因此改进了调用所述第二方法F1的独立于平台的第一方法F0的时间执行。不需要每个独立于平台的第一方法F0具有对所述第二方法F1的特定引用。
特定的第二方法F1包括至少一个作为特定参量的参数TG1。在非限制性示例中,参数TG1是短整数。它允许定位替代函数F2。
在非限制性实施例中,所述参数TG1是索引。在非限制性变型中,根据被标识为要被优化和/或定制的相同或不同的第一独立于平台的方法F0的不同第一操作序列F0b,所述索引适于连续递增。
它允许通过所述索引TG1访问表TAB(下文中描述)。所述索引在非限制性示例中从零开始增加。
在非限制性实施例中,第二存储器MEM2还包括至少一个表TAB,所述表TAB包括替代函数F2的至少一个关联的引用Ref1,其指示与所述独立于平台的第一方法F0相关联的所述替代函数F2被存储在所述集成电路卡ICC内的存储器中的何处。
要注意的是,该至少一个表TAB由开发(多个)替代函数F2的一方定义。所述表TAB与(多个)替代函数F2相同时间地被加载在第二存储器MEM2中。
所述一方通常将是IC卡发行者。
在非限制性实施例中,特定的第二方法F1返回布尔类型。它允许虚拟机VM决定操作序列的原始实现是要被跳过还是要被执行。
因此,如稍后将解释的,当特定的第二方法F1解析参数TG1并为原始操作序列F0b定位有效的替代实现(即替代函数F2)时,在返回到该替代实现时,它返回假值使得原始的操作序列F0b不被执行。执行替代实现F2,并且所述特定的第二方法F1的所有参量和局部变量对于所述替代实现F2是可用的。
相反,如果没有找到替代实现或者如果平台不支持替代函数F2,则特定的第二方法F1返回真值,并且原始操作序列F0b被正常执行。要注意的是,图2示出了包括不会解释特定的第二方法F1的参数TG1的虚拟机VM的ICC卡。所述ICC卡被称为通用平台。如下所述,根据目标平台的类型,特定的第二方法F1被不同地被实现,并且在非限制性实施例中不同地被定义(本地的、专有的字节码、或独立于平台的)。
在第一非限制性实施例中,所述特定的第二方法F1是独立于平台的方法。它以JavaCardTM编写并被存储在所述第二非易失性存储器MEM2中。
在第二非限制性实施例中,所述特定的第二方法F1是本地方法。它以C语言编写并被存储在所述第一非易失性存储器MEM1中。它允许访问虚拟机数据堆栈STK1和执行堆栈XSTK1,并修改新的框架(也称为执行堆栈框架)的创建。
在第三非限制性实施例中,特定的第二方法F1是所述虚拟机VM的特定指令的集合。这意味着它是专有字节码并被存储在所述第一非易失性存储器MEM1中。它允许用专有字节码替换本地方法的虚拟机指令,并且因此,例如,允许减少所使用的虚拟机指令的数量。定时性能可以因此被增强。
根据目标平台,特定的第二方法F1的不同实现可以如下提供。
对于在非限制性实施例中也被称为通用平台(在图2中示出)的平台,该平台没有意识到修改所述独立于平台的第一方法F0的执行的可能性,所述特定的第二方法F1被实现为具有参数TG1的独立于平台的方法并且总是返回真,而不管所述参数TG1的值。在这种情况下,可以定义参数TG1的任何值。为此,在非限制性实施例中,定义了第二类CLS1,其包括具有布尔返回类型的特定的第二方法F1、作为参量的参数TG1、以及“返回真”操作。
对于在非限制性实施例中意识到修改所述独立于平台的第一方法F0的执行的可能性的平台(在图1中示出),F1的后两个定义(本地或专有字节码)可以被使用。
为此,在非限制性实施例中,定义了第二类CLS1,其包括:
-表TAB的对象声明;
-具有布尔返回类型并且参数TG1作为参量的特定的第二方法F1。
要注意的是,第一类CLS0扩展了第二类CLS1,使得特定的第二方法F1是可见的,并且能够从CLS0中定义的所有方法来启用。
此外,要注意的是,第二类CLS1扩展了名为Applet类的类,该类是对于驻留在包括JVM的集成电路卡ICC上的所有小应用的基本超类。
要注意的是,该特定的第二方法F1是由开发优化方法的一方命名的。通常地,它将是ICC卡发行者。
在非限制性实施例中,集成电路卡ICC包括:
-包括所述特定的第二方法F1的第一包PK1;
-包括至少一个独立于平台的第一方法F0的第二包PK2;
-包括所述替代函数F2的第三包PK3。
第二包PK2包括与应用APP有关的源代码SC,所述源代码SC包括至少一个独立于平台的第一方法F0。在所描述的非限制性实现中,第二包PK2包括第一类CLS0。如上所述,在非限制性实施例中,第二包PK2被存储在所述第二存储器MEM2中。
要注意的是,当特定的第二方法F1是独立于平台的方法或本地方法时,存在第一包PK1。在这种情况下,在所描述的非限制性实现中,第一包PK1包括第二类CLS1。当特定的第二方法F1是专有字节码时,当然不存在第一包PK1。如上所述,在非限制性实施例中,第一包PK1被存储在所述第二存储器MEM2中或所述第一存储器MEM1中。
两个包PK1和PK2是不同的,使得第一包PK1可以安装在任何平台(不支持替代函数F2(图2)的一个平台,或支持它的一个平台(图1))上而没有任何修改。
在非限制性实施例中,所述第二包PK2被存储在所述第二存储器MEM2中或所述第一存储器MEM1中。
所述第三包PK3不同于第一包PK1和第二包PK2,使得第一包PK1对于所有不同平台是通用的,并且当需要更新(定制和/或优化)时可以创建和加载第三包PK3。
因此,所有的包PK1、PK2和PK彼此不同。
在第一非限制性变型中,替代函数F2的实现被写入独立于平台的第一方法F0的类CLS0中,使得它可以访问所述类的其他对象。要注意的是,在这种情况下,第二包PK2是在类的编译之后以字节码形式被创建的。对应于所述替代函数F2的字节码被提取并被放入第二包装PK2中。
在第二非限制性变型中,替代函数F2的实现被写在所述CLS0类的外部。
要注意的是,包括独立于平台的第一方法F0的第二包PK2由一方加载,该方将通常为将把ICC卡分派给终端用户的权威机构,诸如在非限制性实施例中的银行。因此,第二包PK2通常不与(多个)替代函数F2在相同的时刻被加载到第二存储器MEM2中。
在第一非限制性实施例中,所述替代函数F2是独立于平台的函数。在这种情况下,所述替代函数F2以JavaCardTM编写,并且包括被布置以便优化和/或定制应用APP的关联的独立于平台的第一方法F0的操作序列的操作。
在第二非限制性实施例中,所述替代函数F2是本地函数。在这种情况下,在非限制性的给出的示例中,所述本地函数F2以C语言编写,并且包括被布置以便优化和/或定制应用APP的关联的独立于平台的第一方法F0的操作序列的指令。
在非限制性实施例中,所述替代函数F2被存储在所述第一非易失性存储器MEM1或所述第二可重写非易失性存储器MEM2中。
所述替代函数F2的执行在为诸如ROM的不可重写存储器的第一非易失性存储器MEM1内比在第二可重写非易失性存储器MEM2内更快。要注意的是,使用为诸如ROM的不可重写存储器的第一非易失性存储器MEM1也比使用第二可重写非易失性存储器MEM2便宜。
如将要描述的,将经由所述特定的第二方法F1来调用替代函数F2,使得将执行所述函数F2而不是独立于平台的第一方法F0的虚拟机指令中的一些以及所述独立于平台的第一方法F0优化或修改的(多个)目标操作。在执行所述函数F2之后,执行第二操作序列F0c,然后存在从所述独立于平台的第一方法F0的通常的退出(归功于F0c的最后操作,即从调用返回操作)。
所述方法MTH在图3中以非限制性实施例示出。
在所示的非限制性示例中:
-独立于平台的第一方法F0具有至少一个参量Arg1并且包括至少一个局部变量Ve1。
-独立于平台的第一方法F0还包括第三操作序列F0a。
-在所述独立于平台的第一方法F0内的对所述特定的第二方法F1的调用在所述第三操作序列F0之后进一步被执行;
-如果特定的第二方法F1不是独立于平台的方法(意味着当它是本地的或专有字节码时),则执行对替代函数F2的检查。
要注意的是,所述独立于平台的第一方法F0可以返回数据或可以不返回数据。由于执行方法时照常执行数据的返回,所以在此不再赘述。
正如我们将看到的,该方法提供了一种简单而有效的方式来用替代的独立于平台的代码或本地代码替换(即修补)应用实现的部分,同时保持初始实现的互操作性,并且对应用的设计的影响非常有限。该方法可以用于解决定制和优化目标两者。
要注意的是,在包括独立于平台的第一方法F0的源代码SC已经被编译之后,在非限制性的给出的示例中,虚拟机指令被生成并且所得到的cap文件被加载到第二存储器MEM2中。然后,虚拟机VM如下执行所述独立于平台的第一方法F0的字节码。
要提醒的是,对特定的第二方法F1的调用在要被优化和/或定制的所述独立于平台的第一方法F0的任何操作之前,在独立于平台的第一方法F0中执行,使得专用的虚拟机VM将查找并运行相应的替代函数F2而不是所述操作。当然,虚拟机VM照常在所述独立于平台的第一方法F0中执行在特定的第二方法F1的调用之前所写入的操作序列F0a(所述执行未在图3中示出)、以及在特定的第二方法F1的调用之后所写入的操作序列F0c。
下面详细描述方法MTH的不同步骤。
在步骤1)中,虚拟机VM检查在所述独立于平台的第一方法F0内是否存在对特定的第二方法F1的调用,所述特定的第二方法F1包括一个参数TG1(步骤示出的CHK(VM,F1(TG1))。
在非限制性示例中,用特定的第二方法F1的名称执行检查。因此,特定的第二方法F1用它的名称来识别。
如果存在调用并且如果所述特定的第二方法F1是独立于平台的,则虚拟机VM执行特定的第二方法F1。如下所述,在所述特定的第二方法F1的执行期间,第一操作序列F0b被替代函数F2替换。
要注意的是,如果不存在对特定的第二方法F1的调用(图3中所示的第一分支N),则虚拟机VM运行所述独立于平台的第一方法F0的虚拟机指令,也就是说,在Java虚拟机的示例中,它执行(示出的EXEC(VM,F0(Arg1,Ve1))原始的JavaCardTM实现,其执行更慢或未被定制。
要注意的是,专用于考虑特定的第二方法F1的虚拟机VM,也就是说知道可能存在要运行的与独立于平台的第一方法F0相关联的替代函数F2而不是第一操作序列F0b的虚拟机指令,在下文描述的将在运行时间(在独立于平台的第一方法F0的执行期间)执行步骤1)。
如果虚拟机VM不知道可能存在要被运行的替代函数F2而不是独立于平台的第一方法F0的第一操作序列F0b的虚拟机指令,则它将运行第二方法F1,但是由于在这种情况下该特定的第二方法F1将返回真值,所以虚拟机VM将继续执行第一原始操作序列F0b的虚拟机指令。
在步骤2)中,如果存在这样的调用,并且如果所述特定的第二方法F1不是独立于平台的(图3中所示的第一分支N),则所述处理器单元PR根据所述参数TG1检查是否存在与存储在所述集成电路卡ICC的存储器MEM1、MEM2中的所述独立于平台的第一方法F0相关联的替代函数F2(步骤示出的CHK(F2))。
要提醒的是,当所述特定的第二方法F1是本地方法或专有字节码时,所述特定的第二方法F1不是独立于平台的(即,与独立于平台的方法不同,换言之,它不是可互操作的方法)。
替代函数F2提供了独立于平台的第一方法F0的一些操作的不同实现。
要提醒的是,独立于平台的第一方法F0的最终操作是从调用返回的操作。
参数TG1充当对与被优化和/或定制的独立于平台的第一方法F0的部分F0b相对应的替代函数F2的引用。
在非限制性实施例中,虚拟机VM或处理器单元PR使用上述表TAB在ICC卡中定位与独立于平台的第一方法F0相关联的替代函数F2。
参数TG1充当表索引。表TAB引用由所述索引排序的引用Ref1的表。
在非限制性实施例中,存在多达与被识别为要被优化和/或定制的相同或不同的第一独立于平台的方法F0的不同部分F0一样多的参数TG1值。
在非限制性实施例的非限制性变型中,参数TG1的一个或多个相同值每一个都与相同或不同的第一独立于平台的方法F0的多个第一操作序列F0b相关联。
要注意的是,在非限制性实施例的这种非限制性变型中,本步骤2将对与参数TG1的相同值相关联的相同或不同第一独立于平台的方法F0的所有第一操作序列F0b相同地评估。
这意味着两个不同的参数TG1可以指代相同的替代函数F2。
在第一非限制性示例中,相同的独立于平台的第一方法F0(或者至少两个不同的第一独立于平台方法F0)的两个不同的第一操作序列F0b可以具有两个不同的关联的参数TG1并且相同的替代函数F2与所述两个参数TG1相关联。在这种情况下,两个不同的第一操作序列F0b可以在不同的时间被更新。
在第二非限制性示例中,相同的独立于平台的第一方法F0(或至少两个第一独立于平台的方法F0)的两个不同的第一操作序列F0b可以具有相同的关联的参数TG1,并且相同的替代函数F2与所述参数TG1相关联。在这种情况下,可以同时更新两个不同的第一操作序列F0b。
表TAB包括与参数TG1存在的不同值一样多的引用Ref1,所述参数TG1与要被优化和/或定制的不同的第一独立于平台的方法F0的不同的部分F0b相关联。
因此,根据参数TG1的值,虚拟机VM或处理器单元PR找到所述替代函数F2的关联引用Ref1。所述引用Ref1是地址指针(当替代函数F2是本地的时)或者引用指针(当替代函数F2是独立于平台的时)。
如果引用Ref1有效(在非限制性示例中,不等于零),则检索与当前执行的独立于平台的第一方法F0相关联的正确的替代函数F2。
所述替代函数F2包括操作序列,该操作序列将替换所述独立于平台的第一方法F0的操作序列F0b(即,代替所述独立于平台的第一方法F0的操作序列F0b来执行),以定制操作序列F0b和/或优化操作序列F0b。
要注意的是,对于每个应用APP,都会有一个关联的表TAB,因为根据应用APP,将会有不同的第一独立于平台的方法F0,并且根据应用APP,不同的第一独立于平台的方法F0要被优化和/或定制。
因此,第二非易失性存储器MEM2包括一个或多个表TAB,每个表与对应于应用APP的一个源代码C相关联。
因此,参数TG1在不同的表TAB中可以具有相同的值,但是相同的值可以指的是不同的替代函数F2。
要注意的是,如果不存在与独立于平台的第一方法F0相关联的替代函数F2,则意味着不存在与参数TG1的值相对应的函数F2。这意味着与参数TG1的值相对应的表TAB中的引用Ref1为空(当参数TG1是如示出的示例中的索引时)。在另一非限制性示例中,这意味着不存在引用Ref1(当参数TG1不是索引时)。
在这种情况下,特定的第二方法F1返回真值。
在接收到所述真值时,虚拟机VM知道要执行原始操作序列F0b。
因此(图3中所示的第二分支N),虚拟机VM执行原始的JavaCardTM实现,也就是说,它执行:
-所述独立于平台的第一方法F0的操作序列F0b紧随对所述特定的第二独立于平台的方法F1的调用(示出的EXEC(VM,F0b));
-所述独立于平台的第一方法F0的操作序列F0c紧随对所述特定的第二独立于平台的方法F1的调用(示出的EXEC(VM,F0c))。
以相同的方式,当所述特定的第二方法F1不是本地的或专有的字节码时,即,为独立于平台的时,所述特定的第二方法F1返回真值。因此,虚拟机VM知道要执行原始操作序列F0b。因此(图3中所示的第一分支N),虚拟机VM执行原始的JavaCardTM实现。
在步骤3)中,如果存在关联的替代函数F2,则虚拟机VM恢复所述独立于平台的第一方法F0的所述至少一个参量Arg1用以所述替代函数F2使用和修改。(示出的RECOV(VM,Arg1,F0,F2))。
要注意的是,当独立于平台的第一方法F0没有参量Arg1时,所述步骤3)不被执行。由于该步骤是可选的,所以用虚线表示。
由于替代函数F2而不是独立于平台的第一方法F0的操作序列F0b(当特定的第二方法F1返回真值时通常被运行的F0b)的虚拟机指令将被运行,需要与独立于平台的第一方法F0的参量Arg1运行。因此,虚拟机VM使独立于平台的第一方法F0的所有参量Arg1对于替代函数F2是可用的。
在步骤4)中,如果存在相应的替代函数F2,则所述虚拟机VM恢复所述独立于平台的第一方法F0的所述至少一个局部变量Ve1,用以所述替代函数F2使用和修改(示出的RECOV(VM,Ve1,F0,F2))。
要注意的是,当独立于平台的第一方法F0没有局部变量Ve1时,所述步骤4)不被执行。由于该步骤是可选的,所以用虚线表示。
要注意的是,对于一些虚拟机,诸如JavaTM虚拟机JVM,虚拟机基于堆栈结构,这意味着对从数据堆栈读取的值执行指令,并将结果写入相同的数据堆栈。
数据堆栈STK1用于执行独立于平台的第一方法F0。
本领域技术人员另外认识到执行堆栈,也称为调用堆栈XSTK1,其表示该程序的执行:
执行堆栈XSTK1被划分为多个框架FR。
每次调用方法时,都会创建一个新的框架FR。因此,为独立于平台的第一方法F0创建第一框架FR0,并为第二方法F1创建第二框架。每次方法返回时,该方法启用的框架FR都被抑制。
执行堆栈框架存储关联的方法的数据:它的局部变量、启用它用的参量(参量也称为参数)、方法所使用的数据堆栈指针和方法正在执行的定位(地址指针/引用指针)。
要注意的是,新创建的框架的数据堆栈指针可以从先前的框架的数据堆栈指针的最后一个值初始化,或者可以以完全独立的方式初始化为JavaCardTM虚拟机的实现选择。
当替代函数F2为独立于平台的时,创建新的框架FR2。
当替代函数F2是本地的时,使用用于本地语言的另一堆栈STK2(在下面将被称为本地堆栈)。
因此,对于所述恢复,在非限制性示例中,虚拟机VM将从与正在运行的独立于平台的第一方法F0相关的框架FR0中恢复(多个)参量Arg1和(多个)局部变量Ve1,并将把它们压入与替代函数F2相关的框架FR2或堆栈STK2上。(多个)参量Arg1和(多个)局部变量Ve1将被使用并且可以被所述替代函数F2修改。
由于虚拟机VM管理所有不同的堆栈STK和框架FR,因此它确切地知道在何处找到(多个)参量Arg1和(多个)局部变量Ve1以及在何处压入(push)它们。
因此,不存在用于替代函数F2的专用参量表和专用局部变量表的创建,因为后者将与第一独立于平台的F0的(多个)参量执行。
在非限制性示例中,参量Arg1和局部变量Ve1的恢复经由虚拟机VM提供的、以C语言编写并由函数F2调用的恢复函数来执行。
在另一非限制性的示例中,参量Arg1和局部变量Ve1的恢复是以C语言编写的指令的集合,并被包括在函数F2本身中。
要注意的是,当替代函数F2是独立于平台的时,新的数据堆栈指针以与任何标准方法调用相同的方式被初始化。
要注意的是,这些步骤3和4可以并行执行,或者步骤3可以在步骤4之前或之后无差别地执行。
要注意的是,当发现当前的独立于平台的第一方法F0的关联的函数F2时,如果替代函数F2是本地的,则虚拟机VM通知处理器单元PR它必须执行哪个本地函数F2。
在步骤5)中,处理器单元PR或虚拟机VM执行所述替代函数F2(步骤示出的EXEC(F2(Arg1,Ve1)))。
要注意的是,当所述替代函数F2是本地函数时,处理器单元PR执行所述替代函数F2,并且用独立于平台的第一方法F0的(多个)参量Arg1和(多个)局部变量Ve1调用本地堆栈ST2。
虚拟机VM在所述替代函数F2为独立于平台的时执行所述替代函数F2,并且用独立于平台的第一方法F0的(多个)参量Arg1和(多个)局部变量Ve1来创建框架FR2。
如果(多个)参量Arg1和(多个)局部变量Ve1已经被替代函数F2修改,则在完成所述替代函数F2时(即返回时),虚拟机VM从当前框架FR2复制新值到与当前独立于平台的第一方法F0关联的框架FR0,并且框架FR1被再调用作为当前执行上下文。
此外,在完成所述替代函数F2时,所述特定的第二方法F1返回假值。所述假值被压入虚拟机堆栈STK1上,并且框架FR0被再调用作为当前执行上下文。
该假值被利用来指示虚拟机VM跳过原始操作序列F0b的执行。因此,虚拟机VM避免执行关于所述应用APP的市场变化不再是最新的操作序列和/或更慢和/或的操作序列。
在步骤6)中,在完成所述替代函数F2时,所述虚拟机VM执行所述独立于平台的第一方法F0的第二操作序列F0c(步骤示出的EXEC(VM,F0c))。
在执行函数F2之后,不存在从所述独立于平台的第一方法F0的直接退出,使得执行在特定的第二方法F1的调用之后写入的第二操作序列F0c的虚拟机指令。
第二操作序列F0c的最后操作(其是返回)导致虚拟机VM退出所述独立于平台的第一方法F0。
因此,包括对所述特定的第二函数F1的调用的开发的源代码SC保持可互操作并且将在任何集成电路卡ICC上正常运行,因为其包括根据所使用的平台的所述特定的第二函数F1的不同植入。然而,当加载在支持适于执行方法MTH并适于解释所述特定的第二方法F1的参数TG1的专用虚拟机VM(图1)的集成电路卡ICC上时,源代码SC的处理的关键部分将以优化和/或定制的方式被执行。
归功于所述的方法MTH(并且特别归功于第二方法F1的参量TG1),不需要在所述第一存储器MEM1中具有专有的第一包PK1,其包括特定的本地方法,所述方法被开发为优化和/或定制应用APP。要注意的是,与所述的方法MTH相反,当使用这样的本地方法时,应用APP不可互操作,因为在由不同的发行者递送的所有不同ICC卡中必须存在包括所述特定本地方法甚至包括整个应用的所述第一包PK1,这阻碍了定制的能力,并且因此阻碍了在包括所述ICC卡的产品被发行之后优化或定制应用APP的一些部分或全部。
在非限制性实施例中,方法MTH进一步包括将所述替代函数F2下载到所述集成电路卡ICC的存储器MEM1、MEM2中,所述下载包括:
-第一信息l1,其用来标识独立于平台的第一方法被定义的应用APP;
-第二信息l2,其用来将参量TG1关联到对应于替代函数F2的引用Ref1;
-第三信息l3,其包括作为所述第一操作序列F0b的替换操作序列的所述替代函数F2的实现(即代码)。
要注意的是,在非限制性实施例中,借助于终端(未示出)向ICC卡发送的APDU(“应用协议数据单元”,Application Protocol Data Unit)命令序列进行下载。
要注意的是,所述替代函数F2的下载是在下载了第一类CLS0之后进行的,也就是说,第三包PK3在第二包PK2之后被下载到集成电路卡ICC中。
下载可以在ICC卡的个性化阶段或发行后期间执行。
因此,如前所述,方法MTH由包括虚拟机VM和处理器单元PR、第一非易失性存储器MEM1和第二可重写非易失性存储器存储器MEM2的集成电路卡ICC(图1中所示)实行,其中所述集成电路卡ICC适于借助于所述虚拟机VM修改独立于平台的第一方法F0的执行,所述独立于平台的第一方法F0包括第一操作序列F0b和第二操作序列F0c。
所述虚拟机VM适于:
-检查在所述独立于平台的第一方法F0内是否存在对特定的第二方法F1的调用,所述特定的第二方法F1包括一个参数TG1;
-如果存在这样的调用,并且如果所述特定的第二方法F1不是独立于平台的,则根据所述参数TG1检查是否存在与存储在所述集成电路卡ICC的存储器MEM1、MEM2中的所述独立于平台的第一方法F0相关联的替代函数F2;
-如果存在相应的替代函数F2:
-执行所述替代函数F2,所述替代函数F2替换所述第一操作序列F0b;
-在完成所述替代函数F2时,执行所述独立于平台的第一方法F0的第二操作序列F0c;
-否则,执行所述独立于平台的第一方法F0的第一操作序列F0b和第二操作序列F0c。
所述处理器单元PR适于执行所述替代函数F2,所述替代函数F2替换所述第一操作序列F0b。
在非限制性实施例中,如果所述独立于平台的第一方法F0包括至少一个参量Arg1并且如果存在相关联的替代函数F2,则所述虚拟机VM还适于恢复所述独立于平台的第一方法F0的所述至少一个参量Arg1用以所述替代函数F2使用和修改。
在非限制性实施例中,如果所述独立于平台的第一方法F0包括至少一个局部变量Ve1并且如果存在关联的替代函数F2,则所述虚拟机VM还适于恢复所述独立于平台的第一方法F0的所述至少一个局部变量Ve1用以所述替代函数F2使用和修改。
在非限制性实施例中,当下载替代函数F2时,所述处理器单元PR还适于:
-根据第一信息l1标识独立于平台的第一方法F0被定义的应用App;
-根据第二信息l2用关联的应用Ref1更新关联表TAB;以及
-根据第三信息l3将替代函数F2存储在所述集成电路卡ICC的存储器MEM1、MEM2中。
应该理解的是,本发明不限于上述实施例,并且可以在不脱离本发明的范围的情况下进行变化和修改。在这方面,作出以下评论。
因此,应用APP可以是支付应用以外的任何其他应用。
在其他非限制性实施例中,智能卡是电子身份卡、健康卡、驾驶执照、护照、保密卡、金融服务卡、访问卡等。
因此,优化是关于在支付交易的非限制性示例中的时间执行。当然,在其他实施例中,优化可以关系到堆栈优化或其他种类的优化。
因此,可以使用基于寄存器架构而不是堆栈架构的虚拟机。
因此,可以使用诸如CLI虚拟机(Common Intermediate Language,通用中间语言)的其他虚拟机。
因此,在另一非限制性实施例中,如果所述特定的第二方法F1是独立于平台的,也就是说在非限制性示例中以便携式语言JavaCardTM编写,则可以执行替代函数F2的检查。在这种情况下,在所述特定的第二方法F1内,将存在对第三方法的调用,所述第三方法将是本地的或专有字节码,并且将包括与所述特定的第二方法F1的参数TG1相同的值的参量。支持(多个)替代函数F2的虚拟机VM将解释所述第三方法的参量,并如前所述检查关联的替代函数F2。
该实施例还意图为覆盖被编程为执行上述方法的所述步骤的计算机。
如图1中所示的一个或多个计算机程序产品PG能够被包含在ICC卡中。计算机程序产品PG包括指令的集合。因此,被包含在例如ICC卡存储器中的所述指令的集合可以使ICC卡(更具体地,这里是虚拟机VM)实行方法MTH的不同步骤。
因此,本发明的一些实施例可以包括一个或多个以下优点:
-易于实现;
-它允许在不影响应用的设计的情况下轻松定制应用(明显避免将它的实现分割为小方法,这会降低性能);
-在定制方面带来竞争优势,同时保持应用的互操作性;
-当替代函数F2以本地方式实现时,它允许在性能方面带来竞争优势(即,在不支持替代函数F2的其他平台上运行更慢),同时保持应用的互操作性;
-它允许在包括ICC卡的产品发行后测试应用的性能并验证需要优化的操作。因此,它允许在发行后修改应用;
-不需要在第一存储器MEM1中提前指定通用本地方法,这将是一个难以实现的任务,因为在发行产品之前不能够确定应用在性能方面的弱点,或应用将来的演进是什么;
-应用APP不会从ICC卡被修改到不同的发行者递送的另一ICC卡。根据知道在发行后修改(用于优化/定制)ICC卡的可能性的特定的ICC卡发行者,仅添加一个或多个替代函数F2(和相应的参数TG1);
-不需要在所有不同的平台上部署本地方法以使得应用能够在这些平台上运行,因为在第一独立于平台的方法中没有直接启用本地方法:不需要修改包括定义了F0的应用APP的第二包PK2。我们只需要根据目标平台(通用或专有)修改包括F1的第一包PK1;
-它替换了专有的OS修补机制(patching mechanism),其通常在方法级别工作,并且通常关注定制而不是性能。
Claims (15)
1.一种用于修改集成电路卡(ICC)内的应用(APP)的独立于平台的第一方法(F0)的执行的方法(MTH),所述集成电路卡(ICC)包括第一非易失性存储器(MEM1)、第二可重写非易失性存储器(MEM2)、虚拟机(VM)和处理器单元(PR),其中所述独立于平台的第一方法(F0)包括第一操作序列(F0b)和第二操作序列(F0c),并且其中所述方法(MTH)包括:
-借助于所述虚拟机(VM)检查在所述独立于平台的第一方法(F0)内是否存在对特定的第二方法(F1)的调用,存储在所述集成电路卡(ICC)的存储器(MEM1、MEM2)中的所述特定的第二方法(F1)包括一个参数(TG1);
-如果存在这样的调用,则所述处理器单元(PR)或所述虚拟机(VM)执行所述特定的第二方法(F1);
-所述处理器单元(PR)或所述虚拟机(VM)检查是否存在与所述独立于平台的第一方法(F0)相关联的替代函数(F2),所述替代函数(F2)被存储在所述集成电路卡(ICC)的存储器(MEM1、MEM2)中;所述处理器单元(PR)或所述虚拟机(VM)使用所述参数(TG1)在所述集成电路卡存储器内定位所述替代函数(F2);
-如果存在关联的替代函数(F2):
-借助于所述处理器单元(PR)或借助于所述虚拟机(VM)执行所述替代函数(F2),所述替代函数(F2)替换所述第一操作序列(F0b);
-在完成所述替代函数(F2)时,跳过所述第一操作序列(F0b)并借助于所述虚拟机(VM)执行所述独立于平台的第一方法(F0)的第二操作序列(F0c)。
2.根据权利要求1所述的方法(MTH),其中如果不存在对所述特定的第二方法(F1)的调用,则所述虚拟机(VM)执行所述独立于平台的第一方法(F0)的第一操作序列(F0b)和第二操作序列(F0c)。
3.根据权利要求1或2所述的方法(MTH),其中所述独立于平台的第一方法(F0)包括至少一个参量(Arg1),并且其中所述方法(MTH)还包括:
-如果存在关联的替代函数(F2),则借助于所述虚拟机(VM)恢复所述独立于平台的第一方法(F0)的所述至少一个参量(Arg1)用以所述替代函 数(F2)使用和修改。
4.根据前述权利要求1至3中任一项所述的方法(MTH),其中所述独立于平台的第一方法(F0)包括至少一个局部变量(Ve1),并且其中所述方法(MTH)还包括:
-如果存在关联的替代函数(F2),则借助于所述虚拟机(VM)恢复所述独立于平台的第一方法(F0)的所述至少一个局部变量(Ve1)用以所述替代函数(F2)使用和修改。
5.根据前述权利要求1至4中任一项所述的方法(MTH),其中所述替代函数(F2)是独立于平台的函数或本地函数。
6.根据前述权利要求1至5中任一项所述的方法(MTH),其中,所述特定的第二方法(F1)是独立于平台的方法或本地方法或者是所述虚拟机(VM)的特定指令的集合。
7.根据前述权利要求1至6中任一项所述的方法(MTH),其中,所述特定的第二方法(F1)被包括在第一包(PK1)中,所述独立于平台的第一方法(F0)被包括在第二包(PK2)中,并且所述替代函数(F2)被包括在第三包(PK3)中,所有三个包(PK1、PK2、PK3)彼此不同。
8.根据前述权利要求1至7中任一项所述的方法(MTH),其中所述特定的第二方法(F1)返回布尔类型,并且其中:
-在完成所述替代函数(F2)时,所述特定的第二方法(F1)返回假值;
-当不存在与和所述参数(TG1)相对应的所述独立于平台的第一方法(F0)相关联的替代函数(F2)时,所述特定的第二方法(F1)返回真值;
-当所述特定的第二方法(F1)是独立于平台的时,所述特定的第二方法(F1)返回真值。
9.根据前述权利要求1至8中任一项所述的方法(MTH),其中所述第二非易失性存储器(MEM2)包括至少一个表(TAB),所述至少一个表(TAB)包括指示与所述独立于平台的第一方法(F0)相关联的所述替代函数(F2)被存储在所述集成电路卡(ICC)内的存储器中的何处的所述替代函数(F2)的关联的引用(Ref1)。
10.根据前述权利要求1至9中任一项所述的方法(MTH),其中所述虚拟机(VM)是JavaTM虚拟机(JVM)。
11.根据前述权利要求1至10中任一项所述的方法(MTH),其中所述集 成电路卡(ICC)是安全元件。
12.根据前述权利要求1至11中任一项所述的方法(MTH),其中所述方法还包括将所述替代函数(F2)下载到所述集成电路卡(ICC)的存储器(MEM1、MEM2)中,所述下载包括:
-第一信息(l1),其用来标识独立于平台的第一方法(F0)被定义的所述应用(APP);
-第二信息(l2),其用来将参数(TG1)关联到对应于所述替代函数(F2)的引用(Ref1);
-第三信息(l3),其包括作为所述第一操作序列(F0b)的替换操作序列的所述替代函数(F2)的实现。
13.一种集成电路卡(ICC),其包括虚拟机(VM)、处理器单元(PR)、第一非易失性存储器(MEM1)、和第二可重写非易失性存储器(MEM2),其中所述集成电路卡(ICC)适用于修改所述集成电路卡(ICC)内的应用(APP)的独立于平台的第一方法(F0)的执行,所述独立于平台的第一方法(F0)包括第一操作序列(F0b)和第二操作序列(F0c),并且其中:
-所述虚拟机(VM)适于检查在所述独立于平台的第一方法(F0)内是否存在对特定的第二方法(F1)的调用,所述特定的第二方法(F1),存储在所述集成电路卡(ICC)的存储器(MEM1、MEM2)中,包括一个参数(TG1);
-如果存在这样的调用,则所述处理器单元(PR)或所述虚拟机(VM)执行所述特定的第二方法(F1);
-所述处理器单元(PR)或所述虚拟机(VM)检查是否存在与所述独立于平台的第一方法(F0)相关联的替代函数(F2),所述替代函数(F2)被存储在所述集成电路卡(ICC)的存储器(MEM1、MEM2)中;所述处理器单元(PR)或所述虚拟机(VM)使用所述参数(TG1)在所述集成电路卡存储器内定位所述替代函数(F2);
-如果存在关联的替代函数(F2):
-借助所述处理器单元(PR)或借助于所述虚拟机(VM)执行所述替代函数(F2),所述替代函数(F2)替换所述第一操作序列(F0b);
-在完成所述替代函数(F2)时,跳过所述第一操作序列(F0b)并借助于所述虚拟机(VM)执行所述独立于平台的第一方法(F0)的第二操作序列(F0c)。
14.根据权利要求13所述的集成电路卡(ICC),其中如果不存在对所述特定的第二方法(F1)的调用,则所述虚拟机(VM)执行所述独立于平台的第一方法(F0)的所述第一操作序列(F0b)和所述第二操作序列(F0c)。
15.根据权利要求13或权利要求14所述的集成电路卡(ICC),其中所述集成电路卡(ICC)包括:
-包括所述第二特定的方法(F1)的第一包(PK1);
-包括所述独立于平台的第一方法(F0)的第二包(PK2);以及
-包括所述替代函数(F2)的第三包(PK3),所述第一、第二和第三包(PK1、PK2、PK3)彼此不同。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP15305577.7A EP3082034A1 (en) | 2015-04-17 | 2015-04-17 | Method for modifying the execution of a platform-independent method of an integrated circuit card |
EP15305577.7 | 2015-04-17 | ||
PCT/EP2016/058480 WO2016166359A1 (en) | 2015-04-17 | 2016-04-18 | Method for modifying the execution of a platform-independent method of an integrated circuit card |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107743614A true CN107743614A (zh) | 2018-02-27 |
CN107743614B CN107743614B (zh) | 2020-10-16 |
Family
ID=53039364
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680033976.6A Active CN107743614B (zh) | 2015-04-17 | 2016-04-18 | 用于修改集成电路卡的独立于平台方法的执行的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10235139B2 (zh) |
EP (2) | EP3082034A1 (zh) |
CN (1) | CN107743614B (zh) |
AU (1) | AU2016250022B2 (zh) |
WO (1) | WO2016166359A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10936353B2 (en) * | 2017-05-16 | 2021-03-02 | Dell Products L.P. | Systems and methods for hypervisor-assisted hardware accelerator offloads in a virtualized information handling system environment |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6202208B1 (en) * | 1998-09-29 | 2001-03-13 | Nortel Networks Limited | Patching environment for modifying a Java virtual machine and method |
US20050228959A1 (en) * | 2004-04-08 | 2005-10-13 | St Incard S.R.L. | Method for patching ROM instructions in an electronic embedded system including at least a further memory portion |
US20070136719A1 (en) * | 2005-12-09 | 2007-06-14 | Bea Systems, Inc. | System and method for efficiently generating native code calls from byte code in virtual machines |
CN101042737A (zh) * | 2006-03-24 | 2007-09-26 | 中国银联股份有限公司 | 一种智能卡及向智能卡中创建应用、插入对象的方法 |
EP2400418A1 (fr) * | 2010-06-23 | 2011-12-28 | Trusted Logic | Contrôle des propriétés de performance et de sécurité d'un logiciel par transformation de code |
CN102682244A (zh) * | 2011-02-10 | 2012-09-19 | 索尼公司 | 信息处理设备、程序执行方法和计算机程序 |
CN102711101A (zh) * | 2012-04-28 | 2012-10-03 | 大唐微电子技术有限公司 | 一种实现智能卡发行的方法及系统 |
CN103617440A (zh) * | 2013-12-04 | 2014-03-05 | 武汉天喻信息产业股份有限公司 | 实现多方独立管控的多应用智能卡及其发行方法 |
CN103650058A (zh) * | 2010-12-30 | 2014-03-19 | 意法半导体国际有限公司 | 用于控制非易失性存储器的可靠性损失的方法和系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ATE534951T1 (de) * | 2000-05-25 | 2011-12-15 | Oracle America Inc | Verfahren und gerät zur erzeugung von effizienten nativen verfahren, die einen bytekodeinterpretierer erweitern |
JP4492083B2 (ja) * | 2003-10-06 | 2010-06-30 | 株式会社日立製作所 | Icカードを用いたサービスの認証方法およびシステム |
US7945960B2 (en) | 2005-12-06 | 2011-05-17 | Oracle International Corporation | Dynamic conditional security policy extensions |
US8807440B1 (en) * | 2010-12-17 | 2014-08-19 | Google Inc. | Routing secure element payment requests to an alternate application |
US8893298B2 (en) * | 2011-02-11 | 2014-11-18 | Mocana Corporation | Network linker for secure execution of unsecured apps on a device |
US9043480B2 (en) * | 2011-10-11 | 2015-05-26 | Citrix Systems, Inc. | Policy-based application management |
JP6256116B2 (ja) * | 2014-03-10 | 2018-01-10 | 富士通株式会社 | 通信端末、セキュアログイン方法、及びプログラム |
-
2015
- 2015-04-17 EP EP15305577.7A patent/EP3082034A1/en not_active Withdrawn
-
2016
- 2016-04-18 WO PCT/EP2016/058480 patent/WO2016166359A1/en active Application Filing
- 2016-04-18 EP EP16719330.9A patent/EP3283949B1/en active Active
- 2016-04-18 CN CN201680033976.6A patent/CN107743614B/zh active Active
- 2016-04-18 US US15/567,238 patent/US10235139B2/en active Active
- 2016-04-18 AU AU2016250022A patent/AU2016250022B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6202208B1 (en) * | 1998-09-29 | 2001-03-13 | Nortel Networks Limited | Patching environment for modifying a Java virtual machine and method |
US20050228959A1 (en) * | 2004-04-08 | 2005-10-13 | St Incard S.R.L. | Method for patching ROM instructions in an electronic embedded system including at least a further memory portion |
US20070136719A1 (en) * | 2005-12-09 | 2007-06-14 | Bea Systems, Inc. | System and method for efficiently generating native code calls from byte code in virtual machines |
CN101042737A (zh) * | 2006-03-24 | 2007-09-26 | 中国银联股份有限公司 | 一种智能卡及向智能卡中创建应用、插入对象的方法 |
EP2400418A1 (fr) * | 2010-06-23 | 2011-12-28 | Trusted Logic | Contrôle des propriétés de performance et de sécurité d'un logiciel par transformation de code |
CN103650058A (zh) * | 2010-12-30 | 2014-03-19 | 意法半导体国际有限公司 | 用于控制非易失性存储器的可靠性损失的方法和系统 |
CN102682244A (zh) * | 2011-02-10 | 2012-09-19 | 索尼公司 | 信息处理设备、程序执行方法和计算机程序 |
CN102711101A (zh) * | 2012-04-28 | 2012-10-03 | 大唐微电子技术有限公司 | 一种实现智能卡发行的方法及系统 |
CN103617440A (zh) * | 2013-12-04 | 2014-03-05 | 武汉天喻信息产业股份有限公司 | 实现多方独立管控的多应用智能卡及其发行方法 |
Also Published As
Publication number | Publication date |
---|---|
US20180107475A1 (en) | 2018-04-19 |
AU2016250022A1 (en) | 2017-11-02 |
EP3082034A1 (en) | 2016-10-19 |
EP3283949B1 (en) | 2022-11-09 |
WO2016166359A1 (en) | 2016-10-20 |
CN107743614B (zh) | 2020-10-16 |
US10235139B2 (en) | 2019-03-19 |
EP3283949A1 (en) | 2018-02-21 |
AU2016250022B2 (en) | 2019-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chen | Java card technology for smart cards: architecture and programmer's guide | |
AU771699B2 (en) | Token-based linking | |
US7506175B2 (en) | File language verification | |
KR20000052759A (ko) | 마이크로컨트롤러를 이용한 고급 프로그래밍 언어 사용 | |
US20110239307A1 (en) | Method for securing java bytecode | |
Faraj et al. | Investigation of Java Smart Card Technology for Multi-Task Applications | |
Baentsch et al. | JavaCard-from hype to reality | |
US9129137B2 (en) | Method, computer program and device for providing security for intermediate programming code for its execution by a virtual machine | |
CN108846264A (zh) | 代码加固方法、装置、智能终端和计算机可读存储介质 | |
US7702872B2 (en) | Java smart card chip having memory area reserved for global variables | |
CN107743614A (zh) | 用于修改集成电路卡的独立于平台方法的执行的方法 | |
US20030216902A1 (en) | Chip development system with built-in function library | |
Akram et al. | An Introduction to Java Card Programming | |
EP3021221A1 (en) | Method for optimizing the execution of a platform-independent method by means of a virtual machine of an integrated circuit card | |
US10789075B2 (en) | Method and apparatus for security certified smart card OS diversification system | |
Noubissi et al. | Incremental dynamic update for java-based smart cards | |
조유섭 et al. | A fast Java Card Installer with the Resolution Using RAM | |
Paavilainen | Java based smart cards | |
Jamgade | Java Program Running Smart Card | |
Edsbäcker | SIM cards for cellular networks: An introduction to SIM card application development | |
EP3884374A1 (en) | A method for generating an executable file from a parent executable file to produce a derived customer item | |
Markantonakis | Java card technology and security | |
TOMA | SAMPLE DEVELOPMENT ON JAVA SMART-CARD ELECTRONIC WALLET |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |