CN109240711A - 一种java卡下载应用的方法及java卡 - Google Patents

一种java卡下载应用的方法及java卡 Download PDF

Info

Publication number
CN109240711A
CN109240711A CN201810883077.6A CN201810883077A CN109240711A CN 109240711 A CN109240711 A CN 109240711A CN 201810883077 A CN201810883077 A CN 201810883077A CN 109240711 A CN109240711 A CN 109240711A
Authority
CN
China
Prior art keywords
data
packet
data packet
application
module
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
Application number
CN201810883077.6A
Other languages
English (en)
Other versions
CN109240711B (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.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies 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 Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201810883077.6A priority Critical patent/CN109240711B/zh
Publication of CN109240711A publication Critical patent/CN109240711A/zh
Application granted granted Critical
Publication of CN109240711B publication Critical patent/CN109240711B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种JAVA卡下载应用的方法及JAVA卡,所述JAVA卡用于接收下载应用指令、从下载应用指令中获取数据包、根据数据包中的标签标识判断数据包的类型、当判断出数据包为第二应用数据包时,得到数据包第二应用数据、保存数据包第二应用数据、根据所有数据包第二应用数据得到第二应用数据、返回下载应用应答、当判断出数据包为第一应用数据包时,从得到数据包第一应用数据、保存数据包第一应用数据、根据所有数据包第一应用数据得到第一应用数据、当第五获取模块得到第一应用数据后判断第二应用数据是否下载完成、当第二判断模块判断为是后将第二应用数据和第一应用数据建立对应关系。所述JAVA卡既能下载JAVA应用,又能下载C应用,优化了JAVA卡的性能。

Description

一种JAVA卡下载应用的方法及JAVA卡
技术领域
本发明涉及智能卡技术领域,特别涉及一种JAVA卡下载应用的方法及JAVA卡。
背景技术
JAVA卡是一种可以运行JAVA程序的CPU智能卡,卡内有一个能执行JAVA字节码(Applet,应用程序)的JAVA虚拟机--它提供一整套标准的JAVA卡编程的API(ApplicationProgram Interface,应用接口程序),使得开发人员无需了解复杂的智能卡硬件和智能卡专用的技术,就可以进行智能卡应用的开发,从而大大减少开发时间和降低开发难度。
现有技术中,JAVA卡中仅能下载JAVA字节码,不能下载C代码实现的应用,从而局限了JAVA卡的性能。
发明内容
本发明提供了一种JAVA卡下载应用的方法及JAVA卡,解决了上述技术问题。
本发明提供了一种JAVA卡下载应用的方法,包括:
步骤s1:所述JAVA卡接收来自终端的下载应用指令,从所述下载应用指令中获取数据包,根据所述数据包中的标签标识判断数据包的类型,若数据包为第二应用数据包,则执行步骤s2;若数据包为第一应用数据包,则执行步骤s3;
步骤s2:所述JAVA卡从所述第二应用数据包中得到数据包第二应用数据,保存数据包第二应用数据;根据所有已保存的数据包第二应用数据得到第二应用数据,向所述终端返回下载应用应答,返回步骤s1;
步骤s3:所述JAVA卡从所述第一应用数据包中得到数据包第一应用数据,保存数据包第一应用数据,根据所有已保存的数据包第一应用数据得到第一应用数据;执行步骤s4;
步骤s4:所述JAVA卡判断第二应用数据是否已下载完成,如果是,则将所述第一应用数据和所述第二应用数据建立对应关系;向所述终端返回下载应用应答;否则,向所述终端返回下载应用应答。
本发明还提供了一种JAVA卡,包括:第一接收模块、第一获取模块、第一判断模块、第二获取模块、第一保存模块、第三获取模块、第一发送模块、第四获取模块、第二保存模块、第五获取模块、第二判断模块和第一关联模块;
所述第一接收模块,用于接收来自终端的下载应用指令;
所述第一获取模块,用于从所述第一接收模块接收到的所述下载应用指令中获取数据包;
所述第一判断模块,用于根据所述第一获取模块获取到的所述数据包中的标签标识判断数据包的类型;
所述第二获取模块,用于当所述第一判断模块判断出所述数据包为第二应用数据包时,从所述第二应用数据包中得到数据包第二应用数据;
所述第一保存模块,用于保存所述第二获取模块获取到的数据包第二应用数据;
所述第三获取模块,用于根据所述第一保存模块保存的所有数据包第二应用数据得到第二应用数据;
所述第四获取模块,用于当所述第一判断模块判断出所述数据包为第一应用数据包时,从所述第一应用数据包中得到数据包第一应用数据;
所述第二保存模块,用于保存所述第四获取模块获取到的数据包第一应用数据;
所述第五获取模块,用于根据所述第二保存模块保存的所有数据包第一应用数据得到第一应用数据;
所述第二判断模块,用于当所述第五获取模块得到第一应用数据后,判断第二应用数据是否下载完成;
所述第一关联模块,用于当所述第二判断模块判断为是后,将所述第三获取模块获取到的所述第二应用数据和所述第五获取模块获取到的所述第一应用数据建立对应关系;
所述第一发送模块,用于向所述终端返回下载应用应答。
本发明的有益效果:本发明提供了一种JAVA卡下载应用的方法及JAVA卡,本发明中的JAVA卡既能下载JAVA应用,又能下载C代码实现的C应用,优化了JAVA卡的性能。
附图说明
图1-1、图1-2和图1-3为本发明实施例2提供的一种JAVA卡下载应用的方法的流程图;
图2为本发明实施例3提供的一种JAVA卡的结构框图。
具体实施方法
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明所有实施例中,第一应用数据为JAVA代码实现的应用;第二应用数据为C代码实现的应用。
实施例1
本实施例提供了一种JAVA卡下载应用的方法,包括:
步骤s1:JAVA卡接收来自终端的下载应用指令,从下载应用指令中获取数据包,根据数据包中的标签标识判断数据包的类型,若数据包为第二应用数据包,则执行步骤s2;若数据包为第一应用数据包,则执行步骤s3;
步骤s2:JAVA卡从第二应用数据包中得到数据包第二应用数据,保存数据包第二应用数据;根据所有已保存的数据包第二应用数据得到第二应用数据,向终端返回下载应用应答,返回步骤s1;
步骤s3:JAVA卡从第一应用数据包中得到数据包第一应用数据,保存数据包第一应用数据,根据所有已保存的数据包第一应用数据得到第一应用数据;执行步骤s4;
步骤s4:JAVA卡判断第二应用数据是否已下载完成,如果是,则将第一应用数据和第二应用数据建立对应关系;向终端返回下载应用应答;否则,向终端返回下载应用应答。
本实施例中,根据数据包中的标签标识判断数据包的类型,具体为:
JAVA卡从数据包中获取第二标签标识,判断第二标签标识是否为第五预设值,如果是,则判断数据包为第二应用数据包,执行步骤s2;否则,判断数据包为第一应用数据包,执行步骤s3。
进一步地,从第二应用数据包中得到数据包第二应用数据具体为:JAVA卡获取与第二标签标识对应的有效值中的调试组件参数之后的全部数据,将获取到的数据作为数据包第二应用数据;
从第一应用数据包中得到数据包第一应用数据之前还包括:JAVA卡从数据包中获取第一标签标识;
从第一应用数据包中得到数据包第一应用数据,具体为:JAVA卡从第一应用数据包中获取与第一标签标识对应的有效值中的每一组子成员的成员有效值,根据获取到的所有成员有效值得到数据包第一应用数据,保存数据包第一应用数据。
本实施例中,JAVA卡将第一应用数据和第二应用数据建立对应关系,具体为:JAVA卡根据自身的关联标识将第一应用数据和第二应用数据建立对应关系。
进一步地,根据所有已保存的数据包第二应用数据得到第二应用数据之后,还包括:
JAVA卡生成关联标识;将第二应用数据与关联标识建立对应关系;
JAVA卡根据自身的关联标识将第一应用数据和第二应用数据建立对应关系,具体为:JAVA卡将第一应用数据与关联标识建立对应关系。
本实施例中,JAVA卡将第一应用数据和第二应用数据建立对应关系后,还可以包括:
步骤t1:JAVA卡接收来自终端的安装应用命令;
步骤t2:JAVA卡从安装应用命令中获取第一应用安装路径,保存第一应用安装路径,并根据第一应用安装路径将第一应用数据安装在JAVA卡中,向终端返回安装应用应答;
步骤t3:JAVA卡接收来自终端的交易指令;
步骤t4:JAVA卡根据自身保存的第一应用安装路径获取第一应用数据,根据第一应用数据和第二应用数据的对应关系获取与第一应用数据对应的第二应用数据,根据第二应用数据执行交易指令,得到交易应答,将交易应答返回给终端。
本实施例中,根据所有已保存的数据包第二应用数据得到第二应用数据之前,还包括:判断第二应用数据包是否为最后一包,如果是,则根据所有已保存的数据包第二应用数据得到第二应用数据,向终端返回下载应用应答,返回步骤s1;否则,向终端返回下载应用应答,返回步骤s1;
根据所有已保存的数据包第一应用数据得到第一应用数据之前,还包括:判断第一应用数据包是否为最后一包,如果是,则根据所有已保存的数据包第一应用数据得到第一应用数据,向终端返回下载应用应答,执行步骤s4;否则,向终端返回下载应用应答,返回步骤s1。
进一步地,根据数据包中的标签标识判断数据包的类型之前,还包括:JAVA卡根据自身的第一标识判断数据包是否为非首包第二应用数据包,如果是,则执行步骤s2;否则,根据数据包中的标签标识判断数据包的类型;
根据数据包中的标签标识判断数据包的类型,具体包括:
步骤a1:JAVA卡从数据包中获取第一标签标识,判断第一标签标识是否为第六预设值,如果是,则执行步骤a2;如果否,则判断数据包为非首包第一应用数据包,执行步骤s3;
步骤a2:JAVA卡从数据包中获取第二标签标识,判断第二标签标识是否为第五预设值,如果是,则判断数据包为首包第二应用数据包,执行步骤s2;否则,判断数据包为首包第一应用数据包,执行步骤s3。
进一步地,根据数据包中的标签标识判断数据包的类型替换为:从数据包中获取标签标识,根据下载应用指令头和标签标识判断数据包的类型;
从数据包中获取标签标识,根据下载应用指令头和标签标识判断数据包的类型,具体包括:
步骤b1:JAVA卡获取下载应用指令中的指令头中的第四字节上的数据,判断该数据是否为第八预设值,如果是,则判断出数据包为首包第一应用数据包,执行步骤b2;否则,判断出数据包为非首包第一应用数据包,执行步骤s3;
步骤b2:JAVA卡从数据包中获取第一标签标识,判断第一标签标识是否为第六预设值,如果是,则执行步骤b3;如果否,则报错;
步骤b3:JAVA卡从数据包中获取第二标签标识,判断第二标签标识是否为第五预设值,如果是,则判断数据包为首包第二应用数据包,执行步骤s2;否则,判断数据包为首包第一应用数据包,执行步骤s3。
本实施例中,若第一应用数据包为首包第一应用数据包,则从第一应用数据包中得到数据包第一应用数据,具体为:JAVA卡从第一应用数据包中获取与第一标签标识对应的有效值中的每一组子成员的成员有效值,根据获取到的所有成员有效值得到首包第一应用数据,保存首包第一应用数据;
若第一应用数据包为非首包第一应用数据包,则从第一应用数据包中得到数据包第一应用数据,具体为:JAVA卡从第一应用数据包中获取每一组子数据中的有效值,根据获取到的所有有效值得到非首包第一应用数据;
若第二应用数据包为首包第二应用数据包,则从第二应用数据包中得到数据包第二应用数据具体为:JAVA卡获取与第二标签标识对应的有效值中的调试组件参数之后的全部数据,将获取到的数据作为首包第二应用数据;
若第二应用数据包为非首包第二应用数据包,则从第二应用数据包中得到数据包第二应用数据具体为:JAVA卡将非首包第二应用数据包中的所有数据作为非首包第二应用数据。
本实施例中,JAVA卡根据自身的第一标识判断数据包是否为非首包第二应用数据包,具体为:
JAVA卡判断自身的第一标识是否为第一预设值,如果是,则判断数据包为非首包第二应用数据包;否则,判断数据包不为非首包第二应用数据包。
本实施例中,若第二应用数据包为首包第二应用数据包,则判断第二应用数据包是否为最后一包,具体包括:
步骤c1:JAVA卡根据下载应用指令获取第二应用数据总长度和首包第二应用数据长度;
步骤c2:JAVA卡判断首包第二应用数据长度和第二应用数据总长度的大小;若首包第二应用数据长度小于第二应用数据总长度,则判断出第二应用数据包不为最后一包,执行步骤c3;若首包第二应用数据长度等于第二应用数据总长度,则判断出第二应用数据包为最后一包;否则,向终端报错;
步骤c3:JAVA卡将自身的第一标识设置为第一预设值,根据首包第二应用数据长度设置自身的累计长度,向终端返回下载应用应答;返回步骤s1;
若第二应用数据包为非首包第二应用数据包,则判断第二应用数据包是否为最后一包,具体包括:
步骤d1:JAVA卡根据非首包第二应用数据包获取非首包第二应用数据长度,根据非首包第二应用数据长度与累计长度的和更新累计长度;
步骤d2:JAVA卡判断累计长度和第二应用数据总长度的大小;若累计长度小于第二应用数据总长度,则判断出第二应用数据包不为最后一包,向终端返回下载应用应答;返回步骤s1;若累计长度等于第二应用数据总长度,则判断出第二应用数据包为最后一包;否则,将累计长度、第二应用数据总长度和第一预设标识设置为第三预设值,向终端报错。
进一步地,JAVA卡根据下载应用指令获取第二应用数据总长度具体包括:
步骤f1:JAVA卡根据下载应用指令中的首包第二应用数据包获取调试组件总长度,根据下载应用指令中的首包第二应用数据包获取调试组件参数长度;
步骤f2:JAVA卡计算调试组件总长度与调试组件参数长度的差值,将差值作为第二应用数据总长度;
JAVA卡根据下载应用指令获取首包第二应用数据长度具体为:JAVA卡获取下载应用指令的数据域长度,根据下载应用指令中的首包第二应用数据包获取调试组件参数长度,将下载应用指令的数据域长度减去调试组件参数长度、再减去第一预设长度的值作为首包第二应用数据长度;
JAVA卡根据非首包第二应用数据包获取非首包第二应用数据长度,具体为:JAVA卡将非首包第二应用数据包中所有数据的长度之和作为非首包第二应用数据包长度。
进一步地,根据下载应用指令中的首包第二应用数据包获取调试组件总长度,具体为:
JAVA卡在下载应用指令中的首包第二应用数据包中获取与第二标签标识对应的长度值,将获取到的数据作为调试组件总长度;
根据下载应用指令中的首包第二应用数据包获取调试组件参数长度,具体为:
JAVA卡在下载应用指令中的首包第二应用数据包中获取与第二标签标识对应的有效值,在与第二标签标识对应的有效值中获取调试组件参数长度。
本实施例中,判断第一应用数据包是否为最后一包,具体为:
JAVA卡获取下载应用指令的指令头中的第三字节上的数据,判断该数据是否为第四预设值,如果是,则判断出第一应用数据包为最后一包;否则,判断出第一应用数据包不为最后一包。
本实施例中,当JAVA卡判断第二应用数据包为最后一包后,还包括:JAVA卡将第一标识设置为第二预设值;
判断第二应用数据是否已下载完成,具体为:JAVA卡判断第一标识是否为第二预设值,如果是,则判断出第二应用已下载完成;否则,判断出第二应用数据没有下载完成。
本实施例中,步骤s1之前还包括:
步骤s01:JAVA卡接收来自终端的更新初始化指令,从更新初始化指令中获取终端随机数,使用自身的第一密钥对包括终端随机数和自身生成的卡随机数的第一拼接数据进行签名得到第一签名数据;组织包括第一签名数据和卡随机数的更新初始化应答,向终端返回更新初始化应答;
步骤s02:JAVA卡接收来自终端的外部认证命令,从外部认证命令中获取外部认证命令头、第三签名值和第一校验值;使用第一密钥对包括终端随机数和自身的卡随机数的第五拼接数据进行签名得到第四签名数据,使用自身的第二密钥对包括外部认证命令头、第四签名数据和第二填充数据的第六拼接数据进行签名得到第二校验值;判断第一校验值和第二校验值是否匹配,如果是,则向终端返回外部认证成功应答;否则向终端返回外部认证失败应答。
进一步地,步骤s02之后,步骤s1之前还包括:JAVA卡接收来自终端的下载初始化指令,进行下载初始化操作,向终端返回初始化应答。
本实施例中提供了一种JAVA卡下载应用的方法,本实施例提供的JAVA卡既能下载JAVA应用,又能下载C代码编写的C应用,优化了JAVA卡的性能,并且下载完C应用和JAVA应用之后,将JAVA应用和C应用建立关联,使得JAVA卡的部分或者全部功能可以用C代码在JAVA虚拟机中实现,可以进一步提高JAVA卡的执行速度。
实施例2
本实施例提供了一种JAVA卡下载应用的方法,如图1-1、1-2和图1-3所示,包括:
步骤101:JAVA卡接收来自终端的初始化更新指令;
例如:JAVA卡接收来自终端的初始化更新指令805000000816F6C382EC802B051C。
步骤102:JAVA卡从初始化更新指令中获取终端随机数,使用自身的第一密钥对包括终端随机数和自身生成的卡随机数的第一拼接数据进行签名得到第一签名数据;组织包括卡随机数和第一签名数据的初始化更新应答,向终端返回初始化更新应答;
具体地,JAVA卡从初始化更新指令中获取终端随机数,将终端随机数、自身的序列计数器、自身生成的卡随机数和第一填充数据顺序拼接得到第一拼接数据,使用第一密钥对第一拼接数据进行签名得到第一签名数据,组织包括卡随机数和第一签名数据的初始化更新应答,向终端返回初始化更新应答;
例如:JAVA卡从初始化更新指令805000000816F6C382EC802B051C中获取终端随机数16F6C382EC802B05,将终端随机数16F6C382EC802B05、自身的序列计数器0001、自身生成的卡随机数6C7FFC113FB9和第一填充数据8000000000000000顺序拼接得到第一拼接数据16F6C382EC802B0500016C7FFC113FB98000000000000000,使用第一密钥对第一拼接数据进行签名得到第一签名数据F3418D0E7D89E183,组织包括卡随机和第一签名数据的初始化更新应答00000000000000000000FF0200016C7FFC113FB9F3418D0E7D89E183,向终端返回初始化更新应答。
本实施例中,当终端接收到初始化更新应答后,从初始化更新应答中获取第一签名数据和卡随机数,将终端随机数、自身的序列计数器、卡随机数和第一填充数据顺序拼接得到第二拼接数据,使用自身的第一密钥对第二拼接数据进行签名得到第二签名数据,判断第二签名数据是否和第一签名数据匹配,如果是,则将序列计数器、卡随机数、终端随机数和第一填充数据顺序拼接得到第三拼接数据,使用自身的第一密钥对第三拼接数据进行签名得到第三签名数据,设置外部认证指令头,将外部认证指令头、第二签名数据和第二填充数据顺序拼接得到第四拼接数据,使用第二密钥对第四拼接数据进行签名得到第一校验值,将外部认证指令头、第三签名数据和第一校验值顺序拼接得到外部认证指令,将外部认证命令发送给JAVA卡。
例如,当终端接收到初始化更新应答00000000000000000000FF0200016C7FFC113FB9F3418D0E7D89E183后,从初始化更新应答中获取第一签名数据F3418D0E7D89E183和卡随机数6C7FFC113FB9,将终端随机数16F6C382EC802B05、自身的序列计数器0001、卡随机数6C7FFC113FB9和第一填充数据8000000000000000顺序拼接得到第二拼接数据,使用自身的第一密钥对第二拼接数据进行签名得到第二签名数据F3418D0E7D89E183,判断第二签名数据F3418D0E7D89E183和第一签名数据F3418D0E7D89E183匹配,则将序列计数器0001、卡随机数6C7FFC113FB9、终端随机数16F6C382EC802B05和第一填充数据8000000000000000顺序拼接得到第三拼接数据,使用自身的第一密钥对第三拼接数据进行签名得到第三签名数据1588E4CD8D81AC26,设置外部认证指令头8482000010,将外部认证指令头8482000010、第三签名数据1588E4CD8D81AC26和第二填充数据800000顺序拼接得到第四拼接数据,使用第二密钥对第四拼接数据进行签名得到第一校验值17DE629CF4EAC9B2,将外部认证指令头、第三签名数据和第一校验值顺序拼接得到外部认证指令84820000101588E4CD8D81AC2617DE629CF4EAC9B2,将外部认证命令发送给JAVA卡。
步骤103:JAVA卡接收来自终端的外部认证命令;
例如:JAVA卡接收来自终端的外部认证命令84820000101588E4CD8D81AC2617DE629CF4EAC9B2。
步骤104:JAVA卡从外部认证命令中获取外部认证命令头、第三签名值和第一校验值;使用第一密钥对包括终端随机数和自身的卡随机数的第五拼接数据进行签名得到第四签名数据,使用第二密钥对包括外部认证命令头、第四签名数据和第一填充数据的第六拼接数据进行签名得到第二校验值;
具体地,JAVA卡从外部认证命令中获取外部认证命令头、第三签名值和第一校验值;将序列计数器、卡随机数、终端随机数和第一填充数据顺序拼接得到第五拼接数据,使用自身的第一密钥对第五拼接数据进行签名得到第四签名数据,将外部认证命令头、第四签名数据和第二填充数据顺序拼接得到第六拼接数据,使用第二密钥对包括外部认证命令头、第三签名值和第二填充数据的第六拼接数据进行签名得到第二校验值。
例如:JAVA卡从外部认证命令84820000101588E4CD8D81AC2617DE629CF4EAC9B2中获取外部认证命令头8482000010、第三签名数据1588E4CD8D81AC26和第一校验值17DE629CF4EAC9B2;将序列计数器0001、卡随机数6C7FFC113FB9、终端随机数16F6C382EC802B05和第一填充数据8000000000000000顺序拼接得到第五拼接数据00016C7FFC113FB916F6C382EC802B058000000000000000,使用自身的第一密钥对第五拼接数据进行签名得到第四签名数据1588E4CD8D81AC26,将外部认证命令头8482000010、第四签名数据1588E4CD8D81AC26和第二填充数据800000顺序拼接得到第六拼接数据84820000101588E4CD8D81AC268000000000000000,使用第二密钥对包括外部认证命令头、第四签名数据和第二填充数据的第六拼接数据进行签名得到第二校验值17DE629CF4EAC9B2。
步骤105:JAVA卡判断第一校验值和第二校验值是否匹配,如果是,则向终端返回外部认证成功应答;否则向终端返回外部认证失败应答,结束。
例如:JAVA卡判断第一校验值17DE629CF4EAC9B2和第二校验值17DE629CF4EAC9B2匹配,则向终端返回外部认证成功应答。
步骤106:JAVA卡接收来自终端的初始化下载指令,进行下载初始化操作,向终端返回下载初始化应答;
例如:JAVA卡接收来自所述终端的初始化下载指令80E602001205112233445508A00000000300000000000001进行下载初始化操作,向终端返回下载初始化应答;
步骤107:JAVA卡接收来自终端的下载应用指令,从下载应用指令中获取数据包;
具体地,JAVA卡接收来自终端的下载应用指令,获取下载应用指令中的数据域数据并请其作为数据包。
例如:JAVA卡接收来自终端的下载应用指令80E80000FFC4821D4D0C09690002000F636F6D2F66742F6A617661636172640014636F6D2F66742F6A617661636172642F546573740000FFFE0201FA80FEA58105A9A52280FEA581056FA52280FEA581058BA52280FEA58105A8A52280FEA54B0584A522A50283D2D6A52222A50283C176A5222280FE7E00A5EBB063C0A51285499AA522A50283E3FDA5222280FEA581058AA52280FEA581061AA52280FEA522A522000080FE6A050103020080FE00001677721580FEC0000080FE00000000000080FE00000000FF00A50285F05800800080FE9F690000FF0080FE19000700222280FE00078000070080FEA5028474862280FEFFA502842D6180FEFDA50284AC0980FE1101,获取下载应用指令中是数据域数C4821D4D0C09690002000F636F6D2F66742F6A617661636172640014636F6D2F66742F6A617661636172642F546573740000FFFE0201FA80FEA58105A9A52280FEA581056FA52280FEA581058BA52280FEA58105A8A52280FEA54B0584A522A50283D2D6A52222A50283C176A5222280FE7E00A5EBB063C0A51285499AA522A50283E3FDA5222280FEA581058AA52280FEA581061AA52280FEA522A522000080FE6A050103020080FE00001677721580FEC0000080FE00000000000080FE00000000FF00A50285F05800800080FE9F690000FF0080FE19000700222280FE00078000070080FEA5028474862280FEFFA502842D6180FEFDA50284AC0980FE11,并将其作为数据包。
步骤108:JAVA卡根据自身的第一标识判断数据包是否为非首包第二应用数据包,如果是,则执行步骤118;否则,执行步骤109;
具体地,JAVA卡获取自身的第一标识值,判断第一标识值是否为第一预设值,如果是,则判断出数据包为非首包第二应用数据包,执行步骤118;否则,执行步骤109;
本实施例中,第一预设值可以为1
例如:JAVA卡获取自身的第一标识值,得到的第一标识值为0,则判断出数据包不为非首包第二应用数据包,执行步骤109。
步骤109:JAVA卡从数据包中获取标签标识,根据标签标识判断数据包的类型,若数据包为第一应用数据包,则执行步骤110;若数据包为首包第二应用数据包,则执行步骤114;
步骤109可以具体包括:
步骤1091:JAVA卡从数据包中获取第一标签标识,判断第一标签标识是否为第六预设值,如果否,则判断数据包为非首包第一应用数据包,执行步骤110;如果是,则执行步骤1092;
具体地,JAVA卡获取数据包中的第一个字节,将其作为第一标签标识,判断第一标签标识是否为第六预设值C4,如果是,则执行1092;否则,判断数据包为非首包第一应用数据包,执行步骤110。
例如:JAVA卡获取数据包C4821D4D0C09690002000F636F6D2F66742F6A617661636172640014636F6D2F66742F6A617661636172642F546573740000FFFE0201FA80FEA58105A9A52280FEA581056FA52280FEA581058BA52280FEA58105A8A52280FEA54B0584A522A50283D2D6A52222A50283C176A5222280FE7E00A5EBB063C0A51285499AA522A50283E3FDA5222280FEA581058AA52280FEA581061AA52280FEA522A522000080FE6A050103020080FE00001677721580FEC0000080FE00000000000080FE00000000FF00A50285F05800800080FE9F690000FF0080FE19000700222280FE00078000070080FEA5028474862280FEFFA502842D6180FEFDA50284AC0980FE11中的第一个字节,将其作为第一标签标识,判断第一标签标识为第六预设值C4,如果是,则执行1092。
步骤1092:JAVA卡从数据包中获取第二标签,判断第二标签标识是否为第五预设值,如果是,则判断数据包为首包第二应用数据包,执行步骤114;否则,判断数据包为首包第一应用数据包,执行步骤110;
具体地,JAVA卡获取数据包中的第五个字节上的数据,将其作为第二标签,判断第二标签标识是否为第五预设值0C,如果是,则判断数据包为首包第二应用数据包,执行步骤114;否则,判断数据包为首包第一应用数据包,执行步骤110。
例如:JAVA卡获取数据包C4821D4D0C09690002000F636F6D2F66742F6A617661636172640014636F6D2F66742F6A617661636172642F546573740000FFFE0201FA80FEA58105A9A52280FEA581056FA52280FEA581058BA52280FEA58105A8A52280FEA54B0584A522A50283D2D6A52222A50283C176A5222280FE7E00A5EBB063C0A51285499AA522A50283E3FDA5222280FEA581058AA52280FEA581061AA52280FEA522A522000080FE6A050103020080FE00001677721580FEC0000080FE00000000000080FE00000000FF00A50285F05800800080FE9F690000FF0080FE19000700222280FE00078000070080FEA5028474862280FEFFA502842D6180FEFDA50284AC0980FE11中的第五个字节上的数据0C,将其作为第二标签标识,判断第二标签标识为第五预设值0C,如果是,则执行114。
步骤109还可以替换为:JAVA卡获取下载应用指令头、从数据包中获取标签标识,根据下载应用指令头和标签标识判断数据包的类型,若数据包为第一应用数据包,则执行步骤110;若数据包为首包第二应用数据包,则执行步骤114;
具体包括:
步骤c1:JAVA卡获取下载应用指令头,获取下载应用指令头中的第四字节上的数据,判断该数据是否为第八预设值,如果是,则判断数据包为首包数据包,执行步骤c2;否则,判断数据包为非首包第一应用数据包,执行步骤110;
本实施例中,第八预设值为00。
步骤c2:JAVA卡从数据包中获取第一标签标识,判断第一标识是否为第六预设值,如果是,则执行步骤c3;如果否,则报错;
步骤c2中的第一标签标识的获取方法与步骤1091中的第一标签标识的获取方法相同,本步骤中不再赘述。
步骤c3:JAVA卡从数据包中获取第二标签,判断第二标签标识是否为第五预设值,如果是,则判断数据包为首包第二应用数据包,执行步骤114;否则,判断数据包为首包第一应用数据包,执行步骤110。
步骤c3中的第二标签标识的获取方法与步骤1092中的第二标签标识的获取方法相同,本步骤中不再赘述。
本实施例中,当JAVA卡从数据包中获取第二标签,判断第二标签标识为第五预设值,判断数据包为首包第二应用数据包,执行步骤113之前,还包括:
JAVA卡从数据包中获取类的个数,若类的个数为第九预设值,则判断数据包为首包第二应用数据包,执行步骤114;否则,判断数据包为其他数据包。
本实施例中,其他数据包是与第一应用数据包和第二应用数据包实现的代码语言均不同的数据包。
本实施例中,第九预设值优选为FFFE。
本实施例中,第一应用为用JAVA代码实现的应用。
步骤110:JAVA卡从第一应用数据包中得到数据包第一应用数据,保存数据包第一应用数据;
本实施例中,第一应用数据包为TLV格式,首包第一应用数据包中包括一个TLV数据,该TLV数据的有效值(V值)中包括多组TLV成员;每组TLV成员中包括一个与成员T值对应的成员长度值(L值)和成员有效值(V值)。
首包第一应用数据包的格式如表1所示:
表1
非首包第一应用数据包中包括多个TLV数据;每个TLV数据中包括一个与T值对应的长度值(L值)和有效值(V值)。
非首包第一应用数据包的格式如表2所示:
表2
若第一应用数据包为首包第一应用数据包,则从第一应用数据包中得到数据包第一应用数据,具体为:从第一应用数据包中获取与第一标签标识对应的有效值(V值)中的每一组TLV成员的成员有效值(V值),根据获取到的所有成员有效值(V值)得到第一应用首包数据,保存第一应用首包数据。
例如:从第一应用数据包C4820000
010020DECAFFED02020400010511223344551057616C6C657444656D6F4170706C657402002100200021000A002900F2000E0A75005100F800000250133A00120009002C04010004002904030107A0000000620101030107A0000000620102030107A0000000620201000107A000000062000103000A010611223344556600BE06000E00000080030C00060701000000CC070A75000546188C000D1810FE890018038901180389021806110080038D000F9400001187031805038D000E870418058D00108705188F00123D0610088C000C870618100A900B8707181010900B8708180388091803880A1803880B191E2529041E160441044131191E2529051E中获取与第一标签标识C4对应的V值010020DECAFFED02020400010511223344551057616C6C657444656D6F4170706C657402002100200021000A002900F2000E0A75005100F800000250133A00120009002C04010004002904030107A0000000620101030107A0000000620102030107A0000000620201000107A000000062000103000A010611223344556600BE06000E00000080030C00060701000000CC070A75000546188C000D1810FE890018038901180389021806110080038D000F9400001187031805038D000E870418058D00108705188F00123D0610088C000C870618100A900B8707181010900B8708180388091803880A1803880B191E2529041E160441044131191E2529051E01中的每一组TLV成员的成员V值DECAFFED02020400010511223344551057616C6C657444656D6F4170706C6574、00200021000A002900F2000E0A75005100F800000250133A00120009002C040100、04030107A0000000620101030107A0000000620102030107A0000000620201000107A0000000620001、010611223344556600BE、00000080030C00060701000000CC…….,根据获取到的所有成员V值得到第一应用首包数据,保存第一应用首包数据。
若第一应用数据包为非首包第一应用数据包,则从第一应用数据包中得到数据包第一应用数据,具体为:从第一应用数据包获取每一个TLV数据中的有效值(V值),根据获取到的所有有效值(V值)得到非首包第一应用数据,保存非首包第一应用数据。
例如:从第一应用数据包中0F08070D070704040427171BBB0B1B050C15080A12061518130D140D140A48110510134612051609530B0AE7FF330AFF9300C0051604080706074C161905060708073F06060606060C100E030706060805050711110407090C0817040D090C080A060D0E060D110508040D0D0E09160F050A08080804090D0E0912070F050619070506040507050604050707090D050804090D2C03086103160605090804090D161B03160313160F08030B67050E050804090D212F0804085403160613160513160513160605090804090D1E2F0316061316051316051316070911640508050604052B0C0B3D03160613160513160513160605获取每一个TLV数据中的有效值(V值),根据获取到的所有有效值(V值)得到非首包第一应用数据,保存非首包第一应用数据。
步骤111:JAVA卡判断第一应用数据包是否为最后一包,如果是,则执行步骤112;否则,向终端返回下载应用应答;返回步骤107;
具体地,JAVA卡根据下载应用指令的指令头判断第一应用数据包是否为最后一包,如果是,则执行步骤112;否则,向终端返回下载应用应答;返回步骤107。
更加具体地,JAVA卡获取下载应用指令的指令头中的第三字节上的数据,判断该数据是否为第四预设值,如果是,则判断出第一应用数据包为最后一包,如果是,则执行步骤112;否则,判断出第一应用数据包不为最后一包,向终端返回下载应用应答;返回步骤107。
例如,JAVA卡获取下载应用指令80E80000FFC4821D4D0C09690002000F636F6D2F66742F6A617661636172640014636F6D2F66742F6A617661636172642F546573740000FFFE0201FA80FEA58105A9A52280FEA581056FA52280FEA581058BA52280FEA58105A8A52280FEA54B0584A522A50283D2D6A52222A50283C176A5222280FE7E00A5EBB063C0A51285499AA522A50283E3FDA5222280FEA581058AA52280FEA581061AA52280FEA522A522000080FE6A050103020080FE00001677721580FEC0000080FE00000000000080FE00000000FF00A50285F05800800080FE9F690000FF0080FE19000700222280FE00078000070080FEA5028474862280FEFFA502842D6180FEFDA50284AC0980FE1101的指令头80E80000FF中的第三字节上的数据00,判断该数据不为第四预设值80,则判断第一应用数据包不为最后一包,如向终端返回下载应用应答;返回步骤107。
步骤112:JAVA卡判断自身的第一标识是否为第二预设值,如果是,则执行步骤113;否则,根据所有已保存的数据包第一应用数据得到第一应用数据,向终端返回下载应用应答,返回步骤107;
步骤113:JAVA卡根据所有已保存的数据包第一应用数据得到第一应用数据,并将第一应用数据和第二应用数据建立对应关系;向终端返回下载应用应答,结束;
步骤113中,将第一应用数据和第二应用数据建立对应关系,具体为:JAVA卡将第一应用数据与关联标识建立对应关系。
JAVA卡将第一应用数据与关联标识建立对应关系,具体为:将关联标识作为第一应用数据的最后一个字节写入到第一应用数据中。
步骤113中,将第一应用数据和第二应用数据建立对应关系,具体为生成并保存关联标识,并将第一应用数据和第二应用数据与关联标识建立对应关系。
本步骤之后,还包括:将自身的第一标识恢复为初始值,即将自身的第一标识设置为第三预设值。
步骤114:JAVA卡根据下载应用指令获取第二应用数据总长度和首包第二应用数据长度;
本实施例中,首包第二应用数据包具体为TLV格式,如表3所示:
表3
其中,JAVA卡根据下载应用指令获取第二应用数据总长度具体包括:
步骤a1:JAVA卡根据下载应用指令中的首包第二应用数据包获取调试组件总长度,根据下载应用指令中的首包第二应用数据包获取调试参数长度;
步骤a1中,根据下载应用指令中的首包第二应用数据包获取调试组件总长度,具体为:JAVA卡在下载应用指令中的首包第二应用数据包获取与第二标签0C对应的长度值(L值),将获取到的数据作为调试组件总长度;
例如:JAVA卡在下载应用指令中的数据包C4821D4D0C09690002000F636F6D2F66742F6A617661636172640014636F6D2F66742F6A617661636172642F546573740000FFFE0201FA80FEA58105A9A52280FEA581056FA52280FEA581058BA52280FEA58105A8A52280FEA54B0584A522A50283D2D6A52222A50283C176A5222280FE7E00A5EBB063C0A51285499AA522A50283E3FDA5222280FEA581058AA52280FEA581061AA52280FEA522A522000080FE6A050103020080FE00001677721580FEC0000080FE00000000000080FE00000000FF00A50285F05800800080FE9F690000FF0080FE19000700222280FE00078000070080FEA5028474862280FEFFA502842D6180FEFDA50284AC0980FE11中获取T值为第五预设值OC对应的长度值(L值)0969,将获取到的数据0969作为调试组件总长度,即调试组件总长度为2409个字节。
步骤a1中,根据下载应用指令中的首包第二应用数据包获取调试组件参数长度,具体为:
JAVA卡在下载应用指令中的首包第二应用数据包获取与第二标签0C对应的有效值(V值),将获取到的有效值(V值)中的前两个字节上的数据作为调试组件参数成员个数,继续获取调试组件参数成员个数之后的两个字节,将其作为调试组件参数第一成员值数据长度,根据该长度获取调试组件参数第一成员值,根据调试组件参数成员个数判断调试组件参数成员中是否还有其他成员,如果否,则将2个字节+(2个字节+调试组件参数第一成员值数据长度)+4个字节的和作为调试组件参数长度;
如果是,则获取调试组件参数第一成员值之后的两个字节,将其作为调试组件参数第二成员值数据长度,根据该长度获取参数第二成员值,根据调试组件参数成员个数判断调试组件参数中是否还有其他成员,如果否,则将2个字节+(2个字节+调试组件参数第一成员值长度)+(2个字节+调试组件参数第二成员值长度)+4个字节的和作为调试组件参数长度;如果是,则继续根据本方法获取调试组件参数中其他成员长度,将2个字节+(2个字节+调试组件参数第一成员值长度)+…..(2个字节+调试组件参数第n成员值长度)+4个字节的和作为调试组件参数长度。
例如:JAVA卡在下载应用指令中的首包第二应用数据包获取与第二标签0C对应的V值C4821D4D0C09690002000F636F6D2F66742F6A617661636172640014636F6D2F66742F6A617661636172642F546573740000FFFE0201FA80FEA58105A9A52280FEA581056FA52280FEA581058BA52280FEA58105A8A52280FEA54B0584A522A50283D2D6A52222A50283C176A5222280FE7E00A5EBB063C0A51285499AA522A50283E3FDA5222280FEA581058AA52280FEA581061AA52280FEA522A522000080FE6A050103020080FE00001677721580FEC0000080FE00000000000080FE00000000FF00A50285F05800800080FE9F690000FF0080FE19000700222280FE00078000070080FEA5028474862280FEFFA502842D6180FEFDA50284AC0980FE11,
将获取到的有效值(V值)中的前两个字节上的数据0002作为调试组件参数成员个数,即调试组件参数成员个数为2个,继续获取调试组件参数成员个数之后的两个字节000F,将其作为调试组织参数第一成员值数据长度,即调试组件参数第一成员数据长度为15个字节,根据该长度获取第一参数第一成员值636F6D2F66742F6A61766163617264,根据调试组件参数成员个数2判断调试组件参数中还有其他成员,则获取参数第一成员值之后的两个字节0014,将其作为调试组织第一参数第二成员数据长度,即调试组件参数第二成员值数据长度为20个字节,根据该长度获取参数第二成员值636F6D2F66742F6A617661636172642F54657374,根据调试组件参数成员个数判断调试组件参数中没有其他成员,则将2个字节+(2个字节+调试组件参数第一成员值长度(15个字节))+(2个字节+调试组件参数第二成员值长度(20个字节))+4个字节的和45个字节作为调试组件参数长度。
步骤a2:JAVA卡计算调试组件总长度与调试参数长度的差值,将其作为第二应用数据总长度。
例如:JAVA卡计算调试组件总长度2409与调试参数长度45的差值2364,将2364个字节其作为第二应用数据总长度。
其中,JAVA卡根据下载应用指令获取首包第二应用数据长度具体为:JAVA卡获取下载应用指令的数据域长度,获取调试组件参数长度,将下载应用指令的数据域长度减去调试组件参数长度、再减去第一预设长度的值作为首包第二应用数据长度。
例如:JAVA卡获取下载应用指令80E80000FFC4821D4D0C09690002000F636F6D2F66742F6A617661636172640014636F6D2F66742F6A617661636172642F546573740000FFFE0201FA80FEA58105A9A52280FEA581056FA52280FEA581058BA52280FEA58105A8A52280FEA54B0584A522A50283D2D6A52222A50283C176A5222280FE7E00A5EBB063C0A51285499AA522A50283E3FDA5222280FEA581058AA52280FEA581061AA52280FEA522A522000080FE6A050103020080FE00001677721580FEC0000080FE00000000000080FE00000000FF00A50285F05800800080FE9F690000FF0080FE19000700222280FE00078000070080FEA5028474862280FEFFA502842D6180FEFDA50284AC0980FE1101中的数据域长度FF,即下载应用指令的数据域长度为255个字节,获取调试组件参数长度45个字节(获取调试组件参数长度的方法和步骤a1中获取调试组件参数的方法相同,本部分不再赘述)、将下载应用指令的数据域长度255个字节-调试组件参数长度45个字节-第一预设长度(7个字节的长度)的值203个字节作为首包第二应用数据长度。
步骤115:JAVA卡判断首包第二应用数据长度和第二应用数据总长度的大小;若首包第二应用数据长度小于第二应用数据总长度,则执行步骤116;若首包第二应用数据长度等于第二应用数据总长度,则执行步骤117;否则,向终端报错;
例如:JAVA卡判断首包第二应用数据长度203个字节小于第二应用数据总长度2364个字节;则执行步骤116。
步骤116:JAVA卡将自身的第一标识设置为第一预设值,根据首包第二应用数据长度设置累计长度,从首包第二应用数据包中获取首包第二应用数据,保存首包第二应用数据;向终端返回下载应用应答;返回步骤107。
具体地,JAVA卡将自身的第一标识设置为第一预设值1,将累计长度设置为首包第二应用数据长度,获取首包第二应用数据包中的调试参数之后的全部数据,将获取到的数据作为首包第二应用数据,保存首包第二应用数据;向终端返回下载应用应答;返回步骤107。
步骤117:JAVA卡将自身的第一标识设置为第二预设值,从首包第二应用数据包中获取首包第二应用数据,保存首包第二应用数据并将已保存的首包第二应用数据作为第二应用数据,向终端返回下载应用应答,返回步骤107。
步骤117中还包括:JAVA卡生成关联标识,将关联标识与第二应用数据的存储地址对应保存。
步骤118:JAVA卡根据数据包获取非首包第二应用数据长度,根据非首包第二应用数据长度与累计长度的和更新累计长度;
步骤119:JAVA卡判断累计长度和第二应用数据总长度的大小;若累计长度小于第二应用数据总长度,则执行步骤120;若累计长度等于第二应用数据总长度,则执行步骤121;若累计长度大于第二应用数据总长度,将累计长度、第二应用数据总长度和第一标识设置为第三预设值,向终端报错;
步骤120:JAVA卡获取非首包第二应用数据,保存非首包第二应用数据;向终端返回下载应用应答;返回步骤107;
具体地,JAVA卡将非首包第二应用数据包中的所有数据作为非首包第二应用数据,保存非首包第二应用数据;向终端返回下载应用应答;返回步骤107;
例如:JAVA卡将非首包第二应用数据包中的所有数据810014A5F0A53EFFA5810015A5F0A53EFFA5810016A5F022A53213A5E5FBA5910013E581A5910014900013A56FE3A5480013A53230A5DC22A5EBB00000A5EB20007FA532F5A53291A5660AA5F0A56609A53601A56608A53602A56607A53603A56606A53604A56605A53605A56604A53606A56603A53607E0A5作为非首包第二应用数据,保存非首包第二应用数据;向终端返回下载应用应答;返回步骤107;
步骤121:JAVA卡将自身的第一标识设置为第二预设值,获取非首包第二应用数据,保存非首包第二应用数据;并根据已保存的所有包第二应用数据得到第二应用数据,向终端返回下载应用应答,返回步骤107;
步骤121中还包括:JAVA卡生成关联标识,将关联标识与第二应用数据的存储地址对应保存。
步骤121中的获取非首包第二应用数据的操作与步骤120中相同,步骤121中不再赘述。
本实施例中,JAVA卡向终端返回下载应用应答后,还包括:
步骤201:JAVA卡接收来自终端的安装应用命令;
例如:JAVA卡接收来自终端的安装应用命令80 E6 0C 00 1E 06 A0 00 00 00 0345 07 A0 00 00 00 03 45 49 08 A0 00 00 00 03 45 49 44 01 00 02 C9 00 00 00。
步骤202:JAVA卡从安装应用命令中获取第一应用安装路径,保存第一应用安装路径,并根据第一应用安装路径将第一应用数据安装在JAVA卡中,向JAVA卡返回安装应用应答。
例如:JAVA卡从安装应用命令中获取第一应用安装路径A0 00 00 00 03 45 4944,保存第一应用安装路径,并根据第一应用安装路径将第一应用数据安装在JAVA卡中,向JAVA卡返回安装应用应答。
步骤203:JAVA卡接收来自终端的交易指令,根据已保存的第一应用安装路径获取第一应用数据中的关联标识;获取与关联标识对应的第二应用数据的存储地址,根据第二应用数据存储地址获取第二应用数据,根据第二应用数据执行交易指令,得到交易应答,将交易应答返回给终端。
步骤203具体包括:
步骤2031:JAVA卡中的第一应用层接收来自终端的交易命令;
步骤2032:JAVA卡中的第一应用层获取JAVA卡已保存的第一应用安装路径,将第一应用下安装路径和交易指令作为参数调用第一接口函数将第一应用安装路径和交易指令发送给JAVA虚拟机;
步骤2033:JAVA卡中的JAVA虚拟机根据第一应用安装路径获取第一应用数据,从第一应用数据中获取关联标识;
本实施例中,从第一应用数据中获取关联标识,具体为:获取第一应用数据中的最后一个字节上的数据将其作为关联标识。
步骤2034:JAVA卡中的JAVA虚拟机根据关联标识获取与关联标识对应的存储地址;根据与关联标识对应的存储地址获取第二应用数据,将交易指令发给第二应用数据;
步骤2035:JAVA卡中的第二应用数据执行交易指令,得到交易应答,通过第二应用数据中的第二数据接口,将交易应答返回给终端。
本实施例中,交易命令可以为终端发送给的各种交易类型(例如QPBOC交易、借贷记交易、EDEP交易等等)的交易指令,例如:交易命令可包括:选择应用指令、交易初始化指令和获取处理选项指令,相应的,
步骤203具体包括:
步骤b1:JAVA卡接收来自终端的选择应用指令;
步骤b2:JAVA卡根据选择应用指令中的第一应用安装路径或者根据已保存的第一应用安装路径选择第一应用数据;
步骤b3:第一应用数据获取JAVA卡已保存的第一应用安装路径,将第一应用安装路径和选择应用指令作为参数调用第一接口函数将第一应用安装路径和选择应用指令发送给JAVA虚拟机;
步骤b4:JAVA卡中的JAVA虚拟机根据第一应用安装路径获取第一应用数据,从第一应用数据中获取关联标识;根据关联标识获取与关联标识对应的存储地址;根据与关联标识对应的存储地址获取第二应用数据,将选择应用指令发给第二应用数据;
步骤b5:JAVA卡中的第二应用数据执行选择应用指令,得到选择应用应答,通过第二应用数据中的第二数据接口将选择应用应答返回给终端。
步骤b6:JAVA卡的第一应用数据接收来自终端的交易初始化指令;
例如:JAVA卡的第一应用数据接收来自终端的交易初始化指令805001020b010000014f112233445566。
步骤b7:第一应用数据获取JAVA卡已保存的第一应用安装路径,将第一应用安装路径和交易初始化指令作为参数调用第一接口函数将第一应用安装路径和交易初始化指令发送给JAVA虚拟机;
例如:第一应用数据获取JAVA卡已保存的第一应用安装路径A000000003454944,将第一应用安装路径A000000003454944和交易初始化指令805001020b010000014f112233445566作为参数调用第一接口函数将第一应用安装路径和交易初始化指令发送给JAVA虚拟机;
步骤b8:JAVA卡中的JAVA虚拟机根据第一应用安装路径获取第一应用数据,从第一应用数据中获取关联标识;根据关联标识获取与关联标识对应的存储地址;根据与关联标识对应的存储地址获取第二应用数据,将交易初始化指令发给第二应用数据;
例如:JAVA卡中的JAVA虚拟机根据第一应用安装路径获取第一应用数据,从第一应用数据中获取关联标识1;根据关联标识1在获取与关联标识1对应的存储地址;据与关联标识对应的存储地址获取第二应用数据,将交易初始化指令805001020b010000014f112233445566发给第二应用数据;
步骤b9:JAVA卡中的第二应用数据执行交易初始化指令,得到交易初始化应答,通过第二应用数据中的第二数据接口将交易初始化应答返回给终端。
例如:JAVA卡中的第二应用数据执行交易初始化指令805001020b010000014f112233445566,得到交易初始化应答9000,通过第二应用数据中的第二数据接口将交易初始化应答9000返回给终端。
步骤b10:JAVA卡的第一应用数据接收来自终端的获取处理选项指令;
步骤b11:第一应用数据获取JAVA卡已保存的第一应用安装路径,将第一应用安装路径和获取处理选项指令作为参数调用第一接口函数将第一应用安装路径和获取处理选项指令发送给JAVA虚拟机;
步骤b12:JAVA卡中的JAVA虚拟机根据第一应用安装路径获取第一应用数据,从第一应用数据中获取关联标识;根据关联标识获取与关联标识对应的存储地址;据与关联标识对应的存储地址获取第二应用数据,将获取处理选项指令发给第二应用数据;
步骤b13:JAVA卡中的第二应用数据执行获取处理选项指令,得到获取处理选项应答,通过第二应用数据中的第二数据接口将获取处理选项应答返回给终端。
实施例3
本实施例提供了一种JAVA卡,如图2所示,包括:第一接收模块10、第一获取模块11、第一判断模块12、第二获取模块13、第一保存模块14、第三获取模块15、第一发送模块16、第四获取模块17、第二保存模块18、第五获取模块19、第二判断模块20和第一关联模块21;
第一接收模块10,用于接收来自终端的下载应用指令;
第一获取模块11,用于从第一接收模块10接收到的下载应用指令中获取数据包;
第一判断模块12,用于根据第一获取模块11获取到的数据包中的标签标识判断数据包的类型;
第二获取模块13,用于当第一判断模块12判断出数据包为第二应用数据包时,从第二应用数据包中得到数据包第二应用数据;
第一保存模块14,用于保存第二获取模块13获取到的数据包第二应用数据;
第三获取模块15,用于根据第一保存模块14保存的所有数据包第二应用数据得到第二应用数据;
第四获取模块17,用于当第一判断模块12判断出数据包为第一应用数据包时,从第一应用数据包中得到数据包第一应用数据;
第二保存模块18,用于保存第四获取模块17获取到的数据包第一应用数据;
第五获取模块19,用于根据第二保存模块18保存的所有数据包第一应用数据得到第一应用数据;
第二判断模块20,用于当第五获取模块19得到第一应用数据后,判断第二应用数据是否下载完成;
第一关联模块21,用于当第二判断模块20判断为是后,将第三获取模块15获取到的第二应用数据和第五获取模块19获取到的第一应用数据建立对应关系;
第一发送模块16,用于向终端返回下载应用应答。
本实施例中,第一判断模块12,具体用于从第一获取模块11获取到的数据包中获取第二标签标识,判断第二标签标识是否为第五预设值,如果是,则判断数据包为第二应用数据包;否则,判断数据包为第一应用数据包。
本实施例中,第一关联模块21,具体用于当第二判断模块20判断为是后,根据JAVA卡的关联标识将第三获取模块15获取到的第二应用数据和第五获取模块19获取到的第一应用数据建立对应关系。
本实施例中,JAVA卡中还可以包括:第二关联模块;
第二关联模块,用于当第三获取模块15得到第二应用数据后,生成关联标识;将第三获取模块15获取到的第二应用数据与关联标识建立对应关系;
第一关联模块21,具体用于当第二判断模块20判断为是后,将第五获取模块19获取到的第一应用数据与第二关联模块生成的关联标识建立对应关系。
本实施例中,JAVA卡中还可以包括:第二接收模块、第六获取模块、第三保存模块、第一安装模块、第二发送模块、第三接收模块、第七获取模块、第一执行模块和第三发送模块;
第二接收模块,用于接收来自终端的安装应用命令;
第六获取模块,用于从第二接收模块接收到的安装应用命令中获取第一应用安装路径;
第三保存模块,用于保存第六获取模块获取到的第一应用安装路径;
第一安装模块,用于根据第六获取模块获取到的第一应用安装路径将第五获取模块19获取到的第一应用数据安装在JAVA卡中;
第二发送模块,用于向终端返回安装应用应答;
第三接收模块,用于接收来自终端的交易指令;
第七获取模块,用于根据第三保存模块保存的第一应用安装路径获取第一应用数据,根据第一应用数据和第二应用数据的对应关系获取与第一应用数据对应的第二应用数据;
第一执行命令,用于根据第七获取模块获取到的第二应用数据执行第三接收模块接收大的交易命令,得到交易应答;
第三发送模块,用于将第一执行命令得到的交易应答返回给终端。
本实施例中,第二获取模块13,具体用于当第一判断模块12判断出数据包为第二应用数据包后,获取与第二标签标识对应的有效值中的调试组件参数之后的全部数据,将获取到的数据作为数据包第二应用数据;
第一判断模块12,还用于从第一获取模块11获取到的数据包中获取第一标签标识;
第四获取模块17,具体用于当第一判断模块12判断出数据包为第一应用数据包后,从第一应用数据包中获取与第一标签标识对应的有效值中的每一组子成员的成员有效值,根据获取到的所有成员有效值得到数据包第一应用数据,保存数据包第一应用数据。
本实施例中,JAVA卡中还可以包括:第三判断模块和第四判断模块;
第三判断模块,用于当第二获取模块13从第二应用数据包中得到数据包第二应用数据后,判断第二应用数据包是否为最后一包;
第三获取模块15,具体用于当第三判断模块判断为是后,根据第一保存模块14保存的所有数据包第二应用数据得到第二应用数据;
第四判断模块,用于当第四获取模块17从第一应用数据包中得到数据包第一应用数据后,判断第一应用数据包是否为最后一包;
第五获取模块19,具体用于当第四判断模块判断为是后,根据第二保存模块18保存的所有数据包第一应用数据得到第一应用数据。
进一步地,JAVA卡中还包括:第五判断模块;第一判断模块12包括:第一获取单元、第一判断单元、第二获取单元和第二判断单元;
第五判断模块,用于根据JAVA卡的第一标识判断第一获取模块11获取到的数据包是否为非首包第二应用数据包;
第一获取单元,用于当第五判断模块判断为否后,从第一获取模块11获取到的数据包中获取第一标签标识;
第一判断单元,用于判断第一获取单元获取到的第一标签标识是否为第六预设值;若判断出第一标签标识不为第六预设值,则判断出数据包为非首包第一应用数据包;
第二获取单元,用于当第一判断单元判断为是后,从数据包中获取第二标签标识;
第二判断单元,用于判断第二获取单元获取到的第二标签标识是否为第五预设值,如果是则判断出数据包为首包第二应用数据包;否则判断出数据包为首包第一应用数据包;
第二获取模块13,具体用于当第五判断模块判断出第一获取模块11获取到的数据包是非首包第二应用数据包后,从第二应用数据包中得到数据包第二应用数据;当第二判断单元判断出数据包为首包第二应用数据包,从第二应用数据包中得到数据包第二应用数据;
第四获取模块17,具体用于当第一判断单元判断数据包为非首包第一应用数据包后,从第一应用数据包中得到数据包第一应用数据;当第二判断单元断出数据包为首包第一应用数据包后,从第一应用数据包中得到数据包第一应用数据。
可选地,JAVA卡中还可以包括:第一报错模块;第一判断模块12替换为:第六判断模块;
第六判断模块包括:第三获取单元、第三判断单元、第四获取单元、第四判断单元、第五获取单元和第五判断单元;
第三获取单元,用于获取第一接收模块10接收到的下载应用指令中的指令头中的第四字节上的数据;
第三判断单元,用于判断第三获取单元获取到的数据是否为第八预设值,如果是,则判断出数据包为首包数据包;否则,判断出数据包为非首包第一应用数据包;
第四获取单元,用于从第一获取模块11获取到的数据包中获取第一标签标识;
第四判断单元,用于判断第四获取单元获取到的第一标签标识是否为第六预设值;
第五获取单元,用于当第四判断单元判断为是后,从第一获取模块11获取到的数据包中获取第二标签标识;
第五判断单元,用于判断第五获取单元获取到的第二标签标识是否为第五预设值;如果是,则判断出数据包为首包第二应用数据包;否则,判断出数据包为首包第一应用数据包;
第二获取模块13,具体用于当第五判断模块判断出第一获取模块11获取到的数据包是非首包第二应用数据包后,从第二应用数据包中得到数据包第二应用数据;当第五判断单元判断出数据包为首包第二应用数据包,从第二应用数据包中得到数据包第二应用数据;
第四获取模块17,具体用于当第三判断单元判断数据包为非首包第一应用数据包后,从第一应用数据包中得到数据包第一应用数据;当第五判断单元断出数据包为首包第一应用数据包后,从第一应用数据包中得到数据包第一应用数据;
报错模块,用于当第四判断单元判断为否后,报错。
进一步地,第二获取模块13具体包括:第六获取单元和第七获取单元;第四获取模块17具体包括:第八获取单元和第九获取单元;
第六获取单元,用于当第二判断单元判断出数据包为首包第二应用数据包后,获取与第二标签标识对应的有效值中的调试组件参数之后的全部数据,将获取到的数据作为首包第二应用数据;
第七获取单元,用于当第五判断模块判断出第一获取模块11获取到的数据包是非首包第二应用数据包后,将非首包第二应用数据包中的所有数据作为非首包第二应用数据;
第八获取单元,用于当第二判断单元断出数据包为首包第一应用数据包后,从第一应用数据包中获取与第一标签标识对应的有效值中的每一组子成员的成员有效值,根据获取到的所有成员有效值得到首包第一应用数据,保存首包第一应用数据;
第九获取单元,用于当第一判断单元判断数据包为非首包第一应用数据包后,从第一应用数据包中获取每一组子数据中的有效值,根据获取到的所有有效值得到非首包第一应用数据。
本实施例中,第五判断模块,具体用于判断JAVA卡的第一标识是否为第一预设值,如果是,则判断数据包为非首包第二应用数据包;否则,判断数据包不为非首包第二应用数据包。
本实施例中,第三判断模块包括:第十获取单元、第十一获取单元、第六判断单元、第一报错单元、第一设置单元、第二设置单元、第十二获取单元、第一更新单元和第七判断单元;
第十获取单元,用于当第二判断单元判断出数据包为首包第二应用数据包后,根据下载应用指令获取第二应用数据总长度;
第十一获取单元,用于当第二判断单元判断出数据包为首包第二应用数据包后,根据下载应用指令获取首包第二应用数据长度;
第六判断单元,用于判断首包第二应用数据长度和第二应用数据总长度的大小;若首包第二应用数据长度小于第二应用数据总长度,则判断出第二应用数据包不为最后一包;若首包第二应用数据长度等于第二应用数据总长度,则判断出第二应用数据包为最后一包;
第一设置单元,用于当第六判断单元判断出第二应用数据包不为最后一包后,将自身的第一标识设置为第一预设值;
第二设置单元,用于当第六判断单元判断出第二应用数据包不为最后一包后,根据首包第二应用数据长度设置自身的累计长度;
第十二获取单元,用于当第五判断模块判断出第一获取模块11获取到的数据包是非首包第二应用数据包后,根据非首包第二应用数据包获取非首包第二应用数据长度;
第一更新单元,用于根据非首包第二应用数据长度与累计长度的和更新累计长度;
第七判断单元,用于判断累计长度和第二应用数据总长度的大小;若累计长度小于第二应用数据总长度,则判断出第二应用数据包不为最后一包;若累计长度等于第二应用数据总长度,则判断出第二应用数据包为最后一包;
第一报错单元,用于当第六判断单元判断出首包第二应用数据长度大于第二应用数据总长度时,向终端报错;当第七判断单元判断出累计长度大于第二应用数据总长度时,将累计长度、第二应用数据总长度和第一预设标识设置为第三预设值,向终端报错。
进一步地,第十获取单元具体包括:第一获取子单元和第二获取子单元;
第一获取子单元,用于根据下载应用指令中的首包第二应用数据包获取调试组件总长度,根据下载应用指令中的首包第二应用数据包获取调试组件参数长度;
第二获取子单元,用于计算调试组件总长度与调试组件参数长度的差值,将差值作为第二应用数据总长度;
第十一获取单元,具体用于当第二判断单元判断出数据包为首包第二应用数据包后,获取下载应用指令的数据域长度,根据下载应用指令中的首包第二应用数据包获取调试组件参数长度,将下载应用指令的数据域长度减去调试组件参数长度、再减去第一预设长度的值作为首包第二应用数据长度;
第十二获取单元,具体用于当第五判断模块判断出第一获取模块11获取到的数据包是非首包第二应用数据包后,将非首包第二应用数据包中所有数据的长度之和作为非首包第二应用数据包长度。
更进一步地,第一获取子单元,具体用于在下载应用指令中的首包第二应用数据包中获取与第二标签标识对应的长度值,将获取到的数据作为调试组件总长度;在下载应用指令中的首包第二应用数据包中获取与第二标签标识对应的有效值,在与第二标签标识对应的有效值中获取调试组件参数长度。
本实施例中,第四判断模块,具体用于获取下载应用指令的指令头中的第三字节上的数据,判断该数据是否为第四预设值,如果是,则判断出第一应用数据包为最后一包;否则,判断出第一应用数据包不为最后一包。
本实施例中,JAVA卡,还可以包括:第一设置模块;
第一设置模块,用于当第三判断模块判断出第二应用数据包为最后一包后,将JAVA卡的第一标识设置为第二预设值;
第二判断模块20,具体用于当第五获取模块19得到第一应用数据后,判断JAVA卡的第一标识是否为第二预设值,如果是,则判断出第二应用已下载完成;否则,判断出第二应用数据没有下载完成。
进一步地,JAVA卡中,还可以包括:第四接收模块、第八获取模块、第一签名模块、第一组织模块、第四发送模块、第五接收模块、第九获取模块、第二签名模块、第一校验模块和第五发送模块;
第四接收模块,用于接收来自终端的更新初始化指令;
第八获取模块,用于从第四接收模块接收到的更新初始化指令中获取终端随机数;
第一签名模块,用于使用JAVA卡的第一密钥对包括终端随机数和JAVA卡生成的卡随机数的第一拼接数据进行签名得到第一签名数据;
第一组织模块,用于组织包括第一签名模块得到的第一签名数据和JAVA卡生成的卡随机数的更新初始化应答;
第四发送模块,用于向终端返回第一组织模块组织的更新初始化应答;
第五接收模块,用于接收来自终端的外部认证命令;
第九获取模块,用于从第五接收模块接收到的外部认证命令中获取外部认证命令头、第三签名值和第一校验值;
第二签名模块,用于使用JAVA卡的第一密钥对包括终端随机数和JAVA卡的卡随机数的第五拼接数据进行签名得到第四签名数据;
第一校验模块,用于使用JAVA卡的第二密钥对包括外部认证命令头、第四签名数据和第二填充数据的第六拼接数据进行签名得到第二校验值;判断第一校验值和第二校验值是否匹配;
第五发送模块,用于当第一校验模块判断为是后,向终端返回外部认证成功应答;当第一校验模块判断为否后,向终端返回外部认证失败应答。
更进一步地,JAVA卡中还可以包括:第六接收模块、初始化模块和第六发送模块;
第六接收模块,用于接收来自终端的下载初始化指令;
初始化模块,用于进行下载初始化操作;
第六发送模块,用于向终端返回初始化应答。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (36)

1.一种JAVA卡下载应用的方法,其特征在于,包括:
步骤s1:所述JAVA卡接收来自终端的下载应用指令,从所述下载应用指令中获取数据包,根据所述数据包中的标签标识判断数据包的类型,若数据包为第二应用数据包,则执行步骤s2;若数据包为第一应用数据包,则执行步骤s3;
步骤s2:所述JAVA卡从所述第二应用数据包中得到数据包第二应用数据,保存数据包第二应用数据;根据所有已保存的数据包第二应用数据得到第二应用数据,向所述终端返回下载应用应答,返回步骤s1;
步骤s3:所述JAVA卡从所述第一应用数据包中得到数据包第一应用数据,保存数据包第一应用数据,根据所有已保存的数据包第一应用数据得到第一应用数据;执行步骤s4;
步骤s4:所述JAVA卡判断第二应用数据是否已下载完成,如果是,则将所述第一应用数据和所述第二应用数据建立对应关系;向所述终端返回下载应用应答;否则,向所述终端返回下载应用应答。
2.根据权利要求1所述的方法,其特征在于,所述根据所述数据包中的标签标识判断数据包的类型,具体为:
所述JAVA卡从数据包中获取第二标签标识,判断第二标签标识是否为第五预设值,如果是,则判断数据包为第二应用数据包,执行步骤s2;否则,判断数据包为第一应用数据包,执行步骤s3。
3.根据权利要求1所述的方法,其特征在于,所述JAVA卡将所述第一应用数据和所述第二应用数据建立对应关系,具体为:所述JAVA卡根据自身的关联标识将所述第一应用数据和所述第二应用数据建立对应关系。
4.根据权利要求3所述的方法,其特征在于,所述根据所有已保存的数据包第二应用数据得到第二应用数据之后,还包括:
所述JAVA卡生成所述关联标识;将所述第二应用数据与所述关联标识建立对应关系;
所述JAVA卡根据自身的关联标识将所述第一应用数据和所述第二应用数据建立对应关系,具体为:所述JAVA卡将所述第一应用数据与所述关联标识建立对应关系。
5.根据权利要求1所述的方法,其特征在于,所述JAVA卡将所述第一应用数据和所述第二应用数据建立对应关系后,还包括:
步骤t1:所述JAVA卡接收来自终端的安装应用命令;
步骤t2:所述JAVA卡从所述安装应用命令中获取第一应用安装路径,保存第一应用安装路径,并根据第一应用安装路径将第一应用数据安装在JAVA卡中,向终端返回安装应用应答;
步骤t3:所述JAVA卡接收来自终端的交易指令;
步骤t4:所述JAVA卡根据自身保存的第一应用安装路径获取第一应用数据,根据第一应用数据和第二应用数据的对应关系获取与第一应用数据对应的第二应用数据,根据第二应用数据执行交易指令,得到交易应答,将交易应答返回给终端。
6.根据权利要求2所述的方法,其特征在于,所述从所述第二应用数据包中得到数据包第二应用数据具体为:所述JAVA卡获取与第二标签标识对应的有效值中的调试组件参数之后的全部数据,将获取到的数据作为数据包第二应用数据;
所述从所述第一应用数据包中得到数据包第一应用数据之前还包括:所述JAVA卡从数据包中获取第一标签标识;
所述从所述第一应用数据包中得到数据包第一应用数据,具体为:所述JAVA卡从所述第一应用数据包中获取与所述第一标签标识对应的有效值中的每一组子成员的成员有效值,根据获取到的所有成员有效值得到数据包第一应用数据,保存数据包第一应用数据。
7.根据权利要求1所述的方法,其特征在于,所述根据所有已保存的数据包第二应用数据得到第二应用数据之前,还包括:判断所述第二应用数据包是否为最后一包,如果是,则根据所有已保存的数据包第二应用数据得到第二应用数据,向所述终端返回下载应用应答,返回步骤s1;否则,向所述终端返回下载应用应答,返回步骤s1;
所述根据所有已保存的数据包第一应用数据得到第一应用数据之前,还包括:判断所述第一应用数据包是否为最后一包,如果是,则根据所有已保存的数据包第一应用数据得到第一应用数据,向所述终端返回下载应用应答,执行步骤s4;否则,向所述终端返回下载应用应答,返回步骤s1。
8.根据权利要求7所述的方法,其特征在于,
所述根据所述数据包中的标签标识判断数据包的类型之前,还包括:所述JAVA卡根据自身的第一标识判断所述数据包是否为非首包第二应用数据包,如果是,则执行步骤s2;否则,根据所述数据包中的标签标识判断数据包的类型;
所述根据所述数据包中的标签标识判断数据包的类型,具体包括:
步骤a1:JAVA卡从数据包中获取第一标签标识,判断第一标签标识是否为第六预设值,如果是,则执行步骤a2;如果否,则判断数据包为非首包第一应用数据包,执行步骤s3;
步骤a2:JAVA卡从数据包中获取第二标签标识,判断第二标签标识是否为第五预设值,如果是,则判断数据包为首包第二应用数据包,执行步骤s2;否则,判断数据包为首包第一应用数据包,执行步骤s3。
9.根据权利要求8所述的方法,其特征在于,所述根据所述数据包中的标签标识判断数据包的类型替换为:从所述数据包中获取标签标识,根据下载应用指令头和标签标识判断数据包的类型;
所述从所述数据包中获取标签标识,根据下载应用指令头和标签标识判断数据包的类型,具体包括:
步骤b1:所述JAVA获取下载应用指令中的指令头中的第四字节上的数据,判断该数据是否为第八预设值,如果是,则判断出数据包为首包数据包,执行步骤b2;否则,判断出数据包为非首包第一应用数据包,执行步骤s3;
步骤b2:所述JAVA卡从数据包中获取第一标签标识,判断第一标签标识是否为第六预设值,如果是,则执行步骤b3;如果否,则报错;
步骤b3:所述JAVA卡从数据包中获取第二标签标识,判断第二标签标识是否为第五预设值,如果是,则判断数据包为首包第二应用数据包,执行步骤s2;否则,判断数据包为首包第一应用数据包,执行步骤s3。
10.根据权利要求8所述的方法,其特征在于,
若第一应用数据包为首包第一应用数据包,则从所述第一应用数据包中得到数据包第一应用数据,具体为:所述JAVA卡从所述第一应用数据包中获取与第一标签标识对应的有效值中的每一组子成员的成员有效值,根据获取到的所有成员有效值得到首包第一应用数据,保存首包第一应用数据;
若第一应用数据包为非首包第一应用数据包,则所述从所述第一应用数据包中得到数据包第一应用数据,具体为:所述JAVA卡从所述第一应用数据包中获取每一组子数据中的有效值,根据获取到的所有有效值得到非首包第一应用数据;
若第二应用数据包为首包第二应用数据包,则从所述第二应用数据包中得到数据包第二应用数据具体为:所述JAVA卡获取与第二标签标识对应的有效值中的调试组件参数之后的全部数据,将获取到的数据作为首包第二应用数据;
若第二应用数据包为非首包第二应用数据包,则从所述第二应用数据包中得到数据包第二应用数据具体为:所述JAVA卡将非首包第二应用数据包中的所有数据作为非首包第二应用数据。
11.根据权利要求8所述的方法,其特征在于,所述JAVA卡根据自身的第一标识判断所述数据包是否为非首包第二应用数据包,具体为:
所述JAVA卡判断自身的第一标识是否为第一预设值,如果是,则判断所述数据包为非首包第二应用数据包;否则,判断所述数据包不为非首包第二应用数据包。
12.根据权利要求8所述的方法,其特征在于,
若第二应用数据包为首包第二应用数据包,则判断所述第二应用数据包是否为最后一包,具体包括:
步骤c1:所述JAVA卡根据下载应用指令获取第二应用数据总长度和首包第二应用数据长度;
步骤c2:所述JAVA卡判断首包第二应用数据长度和第二应用数据总长度的大小;若首包第二应用数据长度小于第二应用数据总长度,则判断出所述第二应用数据包不为最后一包,执行步骤c3;若首包第二应用数据长度等于第二应用数据总长度,则判断出所述第二应用数据包为最后一包;否则,向终端报错;
步骤c3:所述JAVA卡将自身的第一标识设置为第一预设值,根据首包第二应用数据长度设置自身的累计长度,向所述终端返回下载应用应答;返回步骤s1;
若第二应用数据包为非首包第二应用数据包,则判断所述第二应用数据包是否为最后一包,具体包括:
步骤d1:所述JAVA卡根据非首包第二应用数据包获取非首包第二应用数据长度,根据非首包第二应用数据长度与累计长度的和更新累计长度;
步骤d2:所述JAVA卡判断累计长度和第二应用数据总长度的大小;若累计长度小于第二应用数据总长度,则判断出所述第二应用数据包不为最后一包,向所述终端返回下载应用应答;返回步骤s1;若累计长度等于第二应用数据总长度,则判断出所述第二应用数据包为最后一包;否则,将累计长度、第二应用数据总长度和第一预设标识设置为第三预设值,向终端报错。
13.根据权利要求12所述的方法,其特征在于,
所述JAVA卡根据下载应用指令获取第二应用数据总长度具体包括:
步骤f1:所述JAVA卡根据下载应用指令中的首包第二应用数据包获取调试组件总长度,根据下载应用指令中的首包第二应用数据包获取调试组件参数长度;
步骤f2:JAVA卡计算调试组件总长度与调试组件参数长度的差值,将所述差值作为第二应用数据总长度;
所述JAVA卡根据下载应用指令获取首包第二应用数据长度具体为:所述JAVA卡获取下载应用指令的数据域长度,根据下载应用指令中的首包第二应用数据包获取调试组件参数长度,将下载应用指令的数据域长度减去调试组件参数长度、再减去第一预设长度的值作为首包第二应用数据长度;
所述JAVA卡根据非首包第二应用数据包获取非首包第二应用数据长度,具体为:所述JAVA卡将非首包第二应用数据包中所有数据的长度之和作为非首包第二应用数据包长度。
14.根据权利要求13所述的方法,其特征在于,所述根据下载应用指令中的首包第二应用数据包获取调试组件总长度,具体为:
所述JAVA卡在所述下载应用指令中的首包第二应用数据包中获取与第二标签标识对应的长度值,将获取到的数据作为调试组件总长度;
所述根据下载应用指令中的首包第二应用数据包获取调试组件参数长度,具体为:
所述JAVA卡在所述下载应用指令中的首包第二应用数据包中获取与第二标签标识对应的有效值,在与所述第二标签标识对应的有效值中获取调试组件参数长度。
15.根据权利要求8所述的方法,其特征在于,判断所述第一应用数据包是否为最后一包,具体为:
所述JAVA卡获取下载应用指令的指令头中的第三字节上的数据,判断该数据是否为第四预设值,如果是,则判断出第一应用数据包为最后一包;否则,判断出第一应用数据包不为最后一包。
16.根据权利要求7或12所述的方法,其特征在于,当所述JAVA卡判断所述第二应用数据包为最后一包后,还包括:所述JAVA卡将第一标识设置为第二预设值;
所述判断第二应用数据是否已下载完成,具体为:所述JAVA卡判断第一标识是否为第二预设值,如果是,则判断出第二应用已下载完成;否则,判断出第二应用数据没有下载完成。
17.根据权利要求1所述的方法,其特征在于,所述步骤s1之前还包括:
步骤s01:所述JAVA卡接收来自终端的更新初始化指令,从更新初始化指令中获取终端随机数,使用自身的第一密钥对包括终端随机数和自身生成的卡随机数的第一拼接数据进行签名得到第一签名数据;组织包括第一签名数据和卡随机数的更新初始化应答,向所述终端返回更新初始化应答;
步骤s02:所述JAVA卡接收来自所述终端的外部认证命令,从外部认证命令中获取外部认证命令头、第三签名值和第一校验值;使用第一密钥对包括终端随机数和自身的卡随机数的第五拼接数据进行签名得到第四签名数据,使用自身的第二密钥对包括外部认证命令头、第四签名数据和第二填充数据的第六拼接数据进行签名得到第二校验值;判断第一校验值和第二校验值是否匹配,如果是,则向所述终端返回外部认证成功应答;否则向所述终端返回外部认证失败应答。
18.根据权利要求17所述的方法,其特征在于,所述步骤s02之后,所述步骤s1之前还包括:所述JAVA卡接收来自所述终端的下载初始化指令,进行下载初始化操作,向所述终端返回初始化应答。
19.一种JAVA卡,其特征在于,包括:第一接收模块、第一获取模块、第一判断模块、第二获取模块、第一保存模块、第三获取模块、第一发送模块、第四获取模块、第二保存模块、第五获取模块、第二判断模块和第一关联模块;
所述第一接收模块,用于接收来自终端的下载应用指令;
所述第一获取模块,用于从所述第一接收模块接收到的所述下载应用指令中获取数据包;
所述第一判断模块,用于根据所述第一获取模块获取到的所述数据包中的标签标识判断数据包的类型;
所述第二获取模块,用于当所述第一判断模块判断出所述数据包为第二应用数据包时,从所述第二应用数据包中得到数据包第二应用数据;
所述第一保存模块,用于保存所述第二获取模块获取到的数据包第二应用数据;
所述第三获取模块,用于根据所述第一保存模块保存的所有数据包第二应用数据得到第二应用数据;
所述第四获取模块,用于当所述第一判断模块判断出所述数据包为第一应用数据包时,从所述第一应用数据包中得到数据包第一应用数据;
所述第二保存模块,用于保存所述第四获取模块获取到的数据包第一应用数据;
所述第五获取模块,用于根据所述第二保存模块保存的所有数据包第一应用数据得到第一应用数据;
所述第二判断模块,用于当所述第五获取模块得到第一应用数据后,判断第二应用数据是否下载完成;
所述第一关联模块,用于当所述第二判断模块判断为是后,将所述第三获取模块获取到的所述第二应用数据和所述第五获取模块获取到的所述第一应用数据建立对应关系;
所述第一发送模块,用于向所述终端返回下载应用应答。
20.根据权利要求19所述的JAVA卡,其特征在于,所述第一判断模块,具体用于从所述第一获取模块获取到的数据包中获取第二标签标识,判断第二标签标识是否为第五预设值,如果是,则判断数据包为第二应用数据包;否则,判断数据包为第一应用数据包。
21.根据权利要求19所述的JAVA卡,其特征在于,所述第一关联模块,具体用于当所述第二判断模块判断为是后,根据所述JAVA卡的关联标识将所述第三获取模块获取到的所述第二应用数据和所述第五获取模块获取到的所述第一应用数据建立对应关系。
22.根据权利要求21所述的JAVA卡,其特征在于,还包括:第二关联模块;
所述第二关联模块,用于当所述第三获取模块得到所述第二应用数据后,生成所述关联标识;将所述第三获取模块获取到的第二应用数据与所述关联标识建立对应关系;
所述第一关联模块,具体用于当所述第二判断模块判断为是后,将所述第五获取模块获取到的第一应用数据与所述第二关联模块生成的所述关联标识建立对应关系。
23.根据权利要求19所述的JAVA卡,其特征在于,还包括:第二接收模块、第六获取模块、第三保存模块、第一安装模块、第二发送模块、第三接收模块、第七获取模块、第一执行模块和第三发送模块;
所述第二接收模块,用于接收来自终端的安装应用命令;
所述第六获取模块,用于从所述第二接收模块接收到的安装应用命令中获取第一应用安装路径;
所述第三保存模块,用于保存所述第六获取模块获取到的第一应用安装路径;
所述第一安装模块,用于根据所述第六获取模块获取到的第一应用安装路径将所述第五获取模块获取到的第一应用数据安装在所述JAVA卡中;
所述第二发送模块,用于向终端返回安装应用应答;
所述第三接收模块,用于接收来自终端的交易指令;
所述第七获取模块,用于根据所述第三保存模块保存的第一应用安装路径获取第一应用数据,根据第一应用数据和第二应用数据的对应关系获取与第一应用数据对应的第二应用数据;
所述第一执行命令,用于根据所述第七获取模块获取到的第二应用数据执行所述第三接收模块接收大的交易命令,得到交易应答;
所述第三发送模块,用于将所述第一执行命令得到的交易应答返回给终端。
24.根据权利要求20所述的JAVA卡,其特征在于,所述第二获取模块,具体用于当所述第一判断模块判断出数据包为第二应用数据包后,获取与第二标签标识对应的有效值中的调试组件参数之后的全部数据,将获取到的数据作为数据包第二应用数据;
所述第一判断模块,还用于从所述第一获取模块获取到的数据包中获取第一标签标识;
所述第四获取模块,具体用于当所述第一判断模块判断出数据包为第一应用数据包后,从所述第一应用数据包中获取与所述第一标签标识对应的有效值中的每一组子成员的成员有效值,根据获取到的所有成员有效值得到数据包第一应用数据,保存数据包第一应用数据。
25.根据权利要求19所述的JAVA卡,其特征在于,还包括:第三判断模块和第四判断模块;
所述第三判断模块,用于当所述第二获取模块从所述第二应用数据包中得到数据包第二应用数据后,判断所述第二应用数据包是否为最后一包;
所述第三获取模块,具体用于当所述第三判断模块判断为是后,根据所述第一保存模块保存的所有数据包第二应用数据得到第二应用数据;
所述第四判断模块,用于当所述第四获取模块从所述第一应用数据包中得到数据包第一应用数据后,判断所述第一应用数据包是否为最后一包;
所述第五获取模块,具体用于当所述第四判断模块判断为是后,根据所述第二保存模块保存的所有数据包第一应用数据得到第一应用数据。
26.根据权利要求25所述的JAVA卡,其特征在于,还包括:第五判断模块;所述第一判断模块包括:第一获取单元、第一判断单元、第二获取单元和第二判断单元;
所述第五判断模块,用于根据所述JAVA卡的第一标识判断所述第一获取模块获取到的数据包是否为非首包第二应用数据包;
所述第一获取单元,用于当所述第五判断模块判断为否后,从所述第一获取模块获取到的数据包中获取第一标签标识;
所述第一判断单元,用于判断所述第一获取单元获取到的第一标签标识是否为第六预设值;若判断出第一标签标识不为第六预设值,则判断出数据包为非首包第一应用数据包;
所述第二获取单元,用于当所述第一判断单元判断为是后,从所述数据包中获取第二标签标识;
所述第二判断单元,用于判断所述第二获取单元获取到的第二标签标识是否为第五预设值,如果是则判断出数据包为首包第二应用数据包;否则判断出数据包为首包第一应用数据包;
所述第二获取模块,具体用于当所述第五判断模块判断出所述第一获取模块获取到的数据包是非首包第二应用数据包后,从所述第二应用数据包中得到数据包第二应用数据;当所述第二判断单元判断出数据包为首包第二应用数据包,从所述第二应用数据包中得到数据包第二应用数据;
所述第四获取模块,具体用于当所述第一判断单元判断数据包为非首包第一应用数据包后,从所述第一应用数据包中得到数据包第一应用数据;当所述第二判断单元断出数据包为首包第一应用数据包后,从所述第一应用数据包中得到数据包第一应用数据。
27.根据权利要求26所述的JAVA卡,其特征在于,还包括:第一报错模块;所述第一判断模块替换为:第六判断模块;
所述第六判断模块包括:第三获取单元、第三判断单元、第四获取单元、第四判断单元、第五获取单元和第五判断单元;
所述第三获取单元,用于获取所述第一接收模块接收到的所述下载应用指令中的指令头中的第四字节上的数据;
所述第三判断单元,用于判断所述第三获取单元获取到的数据是否为第八预设值,如果是,则判断出数据包为首包数据包;否则,判断出数据包为非首包第一应用数据包;
所述第四获取单元,用于从所述第一获取模块获取到的数据包中获取第一标签标识;
所述第四判断单元,用于判断所述第四获取单元获取到的第一标签标识是否为第六预设值;
所述第五获取单元,用于当所述第四判断单元判断为是后,从所述第一获取模块获取到的数据包中获取第二标签标识;
所述第五判断单元,用于判断所述第五获取单元获取到的第二标签标识是否为第五预设值;如果是,则判断出数据包为首包第二应用数据包;否则,判断出数据包为首包第一应用数据包;
所述第二获取模块,具体用于当所述第五判断模块判断出所述第一获取模块获取到的数据包是非首包第二应用数据包后,从所述第二应用数据包中得到数据包第二应用数据;当所述第五判断单元判断出数据包为首包第二应用数据包,从所述第二应用数据包中得到数据包第二应用数据;
所述第四获取模块,具体用于当所述第三判断单元判断数据包为非首包第一应用数据包后,从所述第一应用数据包中得到数据包第一应用数据;当所述第五判断单元断出数据包为首包第一应用数据包后,从所述第一应用数据包中得到数据包第一应用数据;
所述报错模块,用于当所述第四判断单元判断为否后,报错。
28.根据权利要求26所述的JAVA卡,其特征在于,所述第二获取模块具体包括:第六获取单元和第七获取单元;所述第四获取模块具体包括:第八获取单元和第九获取单元;
所述第六获取单元,用于当所述第二判断单元判断出数据包为首包第二应用数据包后,获取与第二标签标识对应的有效值中的调试组件参数之后的全部数据,将获取到的数据作为首包第二应用数据;
所述第七获取单元,用于当所述第五判断模块判断出所述第一获取模块获取到的数据包是非首包第二应用数据包后,将非首包第二应用数据包中的所有数据作为非首包第二应用数据;
所述第八获取单元,用于当所述第二判断单元断出数据包为首包第一应用数据包后,从所述第一应用数据包中获取与第一标签标识对应的有效值中的每一组子成员的成员有效值,根据获取到的所有成员有效值得到首包第一应用数据,保存首包第一应用数据;
所述第九获取单元,用于当所述第一判断单元判断数据包为非首包第一应用数据包后,从所述第一应用数据包中获取每一组子数据中的有效值,根据获取到的所有有效值得到非首包第一应用数据。
29.根据权利要求26所述的JAVA卡,其特征在于,所述第五判断模块,具体用于判断所述JAVA卡的第一标识是否为第一预设值,如果是,则判断所述数据包为非首包第二应用数据包;否则,判断所述数据包不为非首包第二应用数据包。
30.根据权利要求26所述的JAVA卡,其特征在于,所述第三判断模块包括:第十获取单元、第十一获取单元、第六判断单元、第一报错单元、第一设置单元、第二设置单元、第十二获取单元、第一更新单元和第七判断单元;
所述第十获取单元,用于当所述第二判断单元判断出数据包为首包第二应用数据包后,根据下载应用指令获取第二应用数据总长度;
所述第十一获取单元,用于当所述第二判断单元判断出数据包为首包第二应用数据包后,根据下载应用指令获取首包第二应用数据长度;
所述第六判断单元,用于判断首包第二应用数据长度和第二应用数据总长度的大小;若首包第二应用数据长度小于第二应用数据总长度,则判断出所述第二应用数据包不为最后一包;若首包第二应用数据长度等于第二应用数据总长度,则判断出所述第二应用数据包为最后一包;
所述第一设置单元,用于当所述第六判断单元判断出所述第二应用数据包不为最后一包后,将自身的第一标识设置为第一预设值;
所述第二设置单元,用于当所述第六判断单元判断出所述第二应用数据包不为最后一包后,根据首包第二应用数据长度设置自身的累计长度;
所述第十二获取单元,用于当所述第五判断模块判断出所述第一获取模块获取到的数据包是非首包第二应用数据包后,根据非首包第二应用数据包获取非首包第二应用数据长度;
所述第一更新单元,用于根据所述非首包第二应用数据长度与所述累计长度的和更新所述累计长度;
所述第七判断单元,用于判断累计长度和第二应用数据总长度的大小;若累计长度小于第二应用数据总长度,则判断出所述第二应用数据包不为最后一包;若累计长度等于第二应用数据总长度,则判断出所述第二应用数据包为最后一包;
所述第一报错单元,用于当第六判断单元判断出首包第二应用数据长度大于第二应用数据总长度时,向终端报错;当第七判断单元判断出累计长度大于第二应用数据总长度时,将累计长度、第二应用数据总长度和第一预设标识设置为第三预设值,向终端报错。
31.根据权利要求30所述的JAVA卡,其特征在于,所述第十获取单元具体包括:第一获取子单元和第二获取子单元;
所述第一获取子单元,用于根据下载应用指令中的首包第二应用数据包获取调试组件总长度,根据下载应用指令中的首包第二应用数据包获取调试组件参数长度;
所述第二获取子单元,用于计算调试组件总长度与调试组件参数长度的差值,将所述差值作为第二应用数据总长度;
所述第十一获取单元,具体用于当所述第二判断单元判断出数据包为首包第二应用数据包后,获取下载应用指令的数据域长度,根据下载应用指令中的首包第二应用数据包获取调试组件参数长度,将下载应用指令的数据域长度减去调试组件参数长度、再减去第一预设长度的值作为首包第二应用数据长度;
所述第十二获取单元,具体用于当所述第五判断模块判断出所述第一获取模块获取到的数据包是非首包第二应用数据包后,将非首包第二应用数据包中所有数据的长度之和作为非首包第二应用数据包长度。
32.根据权利要求31所述的JAVA卡,其特征在于,所述第一获取子单元,具体用于在所述下载应用指令中的首包第二应用数据包中获取与第二标签标识对应的长度值,将获取到的数据作为调试组件总长度;在所述下载应用指令中的首包第二应用数据包中获取与第二标签标识对应的有效值,在与所述第二标签标识对应的有效值中获取调试组件参数长度。
33.根据权利要求26所述的JAVA卡,其特征在于,所述第四判断模块,具体用于获取下载应用指令的指令头中的第三字节上的数据,判断该数据是否为第四预设值,如果是,则判断出第一应用数据包为最后一包;否则,判断出第一应用数据包不为最后一包。
34.根据权利要求25或30所述的JAVA卡,其特征在于,还包括:第一设置模块;
所述第一设置模块,用于当所述第三判断模块判断出所述第二应用数据包为最后一包后,将所述JAVA卡的第一标识设置为第二预设值;
所述第二判断模块,具体用于当所述第五获取模块得到第一应用数据后,判断所述JAVA卡的第一标识是否为第二预设值,如果是,则判断出第二应用已下载完成;否则,判断出第二应用数据没有下载完成。
35.根据权利要求19所述的JAVA卡,其特征在于,还包括:第四接收模块、第八获取模块、第一签名模块、第一组织模块、第四发送模块、第五接收模块、第九获取模块、第二签名模块、第一校验模块和第五发送模块;
所述第四接收模块,用于接收来自终端的更新初始化指令;
所述第八获取模块,用于从所述第四接收模块接收到的所述更新初始化指令中获取终端随机数;
所述第一签名模块,用于使用所述JAVA卡的第一密钥对包括所述终端随机数和所述JAVA卡生成的卡随机数的第一拼接数据进行签名得到第一签名数据;
所述第一组织模块,用于组织包括所述第一签名模块得到的第一签名数据和所述JAVA卡生成的卡随机数的更新初始化应答;
所述第四发送模块,用于向所述终端返回所述第一组织模块组织的更新初始化应答;
所述第五接收模块,用于接收来自所述终端的外部认证命令;
所述第九获取模块,用于从所述第五接收模块接收到的外部认证命令中获取外部认证命令头、第三签名值和第一校验值;
所述第二签名模块,用于使用所述JAVA卡的第一密钥对包括终端随机数和所述JAVA卡的卡随机数的第五拼接数据进行签名得到第四签名数据;
所述第一校验模块,用于使用所述JAVA卡的第二密钥对包括外部认证命令头、第四签名数据和第二填充数据的第六拼接数据进行签名得到第二校验值;判断第一校验值和第二校验值是否匹配;
所述第五发送模块,用于当所述第一校验模块判断为是后,向所述终端返回外部认证成功应答;当所述第一校验模块判断为否后,向所述终端返回外部认证失败应答。
36.根据权利要求35所述的JAVA卡,其特征在于,还包括:第六接收模块、初始化模块和第六发送模块;
所述第六接收模块,用于接收来自所述终端的下载初始化指令;
所述初始化模块,用于进行下载初始化操作;
所述第六发送模块,用于向所述终端返回初始化应答。
CN201810883077.6A 2018-08-06 2018-08-06 一种java卡下载应用的方法及java卡 Active CN109240711B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810883077.6A CN109240711B (zh) 2018-08-06 2018-08-06 一种java卡下载应用的方法及java卡

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810883077.6A CN109240711B (zh) 2018-08-06 2018-08-06 一种java卡下载应用的方法及java卡

Publications (2)

Publication Number Publication Date
CN109240711A true CN109240711A (zh) 2019-01-18
CN109240711B CN109240711B (zh) 2021-12-14

Family

ID=65069984

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810883077.6A Active CN109240711B (zh) 2018-08-06 2018-08-06 一种java卡下载应用的方法及java卡

Country Status (1)

Country Link
CN (1) CN109240711B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030188128A1 (en) * 2002-04-02 2003-10-02 Francis Hedley James Executing stack-based instructions within a data processing apparatus arranged to apply operations to data items stored in registers
CN101430662A (zh) * 2008-12-09 2009-05-13 东信和平智能卡股份有限公司 Java语言程序与虚拟机程序共同调试的方法
CN101986740A (zh) * 2010-09-14 2011-03-16 中国联合网络通信集团有限公司 一种java卡
CN102184374A (zh) * 2011-03-24 2011-09-14 北京握奇数据系统有限公司 一种基于Java智能卡下载文件的方法及装置
CN102521626A (zh) * 2011-11-30 2012-06-27 北京握奇数据系统有限公司 一种智能卡的多应用管理方法和系统
CN103095460A (zh) * 2013-01-22 2013-05-08 飞天诚信科技股份有限公司 一种智能卡安全通讯的方法
CN103559073A (zh) * 2013-10-28 2014-02-05 飞天诚信科技股份有限公司 一种基于Java卡的数据管理方法
CN104202369A (zh) * 2014-08-19 2014-12-10 西安邮电大学 一种新型智能卡多应用授权发卡系统
CN105812370A (zh) * 2016-03-16 2016-07-27 中国联合网络通信集团有限公司 智能卡处理方法、装置及系统
CN107844821A (zh) * 2017-09-22 2018-03-27 深圳市文鼎创数据科技有限公司 智能卡及其控制方法、计算机可读存储介质

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030188128A1 (en) * 2002-04-02 2003-10-02 Francis Hedley James Executing stack-based instructions within a data processing apparatus arranged to apply operations to data items stored in registers
CN101430662A (zh) * 2008-12-09 2009-05-13 东信和平智能卡股份有限公司 Java语言程序与虚拟机程序共同调试的方法
CN101986740A (zh) * 2010-09-14 2011-03-16 中国联合网络通信集团有限公司 一种java卡
CN102184374A (zh) * 2011-03-24 2011-09-14 北京握奇数据系统有限公司 一种基于Java智能卡下载文件的方法及装置
CN102521626A (zh) * 2011-11-30 2012-06-27 北京握奇数据系统有限公司 一种智能卡的多应用管理方法和系统
CN103095460A (zh) * 2013-01-22 2013-05-08 飞天诚信科技股份有限公司 一种智能卡安全通讯的方法
CN103559073A (zh) * 2013-10-28 2014-02-05 飞天诚信科技股份有限公司 一种基于Java卡的数据管理方法
CN104202369A (zh) * 2014-08-19 2014-12-10 西安邮电大学 一种新型智能卡多应用授权发卡系统
CN105812370A (zh) * 2016-03-16 2016-07-27 中国联合网络通信集团有限公司 智能卡处理方法、装置及系统
CN107844821A (zh) * 2017-09-22 2018-03-27 深圳市文鼎创数据科技有限公司 智能卡及其控制方法、计算机可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
杨小宝等: "一种新型智能卡多应用授权发卡系统", 《西安邮电大学学报》 *
赵磊: "Java卡性能优化技术研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Also Published As

Publication number Publication date
CN109240711B (zh) 2021-12-14

Similar Documents

Publication Publication Date Title
CN107480986B (zh) 一种利用硬件实现数字货币钱包的方法及硬件钱包
CN106934619B (zh) 一种交易记录的方法及系统
CN107346252A (zh) 应用更新方法和装置
CN109800029A (zh) 批量设定服务器bios参数的方法、装置、终端及存储介质
CN107341109A (zh) 一种测试数据的生成方法和系统
CN107943707A (zh) 行为树的测试方法、装置和存储介质以及终端
CN106407203A (zh) 一种对目标终端进行识别的方法和设备
CN106331009A (zh) 一种应用程序下载方法、装置及系统
CN106792699A (zh) 一种无线保真Wi‑Fi连接方法及移动终端
CN109376042A (zh) 串口测试方法、装置、通讯管理机和存储介质
CN107357721B (zh) 测试系统的方法及装置
CN111966551A (zh) 远程命令执行结果的校验方法、系统、终端及存储介质
CN106934310B (zh) 一种测试智能卡的方法及读卡器
CN111538515A (zh) 一种电能表程序的升级方法、装置和设备
CN107957871A (zh) 一种基于jsr303的前后端同步正则校验方法
CN109240711A (zh) 一种java卡下载应用的方法及java卡
CN107229958A (zh) 一种智能ic卡数据检测方法及装置
CN109918338A (zh) 安全芯片操作系统测试装置
CN112329273B (zh) 一种提升芯片验证效率的方法、装置、存储介质和终端
CN112235782B (zh) 一种防止手机刷量的方法及系统
CN109041049A (zh) 一种移动终端的寻址方法、寻址装置及终端设备
CN107678807A (zh) 一种软件实现状态机的方法及装置
CN109802760A (zh) 数据的存储方法及装置,数据的解码方法
CN106610899B (zh) 一种测试用例生成方法及装置
CN105871557B (zh) 电子邮件签名方法、装置及系统

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