CN101976211B - 一种在cap文件中替换函数的方法、装置及系统 - Google Patents

一种在cap文件中替换函数的方法、装置及系统 Download PDF

Info

Publication number
CN101976211B
CN101976211B CN201010292309.4A CN201010292309A CN101976211B CN 101976211 B CN101976211 B CN 101976211B CN 201010292309 A CN201010292309 A CN 201010292309A CN 101976211 B CN101976211 B CN 101976211B
Authority
CN
China
Prior art keywords
function
apdu
apdu order
memory location
cap file
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.)
Expired - Fee Related
Application number
CN201010292309.4A
Other languages
English (en)
Other versions
CN101976211A (zh
Inventor
周伟楠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Watchdata Co ltd
Original Assignee
Beijing WatchData System Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing WatchData System Co Ltd filed Critical Beijing WatchData System Co Ltd
Priority to CN201010292309.4A priority Critical patent/CN101976211B/zh
Publication of CN101976211A publication Critical patent/CN101976211A/zh
Application granted granted Critical
Publication of CN101976211B publication Critical patent/CN101976211B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种在CAP文件中替换函数的方法、装置及系统,以对JavaCard设备CAP文件的函数进行替换。该方法为:接收第一APDU命令,在本地CAP文件中确定需更改的第一函数,以及该函数归属的类,并确定该类中定义的用于放置新函数的存储位置,根据第一APDU命令生成用于替换第一函数的第二函数,将第二函数存入所述存储位置,并接收第二APDU命令,根据该命令从所述存储位置读取第二函数,对CAP文件中的第一函数进行替换。这样,将第二函数保存为方法数组,再替换第一函数,不需预留存储空间即可替换CAP文件中的函数,提高了效率,节约了成本。本发明同时公开了一种在CAP文件中替换函数的装置及系统。

Description

一种在CAP文件中替换函数的方法、装置及系统
技术领域
本发明涉及智能卡领域,尤其涉及Java Card应用中一种在CAP文件中替换函数的方法、装置及系统。
背景技术
智能卡的存储器体系主要是由读写存储器(RAM)、只读存储器(ROM)以及可擦写编程存储器(EEPROM)组成,智能卡所有的程序内容都保存在非易失性的存储器中。Java Card是可以运行Java程序代码的智能卡。
考虑智能卡的存储空间有限,不能直接存储Java源代码或class类文件,在将Java Card类导入一个Java Card设备之前,需要通过转换装置将类文件转换为标准的转化小应用程序(Converted Applet,CAP)文件,该CAP文件包含了Java程序包中的所有类文件。在Java编程语言中,方法是实现功能的最小单位,为了叙述方便,这里统一将方法称为函数。对于Java源代码中的每个函数,转换为CAP文件后,都是由方法头和多个操作码组成,其中,每个操作码用一个字节表示,能够实现特定的功能。
现有技术中,在将CAP文件导入Java Card设备后,对于存储在ROM中的CAP文件,如果CAP文件中的某个Java函数出现错误,或者是需要修改某个函数以实现新的功能时,不能直接改写CAP文件的操作码,可能需要更换新的Java Card设备。同样,对于存储在EEPROM中的CAP文件,理论上可以改写操作码,但是实际应用中,由于CAP文件在下载到Java Card设备上时,每个函数占用的存储空间已经确定,可能使得存放新函数操作码的存储空间不足,再者,在下载CAP文件时,可能已经经过链接并包含用户数据,CAP文件内容各组件之间的关系已经确定,如果直接改写该CAP文件中的函数,可能会引起错误。
综上所述,需要寻求一种替换已下载到Java Card设备上的函数的方法,以克服不能改写Java Card设备存储的CAP文件中的函数,或者改写时容易出现错误的缺陷。
发明内容
本发明提供一种在CAP文件中替换函数的方法、装置及系统,用以在不影响CAP文件其它功能以及用户数据的情况下,对存储在Java Card设备上的CAP文件中的函数进行替换。
本发明实施例提供的具体技术方案如下:
一种在CAP文件中替换函数的方法,包括:
接收卡片接受设备发送的第一应用程序协议数据单元(APDU)命令;
在本地预存的CAP文件中确定需更改的第一函数,并确定该第一函数归属的类;
确定所述类中定义的用于放置新生成函数的存储位置,并根据所述第一APDU命令生成相应的用于替换第一函数的第二函数,以及将第二函数存入所述存储位置;
接收卡片接受设备发送的第二APDU命令,根据该第二APDU命令,从所述存储位置读取第二函数,对所述CAP文件中的第一函数进行替换。
一种在CAP文件中替换函数的装置,包括:
第一处理单元,用于接收卡片接受设备发送的第一应用程序协议数据单元(APDU)命令;
第二处理单元,用于在本地预存的CAP文件中确定需更改的第一函数,并确定该第一函数归属的类;
第三处理单元,用于确定所述类中定义的用于放置新生成函数的存储位置,并根据所述第一APDU命令生成相应的用于替换第一函数的第二函数,以及将第二函数存入所述存储位置;
第四处理单元,用于接收卡片接受设备发送的第二APDU命令,根据该第二APDU命令,从所述存储位置读取第二函数,对所述CAP文件中的第一函数进行替换。
一种在CAP文件中替换函数的系统,包括:
卡片接受设备,用于向Java Card设备发送第一APDU命令以及第二APDU命令;
Java Card设备,用于接收卡片接受设备发送的第一应用程序协议数据单元(APDU)命令,在本地预存的CAP文件中确定需更改的第一函数,确定该第一函数归属的类,以及确定所述类中定义的用于放置新生成函数的存储位置,根据所述第一APDU命令生成相应的用于替换第一函数的第二函数,以及将第二函数存入所述存储位置,并接收卡片接受设备发送的第二APDU命令,根据该第二APDU命令,从所述存储位置读取第二函数,对所述CAP文件中的第一函数进行替换。
基于上述技术方案,本发明实施例中,通过在源程序中添加方法数组生成函数,将新函数(第二函数)对应的数据文件保存到方法数组中,再采用该方法数组替换CAP文件中存在的第一函数,对第二函数的保存是通过创建方法数组来实现的,不需要预留存储空间,只需在源程序中对预期会改变的函数添加方法数组生成函数,即可根据APDU命令替换CAP文件中的函数,达到修正错误或实现新功能的目的,同时,对CAP文件中的其他功能和数据不会造成影响,可以方便快捷地对CAP文件中的函数进行替换,提高了效率,节约了成本。
附图说明
图1为本发明实施例中在CAP文件中替换函数的系统架构图;
图2为本发明实施例中在CAP文件中替换函数的装置结构图;
图3为本发明实施例中在CAP文件中替换函数的详细流程图。
具体实施方式
为了克服Java Card存储方式导致的无法修改CAP文件中的函数这一技术缺陷,本发明实施例提供了一种在CAP文件中替换函数的方法,能够在不影响Java Card已有的功能和数据的情况下,对Java Card上存储的CAP文件中的函数进行替换,提高效率,节约成本。该方法为:接收卡片接受设备发送的第一应用程序协议数据单元(APDU)命令,在本地预存的CAP文件中确定需更改的第一函数,并确定该第一函数归属的类,确定上述类中定义的用于放置新生成函数的存储位置,并根据上述第一APDU命令生成相应的用于替换第一函数的第二函数,以及将第二函数存入上述存储位置,并接收卡片接受设备发送的第二APDU命令,根据该第二APDU命令,从上述存储位置读取第二函数,对上述CAP文件中的第一函数进行替换。
下面结合附图对本发明优选的实施方式进行详细说明。
参阅附图1所示,本发明实施例中,在CAP文件中替换函数的系统主要包括卡片接受设备10和Java Card设备11,其中,
卡片接受设备10,用于向Java Card设备11发送第一APDU命令以及第二APDU命令;
Java Card设备11,用于接收卡片接受设备10发送的第一应用程序协议数据单元(APDU)命令,在本地预存的CAP文件中确定需更改的第一函数,并确定该第一函数归属的类,确定该类中定义的用于放置新生成函数的存储位置,并根据上述第一APDU命令生成相应的用于替换第一函数的第二函数,以及将第二函数存入上述存储位置,并接收卡片接受设备发送的第二APDU命令,根据该第二APDU命令,从上述存储位置读取第二函数,对上述CAP文件中的第一函数进行替换。
参阅附图2所示,本发明实施例中,Java Card设备11主要包括以下处理单元:
第一处理单元111,用于接收卡片接受设备发送的第一应用程序协议数据单元(APDU)命令;
第二处理单元112,用于在本地预存的CAP文件中确定需更改的第一函数,并确定该第一函数归属的类;
第三处理单元113,用于确定所述类中定义的用于放置新生成函数的存储位置,并根据所述第一APDU命令生成相应的用于替换第一函数的第二函数,以及将第二函数存入所述存储位置;
第四处理单元114,用于接收卡片接受设备发送的第二APDU命令,根据该第二APDU命令,从所述存储位置读取第二函数,对所述CAP文件中的第一函数进行替换。
为了实现上述技术方案,本发明实施例中,首先需要在操作系统中新增本地应用程序编程接口,该本地应用程序编程接口用于实现新函数调用。
本地应用程序编程接口(native Application Program Interface,native API)是指采用非Java语言实现的本地函数,native API能够代替部分Java源代码,以达到提高效率或实现特殊功能的目的。这些nativeAPI可以通过CAP文件中自定义的特殊标记来区分,并在运行调用相应的native API。
例如,CAP文件方法头中的第一个字节是0X20,表示该方法头对应的函数属于native API。
在Java Card操作系统中新增的native API能够被所有的Java源程序调用。
本发明实施例中,新增的native API的参数至少包括一个byte数据类型的数组的引用。在Java Card操作系统中新增的native API的参考格式如下所示,public static void callMethod(byte[]bArray,short offset),该native API(函数callMethod)实现的功能为从输入参数byte数据类型数组bArray中,由short数据类型的参数offset所确定的偏移位置开始,进行Java函数的调用。
其次,需要在源程序中定义方法数组生成函数,该方法数组生成函数用于生成方法数组。
该方法数组用于保存第二函数转换为CAP文件后对应的方法头和操作码,该第二函数用于替换Java Card设备上存储的CAP文件中的第一函数。
在需要下载到Java Card设备的Java源程序中,增加方法数组生成函数,该方法数组生成函数的功能为根据输入数据生成方法数组,将该方法数组作为上述新增native API的输入,执行native API调用。
本发明实施例中,方法数组生成函数的参数至少包括:一个目的byte数据类型数组的引用,一个源byte数据类型数组的应用,源byte数据类型数组内数据的起始地址,以及从源byte数据类型数组的起始地址开始的数据长度。
在Java源程序中增加方法数组生成函数的参考格式如下所示,public voidsaveMethod(byte[]destArray,byte[]srcArray,short offset,short length),该方法数组生成函数实现的功能为将输入参数的源数组srcArray中,以offset字节的偏移量所确定的位置作为起始位置,截取length字节长度的数据,生成新的byte数据类型的方法数组。也就是,将源数组中指定的数据起始地址开始的指定长度的数据复制到上述方法数组中,并使得destArray指向该方法数组的存储位置。
在Java Card应用中,应用程序协议数据单元(Application Protocol DataUnit,APDU)命令用于卡片接受设备10和Java Card设备11之间进行通信。Java Card接收任何卡片接受设备10发送的APDU命令,并传送到相应的应用程序中,应用程序处理APDU命令并返回响应APDU,APDU遵守ISO/IEC7816-3和7816-4。APDU命令包括命令头(Header)和命令体(Body),其中,命令头由五个字节组成,第1个字节(CLA字节)用于识别指令的一个特定应用程序类,第2个字节(INS字节)用于指示CLA字节中标示的某个指令类中的一个特定指令,该特定指令用于完成特定的功能,第5个字节用于存放APDU命令体的总长度,第3、4字节可以由用户根据需要自行定义,本发明实施例中,第3、4字节可用于表示命令体中存放数据文件的位置和长度,APDU命令体部分用于存放数据文件(如,某函数对应数据文件)。
本发明实施例中,需要找到Java Card设备上的CAP文件在被下载到JavaCard设备之前,保存在Java Card设备之外(如,计算机上)的Java源文件,在该Java源文件中,直接删除原来的第一函数,并且在原来第一函数的位置加入第二函数,再将重新编辑后的Java源文件转换为新的CAP文件,从该新的CAP文件中截取出第二函数对应的数据文件,并将该第二函数对应的数据文件发送给卡片接受设备10,以将第二函数的数据文件保存在APDU命令体中,上述第二函数的数据文件包括方法头和操作码。在APDU命令头中存放用于指示命令体中包含的第二函数数据文件的存放位置以及长度的指示信息,在SaveMethod函数中,将APDU命令作为源数组传入函数中,并从APDU命令头中提取用于指示第二函数的数据文件在命令体中的存放位置信息以及长度信息的指示信息,以获得saveMethod输入参数中的offset和length。
例如,APDU命令为0x00 0x30 0x00 0x00 0x06 0x01 0x00 0x05 0x81 0x000x01,其中0x00 0x30 0x00 0x00 0x06前5个字节的内容为命令头,0x01 0x000x05 0x81 0x00 0x01为命令体,根据命令头中前两个字节可知该APDU命令需要对Java Card设备上的第一函数进行更新,对第一函数进行更新的第二函数对应的方法头和操作码保存在命令体中,根据命令头中后3个字节,可以确定第二函数对应的方法头和操作码为0x01 0x00 0x05 0x81 0x00 0x01。
基于上述原理,参阅附图3所示,本发明实施例中,实现在CAP文件中替换函数的详细流程如下:
步骤301:接收卡片接受设备10发送的第一应用程序协议数据单元(APDU)命令。
其中,第一APDU命令用于调用方法数组生成函数,同时,该第一APDU命令中包含新函数的数据文件,以及用于指示该数据文件位置信息和长度信息的指示信息。上述数据文件由方法头和操作码组成。
步骤302:在本地预存的CAP文件中确定需更改的第一函数,并确定该第一函数归属的类。
步骤303:确定上述类中定义的用于放置新生成函数的存储位置,并根据上述第一APDU命令生成相应的用于替换第一函数的第二函数,以及将第二函数存入上述存储位置。
根据上述第一APDU命令生成相应的用于替换第一函数的第二函数,具体为:根据第一APDU命令中特定的指令,调用方法数组生成函数;根据第一APDU命令中预定义的指令,从该第一APDU命令中获取上述第二函数对应的数据文件,以及该第二函数对应的数据文件的长度信息;在上述方法数组生成函数中,根据上述第二函数对应的数据文件的长度创建方法数组;将上述第二函数对应的数据文件保存至上述方法数组。
其中,第一APDU命令中特定的指令是指该第一APDU命令的命令头中INS字节所指示的特定指令,该特定指令用于完成特定的功能,在源程序执行过程中,通过第一APDU命令的命令头中的特定指令(如,0X30)的指示,来执行方法数组生成函数,以将第二函数保存为方法数组。
其中,第一APDU命令中预定义的指令是指在该第一APDU命令的命令头中(第3、4字节)预定义的用于指示第一APDU命令中包含的数据文件的位置信息和长度信息的指令。
本发明实施例中,在第一函数归属的类中定义引用类型的实例域,该引用类型的实例域用于指示方法数组的存储位置,即用于指示第二函数的存储位置,在方法数组生成函数生成与第二函数对应的方法数组后,将第二函数对应的方法数组的引用保存至上述引用类型的实例域。
例如,在需要更改的第一函数所属的类中,定义byte数据类型的数组的引用destArray,在savaMethod函数中,将生成的方法数组的引用保存至byte数据类型的数组的引用destArray中,通过destArray输出第二函数对应方法数组。
步骤304:接收卡片接受设备10发送的第二APDU命令,根据该第二APDU命令,从上述存储位置读取第二函数,对上述CAP文件中的第一函数进行替换。
具体为:根据第二APDU命令中特定的指令,判断上述存储位置保存的数据是否为空,若是,执行第一函数;否则,通过本地应用程序编程接口(nativeAPI)调用第二函数对第一函数进行替换。上述native API即为在操作系统中定义的callMethod函数。其中,通过native API调用第二函数对应的方法数组,并执行所述方法数组,对第一函数进行替换。
其中,根据第二APDU命令中特定的指令,判断上述存储位置保存的数据为空,表示在上述存储位置中没有保存第二函数对应的方法数组,即没有调用方法数组生成函数,也就是并不需要对本地CAP文件中的第一函数进行替换,直接根据第二APDU命令执行第一函数即可。而根据第二APDU命令中特定的指令,判断上述存储位置保存的数据非空,表示已存在第二函数相对应的方法数组,该方法数组保存有第二函数的数据文件,执行native API调用该第二函数对应的方法数组,通过执行native API来实现执行第二函数,从而取代第一函数,达到对第一函数进行替换的目的。
下面以两个具体的程序为例,对本发明实施例中在CAP文件中替换函数的方法进行进一步的说明。
例1,未采用本发明实施例对Java Card设备上的函数进行替换时的情况:
private byte a;
public void process(APDU apdu)
{
    byte buffer[]=apdu.getBuffer();
    short bytesRead=apdu.setIncomingAndReceive();
    if(buffer[ISO7816.OFFSET_INS]==0x20)
    {
        method1();
    }
}
public void method 1()
{
byte a=(byte)1;
}
例1为Java Card中在process中调用method1函数,在method1中有一个byte类型的实例域a,如果APDU命令中携带的预定义的指令为0x20,执行函数method1,将a的值置为1。如果例1所示的程序已经下载到Java Card设备上,在后续的测试过程中出现问题或者需要对函数功能进行修改,如将method1修改为,
public void method1()
{
    byte a=(byte)2;
}
如果例1是掩膜在ROM中则无法对method1进行修改。
例2,采用本发明实施例对Java Card设备上的函数进行替换的实现程序如下:
private byte a;
public byte[]method1_patch;
public void process(APDU apdu)
{
   byte buffer[]=apdu.getBuffer();
   short bytesRead=apdu.setIncomingAndReceive();
   if(buffer[ISO7816.OFFSET_INS]==0x20)
   {
           if(method1_patch==null)
           {
                 method1();
            }
                else
                {
                      nativeAPI.callMethod(method1_patch,(short)0);
                 }
         }
         else if(buffer[ISO7816.OFFSET_INS]==0x30)
         {
          saveMethod(method1_patch,buffer,buffer[ISO7816.OFFSET_CDATA],
    buffer[ISO7816.OFFSET_LC]);
         }
    }
    public void saveMethod(byte[]destArray,byte[]srcArray,short offset,short
length)
    {
        destArray=new byte[length];
        Util.arrayCopy(srcArray,offset,length,destArray,(short)0);
    }
例2的process中加入了本发明实施例中对Java Card设备上的函数进行替换的方法,在process中增加了方法数组的引用method1_patch,方法数组用于保存第二函数对应的方法头和操作码。根据APDU命令头中预定义的指令执行相应的操作,如果APDU命令头中预定义的指令为0x20,则需要执行具有特定功能的函数,这时,需要判断是否存在第二函数用以替换Java Card上具有特定功能的第一函数,这里通过判断引用method1_patch是否为空值,来判断是否存在对第一函数进行替换的第二函数,如果是空值,表示不存在第二函数对应的方法数组,也就是不需要对第一函数进行替换,直接执行第一函数即可,否则,引用method1_patch不是空值,表示存在method1_patch引用的方法数组,就是存在用以更新第一函数的第二函数,这时需要通过定义的native API执行第二函数对应的方法数组,实现将第一函数更新为第二函数。如果APDU命令头中预定义的指令为0x30,则需要对Java Card上保存的第一函数进行更新,这时调用savaMethod函数,将APDU命令体中包含的第二函数的方法头和操作码保存为方法数组,并将该方法数组保存至引用method1_patch,在process再次判断APDU命令体中预定义的指令为0x20需要执行特定的功能函数时,通过nativeAPI执行第二函数对应的方法数组。
基于上述实施例,对存储在Java Card设备ROM或EEPROM上的CAP文件中的函数进行替换时,在源程序中添加方法数组生成函数,生成的方法数组用以保存第二函数对应的方法头和操作码,第二函数是用以替换Java Card设备上已经存在的第一函数的,在操作系统中定义native API,用以执行方法数组。这样,对第二函数的保存是通过创建数组来实现的,不需要预留空间,只要在源程序中对预期可能会改变的函数添加新函数的方法数组生成函数,以及与生成的方法数组相对应的引用,即可根据APDU中预定义的指令在CAP文件中进行函数替换,以达到修正错误或者实现新功能的目的,同时,对程序的其他功能和用户数据不会造成影响,并且通过方便快捷地对在Java Card设备上存储的CAP文件中的函数进行替换,提高了效率,节约了成本。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (13)

1.一种在CAP文件中替换函数的方法,其特征在于,包括:
接收卡片接受设备发送的第一应用程序协议数据单元APDU命令;
在本地预存的转化小应用程序CAP文件中确定需更改的第一函数,并确定该第一函数归属的类;
确定所述类中定义的用于放置新生成函数的存储位置,并根据所述第一APDU命令生成相应的用于替换第一函数的第二函数,以及将第二函数存入所述存储位置;
接收卡片接受设备发送的第二APDU命令,根据该第二APDU命令,从所述存储位置读取第二函数,对所述CAP文件中的第一函数进行替换。
2.如权利要求1所述的方法,其特征在于,根据所述第一APDU命令生成相应的用于替换第一函数的第二函数,包括:
根据所述第一APDU命令中特定的指令,调用方法数组生成函数;
根据所述第一APDU命令中预定义的指令,从所述第一APDU命令中获取所述第二函数对应的数据文件,以及所述第二函数对应的数据文件的长度信息;
在所述方法数组生成函数中,根据所述第二函数对应的数据文件的长度创建方法数组;
将所述第二函数对应的数据文件保存至所述方法数组。
3.如权利要求2所述的方法,其特征在于,所述第二函数对应的数据文件由方法头和操作码组成。
4.如权利要求2所述的方法,其特征在于,所述第一APDU命令中预定义的指令为用于指示第一APDU命令中包含的数据文件的位置信息和长度信息。
5.如权利要求1所述的方法,其特征在于,根据第二APDU命令,从所述存储位置读取第二函数,对所述CAP文件中的第一函数进行替换,包括:
根据第二APDU命令中特定的指令,判断所述存储位置保存的数据是否为空,若是,执行第一函数;否则,通过本地应用程序编程接口native API调用第二函数对第一函数进行替换。
6.如权利要求5所述的方法,其特征在于,通过native API调用第二函数对第一函数进行替换,包括:
通过native API调用第二函数对应的方法数组,并执行所述方法数组,对第一函数进行替换。
7.如权利要求5所述的方法,其特征在于,所述native API为在操作系统中定义的函数,能够被所有的Java源程序调用。
8.一种在CAP文件中替换函数的装置,其特征在于,包括:
第一处理单元,用于接收卡片接受设备发送的第一应用程序协议数据单元APDU命令;
第二处理单元,用于在本地预存的转化小应用程序CAP文件中确定需更改的第一函数,并确定该第一函数归属的类;
第三处理单元,用于确定所述类中定义的用于放置新生成函数的存储位置,并根据所述第一APDU命令生成相应的用于替换第一函数的第二函数,以及将第二函数存入所述存储位置;
第四处理单元,用于接收卡片接受设备发送的第二APDU命令,根据该第二APDU命令,从所述存储位置读取第二函数,对所述CAP文件中的第一函数进行替换。
9.如权利要求8所述的装置,其特征在于,所述第三处理单元根据所述第一APDU命令生成相应的用于替换第一函数的第二函数,具体为:
第三处理单元根据所述第一APDU命令中特定的指令,调用方法数组生成函数;
第三处理单元根据所述第一APDU命令中预定义的指令,从所述第一APDU命令中获取所述第二函数对应的数据文件,以及所述第二函数对应的数据文件的长度信息;
第三处理单元在所述方法数组生成函数中,根据所述第二函数对应的数据文件的长度创建方法数组;
第三处理单元将所述第二函数对应的数据文件保存至所述方法数组。
10.如权利要求9所述的装置,其特征在于,所述第三处理单元从所述第一APDU命令中获取的所述第二函数对应的数据文件由方法头和操作码组成。
11.如权利要求8所述的装置,其特征在于,所述第四处理单元根据第二APDU命令,从所述存储位置读取第二函数,对所述CAP文件中的第一函数进行替换,具体为:
根据第二APDU命令中特定的指令,判断所述存储位置保存的数据是否为空,若是,执行第一函数;否则,通过本地应用程序编程接口native API调用第二函数对第一函数进行替换。
12.如权利要求11所述的装置,其特征在于,所述第四处理单元通过nativeAPI调用第二函数对第一函数进行替换时,通过native API调用第二函数对应的方法数组,并执行所述方法数组,对第一函数进行替换。
13.一种在CAP文件中替换函数的系统,其特征在于,包括:
卡片接受设备,用于向Java Card设备发送第一APDU命令以及第二APDU命令;
Java Card设备,用于接收卡片接受设备发送的第一应用程序协议数据单元APDU命令,在本地预存的转化小应用程序CAP文件中确定需更改的第一函数,确定该第一函数归属的类,以及确定所述类中定义的用于放置新生成函数的存储位置,根据所述第一APDU命令生成相应的用于替换第一函数的第二函数,以及将第二函数存入所述存储位置,并接收卡片接受设备发送的第二APDU命令,根据该第二APDU命令,从所述存储位置读取第二函数,对所述CAP文件中的第一函数进行替换。
CN201010292309.4A 2010-09-26 2010-09-26 一种在cap文件中替换函数的方法、装置及系统 Expired - Fee Related CN101976211B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010292309.4A CN101976211B (zh) 2010-09-26 2010-09-26 一种在cap文件中替换函数的方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010292309.4A CN101976211B (zh) 2010-09-26 2010-09-26 一种在cap文件中替换函数的方法、装置及系统

Publications (2)

Publication Number Publication Date
CN101976211A CN101976211A (zh) 2011-02-16
CN101976211B true CN101976211B (zh) 2013-03-13

Family

ID=43576098

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010292309.4A Expired - Fee Related CN101976211B (zh) 2010-09-26 2010-09-26 一种在cap文件中替换函数的方法、装置及系统

Country Status (1)

Country Link
CN (1) CN101976211B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102184374A (zh) * 2011-03-24 2011-09-14 北京握奇数据系统有限公司 一种基于Java智能卡下载文件的方法及装置
CN102662807A (zh) * 2012-03-13 2012-09-12 浙江大学 一种Java卡栈性能测试应用程序及其框架的制作方法
CN104331275B (zh) * 2014-08-26 2018-10-12 大唐微电子技术有限公司 一种Java卡及其应用打补丁的方法
CN109840395A (zh) * 2017-11-24 2019-06-04 航天信息股份有限公司 一种基于Java卡下载应用程序的方法和系统
CN110737603B (zh) * 2018-07-18 2023-08-01 炬力(珠海)微电子有限公司 一种替换rom中函数的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1346465A (zh) * 1999-02-02 2002-04-24 太阳微电子公司 基于标记的链接
US6880084B1 (en) * 2000-09-27 2005-04-12 International Business Machines Corporation Methods, systems and computer program products for smart card product management
CN101840332A (zh) * 2010-03-09 2010-09-22 北京握奇数据系统有限公司 一种java智能卡的数据处理方法、装置及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2864650B1 (fr) * 2003-12-24 2006-03-24 Trusted Logic Procede de mise a jour d'applications pour carte a puce

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1346465A (zh) * 1999-02-02 2002-04-24 太阳微电子公司 基于标记的链接
US6880084B1 (en) * 2000-09-27 2005-04-12 International Business Machines Corporation Methods, systems and computer program products for smart card product management
CN101840332A (zh) * 2010-03-09 2010-09-22 北京握奇数据系统有限公司 一种java智能卡的数据处理方法、装置及系统

Also Published As

Publication number Publication date
CN101976211A (zh) 2011-02-16

Similar Documents

Publication Publication Date Title
CN101976211B (zh) 一种在cap文件中替换函数的方法、装置及系统
EP1355268A2 (en) Memory card
CN102087715B (zh) 信息处理设备、信息处理方法和程序
JPH02214994A (ja) Icカード
KR20140108666A (ko) 스마트 카드의 비휘발성 메모리에 데이터 쓰기
US8645624B2 (en) Portable electronic device, smartcard and control method for portable electronic device
CN108897291A (zh) 一种智能家电的控制方法、移动端以及控制系统
CN112286829B (zh) 测试脚本生成方法及装置
CN109542495A (zh) 一种软件升级方法及装置
CN102073544B (zh) 一种基于页操作的EEPROM cache方法
CN101663664B (zh) 具有用于传递html数据的增强的性能的个人令牌
CN113419710A (zh) 小程序的开发方法、装置、电子设备和介质
US8082395B2 (en) Portable electronic device
CN108804228A (zh) 一种dsp程序空间扩展的实现方法
CN102541639A (zh) 一种cpu 卡数据处理方法、系统及cpu 卡
CN102567771B (zh) 一种智能卡操作方法、智能卡、终端及系统
KR20180077249A (ko) 보안 요소 내의 패키지를 관리하는 방법
CN1781127B (zh) 便携式数据载体中的存储器管理方法
US20100235393A1 (en) Portable electronic device and access control method in portable electronic device
CN108037964A (zh) 一种设置分辨率的方法、存储介质及智能设备
KR101384536B1 (ko) 스마트 카드에서 호스트 단말의 api 호출 시스템 및 방법, 그 호스트 단말 및 스마트 카드, 이를 위한 기록매체
JP6769150B2 (ja) 電子情報記憶媒体、情報処理方法、及び情報処理プログラム
US20190188689A1 (en) Loading a java card memory with a java card package through a card personalization specification flow
JP3913128B2 (ja) メモリカード
US11886706B2 (en) Method for increasing the number of applications in a device having a limited memory

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100015 Beijing city Chaoyang District Dongzhimen West eight Street No. 2 room Wanhong Yan Dong Business Garden

Patentee after: BEIJING WATCHDATA Co.,Ltd.

Address before: 100015 Beijing city Chaoyang District Dongzhimen West eight Street No. 2 room Wanhong Yan Dong Business Garden

Patentee before: BEIJING WATCH DATA SYSTEM Co.,Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130313

Termination date: 20210926