一种转换命令模式的方法及装置的制作方法

文档序号:6443924阅读:128来源:国知局
专利名称:一种转换命令模式的方法及装置的制作方法
技术领域
本发明涉及智能卡领域,特别涉及一种在JAVA环境下转换命令模式的方法及装置。
背景技术
现有技术中,对智能卡中的应用进行调试和测试时,一般是通过用户将数据一条条地输入到智能卡虚拟机中,然后智能卡虚拟机对数据进行处理,最终输出处理结果,从而达到调试和测试智能卡中应用的目的。实际中,在用户需要输入数据之前,必须将数据组织为智能卡可执行的命令,而在实际的调试和测试过程中,这样发送数据前的组织过程和智能卡执行单条命令的过程是极其耗时和繁琐的。智能卡可执行的命令包含命令头和命令体两部分,其中命令头部分为必要部分,包括指令类别字节(CLA)、指令代码字节(INQ、指令参数字节(P1、P2);命令体部分包括长度字段(Lc)、数据字段(Data)、长度字段(Le),长度字段(Lc)的值由数据字段的长度确定,数据字段为发送的字节串,长度字段(Le)为APDU的响应命令中数据字段的期望的字节最大数;智能卡可执行的命令格式具体为CLA INS Pl P2 Lc Data Le0

发明内容
鉴于现有技术的不足,为了有效的解决现有技术的不足,本发明提出了一种转换命令模式的方法及装置。本发明提供一种转换命令模式的方法,包括步骤A 装置对接收到的数据按照空格进行拆分;步骤B 所述装置判断拆分得到的第一个数据段的首字符是否符合第一预定义字符,是则执行步骤C,否则执行步骤E ;步骤C:所述装置删除所述第一个数据段的首字符,获取文件名为所述删除首字符的第一个数据段的文件内容,并将所述获取的非空文件内容发送给脚本解析器进行解析;步骤D 所述装置接收所述脚本解析器返回的解析结果,返回步骤A ;步骤E 所述装置判断所述第一个数据段是否与第二预定义字符串相同,是则执行步骤F,否则结束;步骤F 所述装置判断在预定义命令名的集合中是否有与所述第一个数据段相同的命令名,是则执行步骤G,否则结束;步骤G 所述装置判断所述第一个数据段对应的命令是否为智能卡不可执行的命令,是则将所述接收到的数据中除所述第一个数据段之外的参数值存储在缓冲器中,否则按照所述第一数据段对应的智能卡命令进行下一步操作。其中,所述步骤C具体包括步骤Cl 所述装置删除所述第一个数据段的首字符;
步骤C2 所述装置从应用平台的目录中获取文件名为所述删除首字符的第一个数据段的文件内容;步骤C3 所述装置判断所述文件内容是否为空,是则结束,否则将所述文件内容发送给脚本解析器进行处理。其中,所述步骤D具体包括步骤Dl 所述装置接收所述脚本解析器返回的解析结果,判断所述解析结果是否为空,是则结束,否则执行步骤D2 ;步骤D2 所述装置判断所述解析结果中是否有多行数据,是则将第一行数据作为当前数据开始处理,顺序执行步骤D3,否则返回步骤A ;步骤D3:所述装置将当前数据进行拆分,得到多个数据段,顺序执行步骤B-步骤G的操作;步骤D4:所述装置判断是否处理完所述接收到的解析结果,是则调用函数将处理结果以显示方式输出,否则将下一行数据作为当前数据,返回步骤D3。其中,所述步骤G中所述装置判断所述第一个数据段对应的命令是否为智能卡不可执行的命令具体为判断所述第一个数据段对应的命令中是否包含第一预设标识。其中,所述步骤G中的按照所述第一数据段对应的智能卡命令进行下一步操作包括步骤S2 所述装置根据所述接收到的数据生成符合预设格式的数据,并将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理,顺序执行步骤S6 ;或步骤S3 所述装置将所述接收到的数据中除所述第一个数据段之外的其他数据发送给与所述装置连接的智能卡虚拟机进行处理,顺序执行步骤S6 ;或步骤S4 所述装置根据指令类别字节、指令代码字节和第二参数值、第一参数值和第二随机数生成符合预设格式的数据,并将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理,顺序执行步骤S6 ;或步骤S5 所述装置根据接收到的数据生成第二数据,根据所述第二数据生成校验数据,根据所述第二数据和校验数据生成符合预设格式的数据并发送给与所述装置连接的智能卡虚拟机进行处理,顺序执行步骤S6 ;步骤S6 所述装置接收所述智能卡虚拟机返回的处理结果,并调用函数在应用平台上显示所述处理结果。其中,在所述步骤S2之前还包括步骤Sl 所述装置检测所述第一个数据段对应的智能卡命令的类型,如是第一预定义类型,则执行步骤S2 ;如是第二预定义类型,则执行步骤S3 ;如是第三预定义类型,则执行步骤S4 ;如是第四预定义类型,则执行步骤S5。其中,所述步骤S2包括所述装置生成第一随机数,将所述第一随机数作为数据字段值;从所述接收到的数据中获取第一参数值,根据所述第一个数据段对应的命令设置指令类别字节、指令代码字节和第二参数值,根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述第一随机数生成符合预设格式的数据;所述装置判断是否已与智能卡虚拟机建立连接,是则将所述符合预设格式的数据发送给所述智能卡虚拟机;否则与智能卡虚拟机建立连接,并判断连接是否成功,如成功则将所述符合预设格式的数据发送给所述智能卡虚拟机进行处理,如未成功则结束。其中,所述步骤S3包括所述装置判断是否已与智能卡虚拟机建立连接,是则将所述接收到的数据中除所述第一个数据段的其他数据发送给所述智能卡虚拟机;否则与智能卡虚拟机建立连接,并判断连接是否成功,如成功则将所述接收到的数据中除所述第一个数据段的其他数据发送给所述智能卡虚拟机进行处理,如未成功则结束。其中,所述步骤S4包括所述装置生成所述第二随机数,将所述第二随机数作为数据字段值,根据所述接收到的数据中的参数从所述第一缓存器中获取所述第一参数值,根据所述第一个数据段对应的命令设置所述指令类别字节、所述指令代码字节和所述第二参数值,根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述第二随机数生成符合预设格式的数据;所述装置判断是否已与所述智能卡虚拟机建立连接,是则将所述符合预设格式的数据发送给所述智能卡虚拟机;否则与智能卡虚拟机建立连接,并判断连接是否成功,如成功则将所述符合预设格式的数据发送给所述智能卡虚拟机进行处理,如未成功则结束。其中,所述步骤S6中所述装置接收处理结果与调用函数将所述处理结果以显示方式输出之间包括步骤S61 所述装置接收处理结果并存储到第二缓存器中,根据第一填充数据、所述处理结果中的密钥版本号和所述智能卡虚拟机生成的计数值,生成安全会话密钥基本密钥;步骤S62 所述装置根据所述第二随机数、第二填充数据、所述智能卡虚拟机生成的计数值和所述处理结果中的智能卡虚拟机生成的随机数,生成验证源数据;步骤S63 所述装置使用所述安全会话密钥基本密钥对所述验证源数据进行加密,生成验证数据;步骤S64 所述装置判断所述验证数据是否与所述处理结果中的密文信息相符,是则将所述处理结果以显示方式输出,否则结束。其中,所述步骤S61包括所述装置生成所述第一填充数据;所述装置根据所述处理结果中的密钥版本号获取常数值;所述装置从所述第二缓存器中获取智能卡虚拟机生成的计数值,根据所述计数值、所述常数值和所述第一填充数据生成安全会话密钥基本密钥。其中,所述步骤S62包括所述装置生成所述第二随机数和第二填充数据;所述装置从所述第二缓存器中获取所述智能卡虚拟机生成的计数值和所述智能卡虚拟机生成的随机数;所述装置根据所述第二随机数、所述第二填充数据、所述计数值和所述智能卡虚拟机生成的随机数生成验证源数据。其中,所述步骤S64中所述装置判断所述验证数据是否与所述处理结果中的密文信息相符,包括所述装置从所述第二缓存器中获取所述密文信息,判断所述验证源数据中的最后8个字节数据是否与所述密文信息相同。其中,所述步骤S5包括步骤S51 所述装置从第二缓存器中获取密钥版本号和智能卡虚拟机生成的计数值,根据第三填充数据、所述密钥版本号和所述计数值生成安全会话密钥的基本密钥和命令消息识别码会话密钥的基本密钥;步骤S52 所述装置使用预先存储的第一基础密钥分别对所述安全会话密钥的基本密钥和所述命令消息识别码会话密钥的基本密钥进行加密,生成安全会话密钥和命令消息识别码会话密钥;步骤S53 所述装置从所述第二缓存器中获取所述智能卡虚拟机生成的计数值和所述智能卡虚拟机生成的随机数,根据生成的第三随机数和第四填充数据、所述计数值和所述智能卡虚拟机生成的随机数生成第一数据;步骤S54 所述装置使用所述安全会话密钥对所述第一数据进行加密,生成卡外密文数据;步骤S55 所述装置根据第一个数据段对应的命令设置指令类别字节、指令代码字节和参数,根据所述卡外密文数据、所述指令类别字节、所述指令代码信字节和所述参数生成第二数据;步骤S56 所述装置对所述第二数据进行转化处理生成新第二数据,对所述新第二数据进行填充生成第三数据;步骤S57 所述装置使用所述命令消息识别码会话密钥对所述第三数据进行加密,生成校验数据;步骤S58 所述装置根据所述新第二数据和所述校验数据,生成符合预设格式的数据;步骤S59 所述装置判断是否已与智能卡虚拟机建立连接,是则将所述符合预设格式的数据发送给所述智能卡虚拟机;否则与智能卡虚拟机建立连接,并判断连接是否成功,如成功则将所述符合预设格式的数据发送给所述智能卡虚拟机进行处理,如未成功则结束。其中,所述步骤S51具体包括所述装置生成第三填充数据;从所述第二存储器中获取密钥版本号和智能卡虚拟机生成的计数值;根据所述密钥版本号获取对应的第一常数值和第二常数值;所述装置根据所述第一常数值、所述计数值和所述第三填充数据生成安全会话密钥基本密钥,所述装置根据所述第二常数值、所述计数值和所述第三填充数据生成命令消息识别码会话密钥的基本密钥。其中,所述S55具体包括所述装置将所述卡外密文数据作为数据字段值;所述装置根据所述第一个数据段对应的命令分别设置指令类别字节、指令代码字节、第二参数值;所述装置根据接收到的数据中的参数设置第一参数值;所述装置根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述卡外密文数据生成所述第二数据。其中,所述S56具体包括所述装置将所述第二数据中的指令类别字节对应的二进制数中由低位到高位的第三位置为1,生成所述新二进制数,将所述新二进制数转化为十六进制数,将所述十六进制数代替所述第二数据中的指令类别字节生成所述新第二数据;所述装置对所述新第二数据进行填充,生成第三数据。本发明又提供一种转换命令模式的装置,包括接收模块用于接收用户输入的数据、脚本解析器返回的解析结果、虚拟机返回的处理结果;拆分模块用于对所述接收到的数据按照空格进行拆分,得到多个数据段;第一判断模块用于判断拆分得到的第一个数据段的首字符是否符合第一预定义字符;删除模块用于删除所述第一个数据段的首字符;第一获取模块用于获取文件名为所述删除首字符的第一个数据段的文件;第二判断模块用于判断所述文件内容是否为空;发送模块用于将所述非空文件内容发送给脚本解析器进行解析;第三判断模块用于在第一个数据段的首字符不符合第一预定义字符时,判断所述第一个数据段是否与第二预定义字符串相同;当所述第一个数据段与第二预定义字符串相同时,判断在预定义命令名的集合中是否有与所述第一个数据段相同的命令名;在预定义命令名的集合中有与所述第一个数据段相同的命令名时,判断所述第一个数据段对应的命令是否为智能卡不可执行的命令;存入模块用于在所述第一个数据段对应的命令为智能卡不可执行的命令时,将所述接收到的数据中的参数值存储在缓冲器中;处理模块用于在所述第一个数据段对应的命令为智能卡命令时进行下一步操作;输出模块用于调用函数将接收到的数据在应用平台上显示输出。其中,所述装置还包括第四判断模块用于判断接收到的所述解析结果是否为空;在所述解析结果不为空时判断所述解析结果中是否有多行数据,判断是否处理完所述接收到的解析结果。其中,所述处理模块还包括检测子模块用于在所述第一个数据段对应的命令为智能卡命令时,检测所述第一个数据段对应的智能卡命令的类型;第一生成发送子模块用于在所述第一个数据段对应的智能卡命令的类型是第一预定义类型时,根据所述接收到的数据生成符合预设格式的数据,将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理;第一发送子模块用于在所述第一个数据段对应的智能卡命令的类型是第二预定义类型时,将所述接收到的数据中除所述第一个数据段的其他数据发送给与所述装置连接的智能卡虚拟机进行处理;第二生成发送子模块用于在所述第一个数据段对应的智能卡命令的类型是第三预定义类型时,根据指令类别字节、指令代码字节和第二参数值、第一参数值和第二随机数生成符合预设格式的数据,将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理;第三生成发送子模块用于在所述第一个数据段对应的智能卡命令的类型是第四预定义类型时,根据接收到的数据生成第二数据,根据所述第二数据生成校验数据,根据所述第二数据和校验数据生成符合预设格式的数据,将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理;第一判断子模块用于判断所述装置是否已与智能卡虚拟机建立连接;建立判断子模块用于在所述装置未与智能卡虚拟机建立连接时,与智能卡虚拟机建立连接并判断连接是否成功。其中,所述第一生成发送子模块包括第一生成单元用于生成第一随机数,将所述第一随机数作为数据字段值;第一获取单元用于从所述接收到的数据中获取第一参数值;第一设置单元用于根据所述第一个数据段对应的命令设置指令类别字节、指令代码字节和第二参数值;第二生成单元用于根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述第一随机数生成符合预设格式的数据;第一发送单元用于将所述第二生成单元生成的符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理。其中,所述第二生成发送子模块包括第三生成单元用于生成第二随机数,将所述第二随机数作为数据字段值;第二获取单元用于根据所述接收到的数据中的参数从所述第一缓存器中获取第
一参数值;第二设置单元用于根据所述第一个数据段对应的命令设置指令类别字节、指令代码字节和第二参数值;第四生成单元用于根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述第二随机数生成符合预设格式的数据;第二发送单元用于将所述第四生成单元生成的符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理。其中,所述装置还包括第二缓存器;所述处理模块还包括第一接收子模块用于在所述第二生成发送子模块将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理后,接收所述智能卡虚拟机返回的处理结果;第二存入子模块用于将所述接收到的智能卡虚拟机返回的处理结果存储到所述
第二缓存器中;第四生成子模块用于根据第一填充数据、所述处理结果中的密钥版本号和智能卡虚拟机生成的计数值,生成安全会话密钥基本密钥;根据所述第二随机数、第二填充数据、所述智能卡虚拟机生成的计数值和所述处理结果中的智能卡虚拟机生成的随机数,生成验证源数据;
第一加密子模块用于使用所述安全会话密钥基本密钥对所述验证源数据进行加密,生成验证数据;第二判断子模块用于判断所述验证数据是否与所述处理结果中的密文信息相符。其中,所述第四生成子模块包括第五生成单元用于生成所述第一填充数据;第三获取单元用于根据所述处理结果中的密钥版本号获取常数值;从所述第二缓存器中获取智能卡虚拟机生成的计数值;第六生成单元用于根据所述计数值、所述常数值和所述第一填充数据生成安全会话密钥基本密钥;第七生成单元用于生成所述第二随机数和第二填充数据;第四获取单元用于从所述第二缓存器中获取智能卡虚拟机生成的计数值和智能卡虚拟机生成的随机数;第八生成单元用于根据所述第二随机数、所述第二填充数据、所述计数值和所述智能卡虚拟机生成的随机数生成验证源数据。其中,所述第二判断子模块包括第五获取单元用于从所述第二缓存器中获取所述密文信息;第一判断单元用于判断所述验证源数据中的最后8个字节数据是否与所述密文信息相同。其中,所述第三生成发送子模块包括第六获取单元用于从所述第二缓存器中获取密钥版本号和智能卡虚拟机生成的计数值;第九生成单元用于根据第三填充数据、所述密钥版本号和所述计数值生成安全会话密钥的基本密钥和命令消息识别码会话密钥的基本密钥;第一加密单元用于所述装置使用预先存储的第一基础密钥分别对所述安全会话密钥的基本密钥和所述命令消息识别码会话密钥的基本密钥进行加密,生成安全会话密钥和命令消息识别码会话密钥;第七获取单元用于从所述第二缓存器中获取所述智能卡虚拟机生成的计数值和所述智能卡虚拟机生成的随机数;第十生成单元用于根据第三随机数和第四填充数据、所述计数值和所述智能卡虚拟机生成的随机数生成第一数据;第二加密单元用于使用所述安全会话密钥对所述第一数据进行加密,生成卡外密文数据;设置生成单元用于根据第一个数据段对应的命令设置指令类别字节、指令代码字节和参数,根据所述卡外密文数据、所述指令类别字节、所述指令代码信字节和所述参数生成第二数据;转化填充单元用于对所述第二数据进行转化处理生成新第二数据,对所述新第二数据进行填充生成第三数据;第三加密单元用于使用所述命令消息识别码会话密钥对所述第三数据进行加密,生成校验数据;
第十一生成单元用于根据所述新第二数据和所述校验数据,生成符合预设格式的数据;第三发送单元用于将所述第十一生成单元生成的符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理。其中,所述设置生成单元包括第一设置子单元用于将所述卡外密文数据作为数据字段值;第二设置子单元用于根据第一个数据段对应的命令分别设置指令类别字节、指令代码字节、第二参数值;所述装置根据接收到的数据中的参数设置第一参数值;第一生成子单元用于根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述卡外密文数据生成第二数据。其中,所述转化填充单元包括第二生成子单元用于将所述第二数据中的指令类别字节对应的二进制数中由低位到高位的第三位置为1,生成所述新二进制数;转化子单元用于将所述新二进制数转化为十六进制数;第三生成子单元用于将所述十六进制数代替所述第二数据中的指令类别字节生成所述新第二数据;第四生成子单元用于对所述新第二数据进行填充,生成第三数据。本发明与现有技术相比,具有以下优点本发明提供了一种转换命令模式的方法及装置,用户可根据需要,输入不同类型的数据,通过装置对不同类型数据的处理,生成智能卡可运行的命令,并发送给与其连接的智能卡虚拟机进行处理。本发明提供的方法及装置在很大程度上缩短了调试智能卡中应用的时间,从而提高了测试智能卡的效率。


图1为本发明实施例一提供的一种转换命令模式的方法流程图;图2为本发明实施例二提供的一种插件处理脚本文件的方法流程图;图3为本发明实施例三提供的一种插件对脚本解析器返回结果进行处理的方法流程图;图4为本发明实施例四提供的一种插件对与智能卡可执行命令对应的数据进行处理的方法流程图;图5为本发明实施例五提供的一种插件对与智能卡不可执行命令对应的数据进行处理的方法流程图;图6为本发明实施例六提供的一种插件将接收的数据转化成智能卡可执行的命令(APDU)格式的方法流程图;图7为本发明实施例七提供的另一种插件将接收的数据组织成智能卡可执行的命令(APDU)格式的方法流程图;图8为本发明实施例八提供的一种转化命令模式的装置方框示意图;图9为图8中的处理模块的一种实现方式的方框示意图;图10为图9的处理模块中的第一生成发送子模块的方框示意图11为图9的处理模块中的第二生成发送子模块的方框示意图;图12为图8中的处理模块的另一种实现方式的方框示意图;图13为图12中的处理模块中的第四生成子模块的方框示意图;图14为图12中的处理模块中的第二判断子模块的方框示意图;图15为图12中的处理模块中的第三生成发送子模块的方框示意图;图16为图15中的第三生成发送子模块中的设置生成单元的方框示意图;图17为图15中的第三生成发送子模块中的转化填充单元的方框示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例一本发明实施例一提供了一种转换命令模式的方法,插件将接收到的数据进行解析处理,转化成智能卡虚拟机可执行的命令。在本发明实施例一中,用户启动应用平台(eclipse)后,应用平台(eclipse)调用接口(ILaunchConfigurationDelegate),同时运行该接口 (ILaunchConfigurationDelegate)中的函数(Launch),在运行函数(Launch)时力口载插件,插件运行时通过侦听接口(addFocusListener)侦听用户输入的数据,通过显示接口(setText)在应用平台上显示运行结果。参见图1,包括步骤101 插件接收到数据后,对其按照空格进行拆分,得到多个数据段;具体地,在本实施例中,侦听接口(addFocusListene)将侦听到数据发送给插件,插件调用显示接口(setText)将其显示在应用平台上;步骤102 插件判断拆分得到的第一个数据段的首字符是否符合第一预定义字符,是则执行步骤103,否则执行步骤106 ;在本实施例中,第一预定义字符根据用户需要进行设置;优选的,本实施例中的第一预定义字符设置为@ ;如第一个数据段的首字符是@,则接收到的数据是与脚本解析器进行交互的数据,如第一数据段的首字符不是@,则接收到的数据是插件自身处理的数据或与智能卡虚拟机进行交互的数据;步骤103 插件删除第一个数据段的首字符;步骤104 插件获取文件名为删除首字符的第一个数据段的文件内容,并将读取的文件内容发送给脚本解析器进行解析;本实施例中,步骤104的具体实现过程在实施例二中进行详细描述;步骤105 插件接收脚本解析器返回的解析结果,通过调用显示接口将处理结果显示在应用平台上,返回步骤101 ;优选的,本实施例中,脚本解析器的处理结果为get-status数据,步骤105的具体实现过程详见实施例三;步骤106 插件判断第一个数据段是否与第二预定义字符串相同,是则执行步骤107,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;步骤107 插件判断在预定义命令名的集合中是否有与第一个数据段相同的命令名,是则执行步骤108 ;否则通过调用显示接口在应用平台上显示错误代码信息,结束;步骤108 插件判断第一个数据段对应的命令是否为智能卡不可执行的命令,是则执行步骤109,否则执行步骤110 ;本实施例中,步骤108具体为插件判断第一数据段对应的命令中是否包含第一预设标识,是则接收到的数据为插件自身处理的数据,否则接收到的数据为与智能卡虚拟机交互的数据;本实施例中的第一预设标识具体为var ;步骤109 插件根据第一个数据段对应的智能卡不可执行的命令进行相应处理,顺序执行步骤111 ;本实施例中步骤109的具体实现过程以set-var为例,在实施例五中进行详细说明;步骤110 插件根据第一个数据段对应的智能卡命令进行相应处理,顺序执行步骤 111 ;本实施例中的步骤 110 中以 get-status、/send、init—update 禾口 ext—auth 为例,在实施例三、实施例四、实施例六和实施例七中进行进一步的详述;步骤111 插件通过调用显示接口将处理结果显示在应用平台上。实施例二本发明实施例二提供一种插件处理脚本文件的方法,以scriptname为例进行说明,参见图2,包括步骤201:插件接收数据;具体地,在本实施例中,插件接收的数据为=Oscriptname ;步骤202 插件对当前数据按空格进行拆分,生成多个数据段;步骤203 插件判断第一个数据段的首字符是否为第一预定义字符,是则执行步骤204,否则执行步骤210 ;具体的,本实施例中的第一预定义字符为@ ;步骤204 插件删除第一个数据段的首字符;相应地,在本实施例中,删除首字符@后的数据为=Scriptname ;步骤205 插件从应用平台的目录中获取文件名为删除首字符的第一数据段的文件内容;具体地,在本实施例中,步骤205具体为插件在应用平台(eclipse)的当前目录下获取文件名称为scriptname的文件中的内容;步骤206 插件判断获取的文件内容是否为空,是则插件通过调用显示接口在应用平台上显示错误代码信息,结束,否则执行步骤207 ;步骤207 插件将文件内容发送给脚本解析器进行解析;步骤208 插件接收脚本解析器返回的解析结果,判断解析结果是否为空,是则插件通过调用显示接口在应用平台上显示错误代码信息,结束,否则执行步骤209 ;步骤209 插件通过调用显示接口在应用平台上显示接收到的解析结果,继续执行后续操作;
本实施例中的后续操作在实施例三中进行详细说明;步骤210:插件判断第一数据段是否为与第二预定义字符串,是则执行步骤211,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;本实施例中的第二预定义字符串为 get-status、init—update、ext—auth、/send或 set-var ;步骤211 插件判断在预定义命令名的集合中是否有与第一个数据段相同的命令名,是则执行步骤212,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;步骤212 插件判断第一数据段对应的命令是否为智能卡不可执行的命令,是则执行步骤213,否则执行步骤214 ;步骤213 插件根据第一数据段对应的智能卡不可执行的命令进行相应处理,顺序执行步骤215;本实施例中步骤213的具体实现过程以set-var为例,在实施例五中进行详细说明;步骤214 插件根据第一数据段对应的智能卡命令进行相应处理,顺序执行步骤215 ;本实施例中的步骤 214 中以 get-status、/send、init—update 禾口 ext—auth 为例,在实施例三、实施例四、实施例六和实施例七中进行进一步的详述;步骤215 插件通过调用显示接口将处理结果显示在应用平台上。实施例三参见图3,为本发明实施例三提供的插件处理脚本解析器返回结果的方法流程图,以脚本解析器返回结果为"get-status 80 ;get-status 40 ;get_status20 ;get-status10”为例进行详细说明,如图3所示,包括步骤301 插件接收脚本解析器返回的处理结果,判断解析结果中是否有多行数据,是则执行步骤302 ;否则执行步骤303 ;步骤302 插件将第一行数据作为当前数据开始处理;具体的,本实施例中,解析结果为get-status 80get-status 40get-status 20get-status 10;步骤303 插件对当前数据按空格进行拆分,生成多个数据段;步骤304:插件判断第一个数据段的首字符不是第一预定义字符后,判断第一数据段是否为第二预定义字符串,是则执行步骤305,否则通过调用显示接口在应用平台上显示错误代码信息,结束;具体的,本实施例中的第二预定义字符串为get-status ;步骤305 插件判断在预定义命令名的集合中是否有与第一个数据段相同的命令名,是则执行步骤306,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;
步骤306 插件判断第一数据段对应的命令是否为智能卡不可执行的命令,是则执行步骤307,否则执行步骤308 ;步骤307 插件根据第一数据段对应的智能卡不可执行命令进行相应操作,并通过调用显示接口将处理结果显示在应用平台上;本实施例中步骤307的具体实现过程在实施例五中进行详述;步骤308 插件检测第一数据段对应的命令类型,如是ext-auth mac命令,则执行步骤309,如是init-update version命令,则执行步骤310,如是/send命令,则执行步骤311,如是get-status命令,则执行步骤312 ;步骤309 插件根据ext-auth mac命令进行相应处理;本实施例中步骤309的具体实现过程在实施例七中进行详述;步骤310 插件根据init-update version命令进行相应处理;本实施例中步骤310的具体实现过程在实施例六中进行详述;步骤311 插件根据/send命令进行相应处理;本实施例中步骤311的具体实现过程在实施例四中进行详述;步骤312 插件根据第一数据段对应的命令设置指令类别字节、指令代码字节和参数值,根据指令类别字节、指令代码字节、参数值和插件产生的随机数,生成APDU格式的数据;在本实施例中,生成APDU格式的数据的具体过程为al 插件生成第一随机数,将第一随机数作为数据字段(Data)值;在本实施例中,插件产生的第一随机数具体为4F00,长度为02 ;a2 插件根据第一数据段对应的命令分别设置指令类别字节(CLA)为80、指令代码字节(1赂)为F2、参数P2的值为00 ;a3 插件从当前数据中获取参数Pl的值;如当前数据为get-status 80,则参数Pl的值为80 ;a4:根据指令类别字节、指令代码字节、参数值和第一随机数生成APDU格式的数据;本实施例中,APDU格式的数据具体为80 F2 80 00 02 4F00 00 ;步骤313 插件判断是否已与智能卡虚拟机建立连接,是则执行步骤316,否则执行步骤314 ;步骤314 插件与智能卡虚拟机建立连接;步骤315 插件判断与智能卡虚拟机的连接是否成功,是则执行步骤316,否则结束操作;步骤316 插件将APDU格式的数据发送给智能卡虚拟机,并接收智能卡虚拟机对APDU格式的数据进行处理后的结果;步骤317 插件判断是否处理完接收到的解析结果,是则执行步骤318,否则将下一行数据作为当前数据,返回步骤303 ;步骤318 插件调用显示接口在应用平台上显示处理结果。本实施例中如插件接收到的get-status数据是用户输入的,如有多行数据时,实现方式与本实施例相同,如只有一个数据,则实现方式删除步骤302和步骤315,其他步骤与本实施例相同。本实施例中插件接收到脚本解析器返回的多行数据时的处理过程,也适用于接收到用户输入的多行数据的情形,在此不再赘述。实施例四本发明实施例四提供了一种插件对与智能卡可执行命令对应的数据进行处理的方法,插件接收到与智能卡虚拟机进行交互的数据时,对该数据进行解析处理的过程,如图4所示,具体步骤如下步骤401:插件接收数据;具体地,在本实施例中,插件接收的数据为/send 805000000803af7a7d446a24f6 ;步骤402 插件对当前所述数据按空格进行拆分,生成多个数据段;具体的,本实施例中,生成的数据段分别为第一个数据段/send和第二个数据段805000000803af7a7d446a24f6 ;步骤403 插件判断第一个数据段的首字符不为第一预定义字符后,判断第一数据段是否为第二预定义字符串,是则执行步骤404,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;优选的,在本实施例中,第一预设自定义字符为@ ;第二预定义字符串为/send或send ;步骤404 插件判断在预定义命令名的集合中是否有与第一个数据段相同的命令名,是则执行步骤405,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;具体地,在本实施例中,预定义命令名的集合存储于插件可实现的接口中,当应用平台(eclipse)启动时,该接口已经被添加在函数(Launch)中;步骤404具体为插件判断在预定义命令名的集合中是否有/send ;步骤405 插件判断当前第一数据段对应的命令是否为智能卡不可执行的命令,是则执行步骤406,否则执行步骤407 ;该步骤中,插件判断接收到的数据是智能卡虚拟机处理的数据还是插件自身处理的数据;步骤406 插件根据当前第一数据段对应的智能卡不可执行命令进行相应处理,并通过调用显示接口在应用平台上显示处理结果;本实施例中步骤406的具体实现过程在实施例五中进行详述;步骤407 插件检测第一数据段对应的命令类型,如是ext-auth mac命令,则执行步骤408,如是init-update version命令,则执行步骤409,如是get-status命令,则执行步骤410,如是/send命令,则执行步骤411 ;步骤408 插件根据ext-auth mac命令进行相应处理;本实施例中步骤408的具体实现过程在实施例七中进行详述;步骤409 插件根据init-update version命令进行相应处理;本实施例中步骤409的具体实现过程在实施例六中进行详述;步骤410 插件根据get-status命令进行相应处理;
本实施例中步骤410的具体实现过程在实施例三中进行详述,在此不再赘述;步骤411 插件判断是否已与智能卡虚拟机建立连接,是则执行步骤414,否则执行步骤412 ;步骤412 插件与智能卡虚拟机建立连接;步骤413 插件判断与智能卡虚拟机的连接是否成功,是则执行步骤414,否则结束操作;步骤414 插件将接收到的除第一数据段的其他数据发送给智能卡虚拟机进行处理;本实施例中,插件将第二个数据段805000000803af7a7d446aMf6发送给智能卡虚拟机进行处理;如第二数据段不足5个字节,则插件将其发送给智能卡虚拟机时,智能卡虚拟机不识别或不进行处理,给插件返回错误提示信息;步骤415 插件接收智能卡虚拟机返回的处理结果,并通过调用显示接口在应用平台上显示处理结果。实施例五本发明实施例五提供了一种插件对与智能卡不可执行命令对应的数据进行处理的方法,以接收到的数据是“/set-var version 1”为例进行详细说明,如图5所示,具体步骤包括步骤501:插件接收数据;具体的,本实施例中接收到的数据为/set-var version 1 ;步骤502 插件对接收到的数据按空格进行拆分,生成多个数据段;具体的,本实施例中生成三个数据段,分别为第一数据段/set-var、第二数据段version和第三数据段1 ;步骤503 插件判断第一个数据段的首字符不为第一预定义字符后,判断第一数据段是否为第二预定义字符串,是则执行步骤504,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;优选的,在本实施例中的第一预定义字符为@,第二预定义字符串为/set-var ;步骤504 插件判断在预定义命令名的集合中是否有与第一个数据段相同的命令名,是则执行步骤505,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;具体地,在本实施例中,所述预定义命令集合存储于插件可实现的接口中,当应用平台(eclipse)启动时,所述接口已经被添加在函数(Launch)中;步骤505 插件判断第一数据段对应的命令是否为智能卡不可执行的命令,是则执行步骤506,否则执行步骤507 ;优选的,在本实施例中,所述步骤505具体为插件判断第一数据段对应的命令中是否包含var ;步骤506 插件将接收到的数据中的参数值存储在第一缓冲器中;具体的,本实施例中,插件将version参数对应的参数01存储在第一缓存器中;步骤507 插件根据第一数据段对应的智能卡命令进行相应操作;本实施例中,步骤507的具体实现过程在实施例三、实施例四、实施例六和实施例七中进行详细说明。实施例六本发明实施例六提供了一种插件和智能卡虚拟机相结合,将插件接收的数据组织成智能卡可执行的命令(APDU)格式的方法;基于实施例五的基础上进行实现的,参见图6,本实施例方法包括步骤601:插件接收数据;在本实施例中,插件接收的数据具体为init-update version,其中version对应的内容为指定密钥版本信息的参数,其对应的值为APDU中的参数Pl的值;当version为空时,则APDU命令中的参数字节Pl的值为00 ;步骤602 插件对接收到的数据按空格进行拆分,生成多个数据段;本实施例中,生成的数据段为第一数据段init-update和第二数据段version ;步骤603 插件判断第一个数据段的首字符不为第一预定义字符后,判断第一数据段是否为第二预定义字符串,是则执行步骤604,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;优选的,在本实施例中的第一预定义字符为@,第二预定义字符串为init-update ;步骤604 插件判断预定义命令名的集合中是否有与第一个数据段相同的命令名,是则执行步骤605,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束; 具体地,在本实施例中,预定义命令名的集合存储于插件可实现的接口中,当应用平台(eclipse)启动时,该接口被添加在函数(Launch)中;步骤605 插件判断第一数据段对应的命令是否为智能卡不可执行的命令,是则执行步骤606,否则执行步骤607 ;步骤606 插件根据第一数据段对应的智能卡不可执行命令进行相应操作,并通过调用显示接口在应用平台上显示处理结果;本实施例中的步骤606的实现过程在实施例五进行了详细说明,在此不再赘述;步骤607 插件检测第一数据段对应的命令类型,如是/send命令,则执行步骤608,如是get-status命令,则执行步骤609,如是ext-auth mac命令,则执行步骤610,如是init-update version命令,则执行步骤611 ;步骤608 插件根据/send命令进行相应处理;
本实施例中步骤608的具体实现过程参照实施例四,在此不再赘述;步骤609 插件根据get-status命令进行相应处理;本实施例中步骤609的具体实现过程参照实施例三,在此不再赘述;步骤610 插件根据ext-auth mac命令进行相应处理;本实施例中步骤610的具体实现过程在实施例七中进行详述;步骤611 插件根据第一数据段对应的命令设置指令类别字节、指令代码字节和参数值,根据指令类别字节、指令代码字节、参数值和插件产生的随机数,生成APDU格式的数据;在本实施例中,所述生成APDU格式的数据的具体过程为
Al 插件生成第一随机数,将第一随机数作为数据字段(Data)值;相应地,在本实施例中,所述插件产生的第一随机数为03af7a7d446aMf6,该第一随机数的长度为08 ;A2 插件根据第一数据段对应的命令分别设置指令类别字节(CLA)为80、指令代码字节(1赂)为50、参数P2的值为00 ;A3 根据参数version从对应的第一缓冲器中获取相应的值;如获取到继续执行步骤A4,否则Pl的值为默认值00 ;优选的,本实施例是基于实施例五实现的,获取值为01,即ADPU命令中Pl的值为01 ;A4:根据指令类别字节、指令代码字节、参数值和第一随机数生成APDU格式的数据;相应地,在本实施例中,所述APDU格式的数据为80 50 01 000803af7a7d446a24f600 ;步骤612 插件判断是否已与智能卡虚拟机建立连接,是则执行步骤615,否则执行步骤613 ;步骤613 插件与智能卡虚拟机建立连接;步骤614 插件判断与智能卡虚拟机的连接是否成功,是则执行步骤615,否则结束操作;步骤615 插件向智能卡虚拟机发送APDU格式的数据;本实施例中,智能卡虚拟机接收APDU格式的数据并进行处理,将处理结果返回给插件;在本实施例中,处理结果具体为00007118035454911734FFO 2000C4081ED9718CD48257D1BDAA46CAA9000其中,FF为密钥版本号,000C为智能卡虚拟机生成的计数值,随着认证次数的变化而变化,4081ED9718⑶为智能卡虚拟机生成的随机数,48257D1BDAA46CAA为智能卡虚拟机中的密文信息,9000为状态码,标识处理正常;步骤616 插件接收智能卡虚拟机返回的处理结果,根据生成的第一填充数据、处理结果中的密钥版本号和智能卡虚拟机生成的计数值,生成安全会话密钥基本密钥;本实施例中,插件将接收到的处理结果存储在response变量中;生成安全会话密钥基本密钥616具体为Bl 插件生成第一填充数据;具体的,在本实施中的第一填充数据具体为000000000000000000000000 ;B2 插件根据智能卡虚拟机返回处理结果中的密钥版本号(FF),获取常数值;常数值分为三种类别会话加密会话密钥对应的常数值为0182、数据加密密钥对应的常数值为0181、命令消息识别码会话密钥对应的常数值为0101 ;本实施例中获取的常数值具体为0182 ; B3 插件从response变量中获取智能卡虚拟机生成的计数值;
在本实施例中,计数值为000C ;B4:插件根据常数值、智能卡虚拟机生成的计数值和第一填充数据生成安全会话密钥基本密钥;在本实施例中,生成的安全会话密钥基本密钥具体为0182 000C 000000000000000000000000 ;步骤617 插件根据生成的第二随机数、第二填充数据、接收到的处理结果中的智能卡虚拟机生成的计数值和智能卡虚拟机生成的随机数,生成验证源数据;本实施例中,生成验证源数据具体为Cl 插件生成第二随机数和第二填充数据;在本实施例中,第二随机数具体为03af7a7d446aMf6 ;第二填充数据的位数为8的整数倍,优选的,第二填充数据的最高位为8,其它位为0,本实施例中填充数据具体为8000000000000000 ;C2 插件从response中获取智能卡虚拟机生成的计数值和智能卡虚拟机生成的随机数,根据第二随机数、第二填充数据、智能卡虚拟机生成的计数值和智能卡虚拟机生成的随机数进行生成验证源数据;在本实施例中,所述验证源数据具体为03af7a7d446a24f6 000C 4081ED9718CD 8000000000000000 ;步骤618 插件使用安全会话密钥基本密钥对验证源数据进行加密,生成验证数据;步骤619 插件判断验证数据的最后8个字节数据是否与智能卡虚拟机返回的处理结果中的密文信息相同,是则执行步骤620,否则结束操作;步骤620 插件通过调用显示接口在应用平台上显示虚拟机返回的处理结果;本实施例中,应用平台上显示的是00007118035454911734FFO 2000C4081ED9718CD48257D1BDAA46CAA9000。实施例七本发明实施例七提供了另一种插件和智能卡虚拟机相结合,基于实施例六的基础上,将插件接收的数据组织成智能卡可执行的命令(APDU)格式的方法,参见图7,具体步骤如下步骤701:插件接收数据;优选的,在本实施例中,插件接收的数据为eXt-auth mac,其中,ext-auth为命令字,mac为参数,参数mac指定安全级别,标识在APDU的指令参数Pl中,Pl的值为01 ;参数
25mac可以用plain替换,此时在APDU的指令参数字节Pl的值为00 ;参数mac还可以用enc替换,此时在APDU的指令参数字节Pl的值为02 ;步骤702 插件对接收到的数据按空格进行拆分,生成多个数据段;本实施例中,生成的数据段为第一数据段ext-auth和第二数据段mac ;步骤703 插件判断第一个数据段的首字符不是第一预定义字符后,判断第一数据段是否为第二预定义字符串,是则执行步骤704,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;优选的,在本实施例中的第一预定义字符为@,第二预定义字符串为ext-auth ;步骤704:插件判断预定义命令名的集合中是否有与第一数据段相同的命令名,是则执行步骤705,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;
具体地,在本实施例中,所述预定义命令集合存储于插件可实现的接口中,当应用平台(eclipse)启动时,该接口被添加在函数(Launch)中;步骤705 插件判断第一数据段对应的命令是否为智能卡不可执行的命令,是则执行步骤706,否则执行步骤707 ;步骤706 插件根据第一数据段对应的智能卡不可执行命令进行相应操作,并通过调用显示接口在应用平台上显示处理结果;本实施例中的步骤706的处理过程在实施例五中进行了详述,再此不再赘述;步骤707 插件检测第一数据段对应的命令类型,如是/send,则执行步骤708,如是/get-status命令,则执行步骤709,如是init-update version命令,则执行步骤710,如是ext-auth mac命令,则执行步骤711 ;步骤708 插件根据/send命令进行相应处理;本实施例中步骤708的实现过程参照实施例四,再此不再赘述;步骤709 插件根据get-status命令进行相应处理;本实施例中步骤709的实现过程参照实施例三中的描述,再此不再赘述;步骤710 插件根据init-update version命令进行相应处理;本实施例中步骤710的实现过程参照实施例六,再此不再赘述;步骤711 插件从response变量中获取密钥版本号(FF)和智能卡虚拟机生成的计数值,根据生成的第一填充数据、获取的密钥版本号(FF)和智能卡虚拟机生成的计数值生成安全会话密钥的基本密钥和命令消息识别码会话密钥的基本密钥;优选的,在本实施例中,生成安全会话密钥的基本密钥和命令消息识别码会话密钥的基本密钥的实现过程具体为Cl 插件生成第一填充数据;具体地,在本实施中的第一填充数据具体为000000000000000000000000 ;C2 插件根据智能卡虚拟机返回的密钥版本号,获取对应的常数值;具体的,本实施例中获取的常数值为0182和0101 ;C3 插件从response变量中获取智能卡虚拟机生成的计数值;在本实施例中,计数值为000C ;C4:插件根据获取的常数值、智能卡虚拟机生成的计数值和第一填充数据生成安全会话密钥基本密钥和命令消息识别码会话密钥的基本密钥;
具体的,在本实施例中,安全会话密钥的基本密钥为0182 000C 000000000000000000000000 ;命令消息识别码会话密钥的基本密钥为0101 000C 000000000000000000000000 ;步骤712 插件使用预先存储的第一基础密钥分别对安全会话密钥的基本密钥和命令消息识别码会话密钥的基本密钥进行加密,生成安全会话密钥和命令消息识别码会话密钥;优选的,在本实施例中,第一基础密钥为041424344454647484Ma4Mc4d4f ;生成的安全会话密钥为400154382C6EA25245C4F297DF643819 ;命令消息识别码会话密钥为98DA135749C27A1F52983815465B3B08步骤713 插件从response变量中获取智能卡虚拟机生成的计数值和智能卡虚拟机生成的随机数,根据生成的第一随机数和第二填充数据、智能卡虚拟机生成的计数值和智能卡虚拟机生成的随机数生成第一数据;具体的,在本实施例中,生成第一数据的具体过程为Dl 插件生成第一随机数;本实施例的第一随机数为4081ED9718CD。D2 插件生成第二填充数据;本实施例的第二填充数据的位数为8的整数倍,优选的,第二填充数据的最高位为8,其它位为0 ;本实施例中第第二填充数据为8000000000000000 ;D3 插件从response变量中获取智能卡虚拟机生成的计数值、智能卡虚拟机生成的随机数,根据智能卡虚拟机生成的计数值、智能卡虚拟机生成的随机数、第一随机数和第二填充数据生成第一数据;在本实施例中,生成的第一数据具体为000C 4081ED9718CD 4081ED9718CD 8000000000000000 ;步骤714 插件用安全会话密钥对第一数据进行加密,生成卡外密文数据;具体的,在本实施例中,卡外密文数据为619F9D758006F9B6 ;步骤715 插件根据第一数据段对应的命令设置指令类别字节、指令代码字节和参数,根据指令类别字节、指令代码信字节、卡外密文数据和参数生成第二数据;优选的,在本实施例中生成第二数据的过程具体为El 插件将卡外密文数据作为数据字段(Data)值;在本实施例中,所述数据字段(Data)值为619F9D758006F9B6,卡外密文数据的长度为10 ;E2 插件根据第一数据段对应的命令分别设置指令类别字节(CLA)为80、指令代码字节(1赂)为82、参数P2的值为00 ;E3 插件根据参数mac设置Pl对应的值为00 ;E4 根据指令类别字节、指令代码字节、参数值和卡外密文数据生成第二数据;在本实施例中,第二数据具体为80 82 01 00 10 619F9D758006F9B6 ;步骤716 插件对第二数据进行转化处理生成新第二数据,对新第二数据进行填充生成第三数据;本实施例中,步骤609的具体实现过程为Fl 插件将第二数据中的指令类别字节(80)对应的二进制数(1000 0000)中由低位到高位的第三位置为1,生成新二进制数(1000 0100),将新二进制数(1000 0100)转化为十六进制数(84),将十六进制数(84)替换第二数据中的指令类别信息生成新第二数据;本实施例中的新第二数据具体为84 82 01 00 10 619F9D758006F9B6 ;F2 插件对新第二数据进行填充,生成第三数据;具体的,在本实施例中,对新第二数据进行填充的第一个字节为80,后续位补0直至新第二数据位长为8的整数倍;本实施例中,第三数据具体为848201 00 10619F9D758006F9B6 800000 ;步骤717 插件使用命令消息识别码会话密钥对第三数据进行加密,生成mac域;具体的,在本实施例中,生成的mac域为(^90DF14738F005F ;步骤718 插件根据新第二数据和mac域,生成APDU格式的数据;相应地,在本实施例中APDU格式的数据为
权利要求
1.一种转换命令模式的方法,其特征在于,包括步骤A 装置对接收到的数据按照空格进行拆分;步骤B 所述装置判断拆分得到的第一个数据段的首字符是否符合第一预定义字符,是则执行步骤C,否则执行步骤E ;步骤C:所述装置删除所述第一个数据段的首字符,获取文件名为所述删除首字符的第一个数据段的文件内容,并将所述获取的非空文件内容发送给脚本解析器进行解析;步骤D 所述装置接收所述脚本解析器返回的解析结果,返回步骤A ;步骤E 所述装置判断所述第一个数据段是否与第二预定义字符串相同,是则执行步骤F,否则结束;步骤F:所述装置判断在预定义命令名的集合中是否有与所述第一个数据段相同的命令名,是则执行步骤G,否则结束;步骤G 所述装置判断所述第一个数据段对应的命令是否为智能卡不可执行的命令,是则将所述接收到的数据中除所述第一个数据段之外的参数值存储在缓冲器中,否则按照所述第一数据段对应的智能卡命令进行下一步操作。
2.如权利要求1所述的方法,其特征在于,所述步骤C具体包括步骤Cl 所述装置删除所述第一个数据段的首字符;步骤C2 所述装置从应用平台的目录中获取文件名为所述删除首字符的第一个数据段的文件内容;步骤C3 所述装置判断所述文件内容是否为空,是则结束,否则将所述文件内容发送给脚本解析器进行处理。
3.如权利要求2所述的方法,其特征在于,所述步骤D具体包括步骤Dl 所述装置接收所述脚本解析器返回的解析结果,判断所述解析结果是否为空,是则结束,否则执行步骤D2 ;步骤D2:所述装置判断所述解析结果中是否有多行数据,是则将第一行数据作为当前数据开始处理,顺序执行步骤D3,否则返回步骤A ;步骤D3 所述装置将当前数据进行拆分,得到多个数据段,顺序执行步骤B-步骤G的操作;步骤D4:所述装置判断是否处理完所述接收到的解析结果,是则调用函数将处理结果以显示方式输出,否则将下一行数据作为当前数据,返回步骤D3。
4.如权利要求1所述的方法,其特征在于,所述步骤G中所述装置判断所述第一个数据段对应的命令是否为智能卡不可执行的命令具体为判断所述第一个数据段对应的命令中是否包含第一预设标识。
5.如权利要求1所述的方法,其特征在于,所述步骤G中的按照所述第一数据段对应的智能卡命令进行下一步操作包括步骤S2 所述装置根据所述接收到的数据生成符合预设格式的数据,并将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理,顺序执行步骤S6 ;或步骤S3 所述装置将所述接收到的数据中除所述第一个数据段之外的其他数据发送给与所述装置连接的智能卡虚拟机进行处理,顺序执行步骤S6 ;或步骤S4 所述装置根据指令类别字节、指令代码字节和第二参数值、第一参数值和第二随机数生成符合预设格式的数据,并将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理,顺序执行步骤S6 ;或步骤S5 所述装置根据接收到的数据生成第二数据,根据所述第二数据生成校验数据,根据所述第二数据和校验数据生成符合预设格式的数据并发送给与所述装置连接的智能卡虚拟机进行处理,顺序执行步骤S6 ;步骤S6 所述装置接收所述智能卡虚拟机返回的处理结果,并调用函数在应用平台上显示所述处理结果。
6.如权利要求5所述的方法,其特征在于,在所述步骤S2之前还包括步骤Sl 所述装置检测所述第一个数据段对应的智能卡命令的类型,如是第一预定义类型,则执行步骤S2 ;如是第二预定义类型,则执行步骤S3 ;如是第三预定义类型,则执行步骤S4 ;如是第四预定义类型,则执行步骤S5。
7.如权利要求5所述的方法,其特征在于,所述步骤S2包括所述装置生成第一随机数,将所述第一随机数作为数据字段值;从所述接收到的数据中获取第一参数值,根据所述第一个数据段对应的命令设置指令类别字节、指令代码字节和第二参数值,根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述第一随机数生成符合预设格式的数据;所述装置判断是否已与智能卡虚拟机建立连接,是则将所述符合预设格式的数据发送给所述智能卡虚拟机;否则与智能卡虚拟机建立连接,并判断连接是否成功,如成功则将所述符合预设格式的数据发送给所述智能卡虚拟机进行处理,如未成功则结束。
8.如权利要求5所述的方法,其特征在于,所述步骤S3包括所述装置判断是否已与智能卡虚拟机建立连接,是则将所述接收到的数据中除所述第一个数据段的其他数据发送给所述智能卡虚拟机;否则与智能卡虚拟机建立连接,并判断连接是否成功,如成功则将所述接收到的数据中除所述第一个数据段的其他数据发送给所述智能卡虚拟机进行处理,如未成功则结束。
9.如权利要求5所述的方法,其特征在于,所述步骤S4包括所述装置生成所述第二随机数,将所述第二随机数作为数据字段值,根据所述接收到的数据中的参数从所述第一缓存器中获取所述第一参数值,根据所述第一个数据段对应的命令设置所述指令类别字节、所述指令代码字节和所述第二参数值,根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述第二随机数生成符合预设格式的数据;所述装置判断是否已与所述智能卡虚拟机建立连接,是则将所述符合预设格式的数据发送给所述智能卡虚拟机;否则与智能卡虚拟机建立连接,并判断连接是否成功,如成功则将所述符合预设格式的数据发送给所述智能卡虚拟机进行处理,如未成功则结束。
10.如权利要求8所述的方法,其特征在于,所述步骤S6中所述装置接收处理结果与调用函数将所述处理结果以显示方式输出之间包括步骤S61 所述装置接收处理结果并存储到第二缓存器中,根据第一填充数据、所述处理结果中的密钥版本号和所述智能卡虚拟机生成的计数值,生成安全会话密钥基本密钥;步骤S62 所述装置根据所述第二随机数、第二填充数据、所述智能卡虚拟机生成的计数值和所述处理结果中的智能卡虚拟机生成的随机数,生成验证源数据;步骤S63 所述装置使用所述安全会话密钥基本密钥对所述验证源数据进行加密,生成验证数据;步骤S64 所述装置判断所述验证数据是否与所述处理结果中的密文信息相符,是则将所述处理结果以显示方式输出,否则结束。
11.如权利要求10所述的方法,其特征在于,所述步骤S61包括所述装置生成所述第一填充数据;所述装置根据所述处理结果中的密钥版本号获取常数值;所述装置从所述第二缓存器中获取智能卡虚拟机生成的计数值,根据所述计数值、所述常数值和所述第一填充数据生成安全会话密钥基本密钥。
12.如权利要求11所述的方法,其特征在于,所述步骤S62包括所述装置生成所述第二随机数和第二填充数据;所述装置从所述第二缓存器中获取所述智能卡虚拟机生成的计数值和所述智能卡虚拟机生成的随机数;所述装置根据所述第二随机数、所述第二填充数据、所述计数值和所述智能卡虚拟机生成的随机数生成验证源数据。
13.如权利要求12所述的方法,其特征在于,所述步骤S64中所述装置判断所述验证数据是否与所述处理结果中的密文信息相符,包括所述装置从所述第二缓存器中获取所述密文信息,判断所述验证源数据中的最后8个字节数据是否与所述密文信息相同。
14.如权利要求5所述的方法,其特征在于,所述步骤S5包括步骤S51 所述装置从第二缓存器中获取密钥版本号和智能卡虚拟机生成的计数值,根据第三填充数据、所述密钥版本号和所述计数值生成安全会话密钥的基本密钥和命令消息识别码会话密钥的基本密钥;步骤S52 所述装置使用预先存储的第一基础密钥分别对所述安全会话密钥的基本密钥和所述命令消息识别码会话密钥的基本密钥进行加密,生成安全会话密钥和命令消息识别码会话密钥;步骤S53 所述装置从所述第二缓存器中获取所述智能卡虚拟机生成的计数值和所述智能卡虚拟机生成的随机数,根据生成的第三随机数和第四填充数据、所述计数值和所述智能卡虚拟机生成的随机数生成第一数据;步骤S54 所述装置使用所述安全会话密钥对所述第一数据进行加密,生成卡外密文数据;步骤S55 所述装置根据第一个数据段对应的命令设置指令类别字节、指令代码字节和参数,根据所述卡外密文数据、所述指令类别字节、所述指令代码信字节和所述参数生成第二数据;步骤S56 所述装置对所述第二数据进行转化处理生成新第二数据,对所述新第二数据进行填充生成第三数据;步骤S57 所述装置使用所述命令消息识别码会话密钥对所述第三数据进行加密,生成校验数据;步骤S58 所述装置根据所述新第二数据和所述校验数据,生成符合预设格式的数据;步骤S59 所述装置判断是否已与智能卡虚拟机建立连接,是则将所述符合预设格式的数据发送给所述智能卡虚拟机;否则与智能卡虚拟机建立连接,并判断连接是否成功,如成功则将所述符合预设格式的数据发送给所述智能卡虚拟机进行处理,如未成功则结束。
15.如权利要求14所述的方法,其特征在于,所述步骤S51具体包括所述装置生成第三填充数据;从所述第二存储器中获取密钥版本号和智能卡虚拟机生成的计数值;根据所述密钥版本号获取对应的第一常数值和第二常数值;所述装置根据所述第一常数值、所述计数值和所述第三填充数据生成安全会话密钥基本密钥,所述装置根据所述第二常数值、所述计数值和所述第三填充数据生成命令消息识别码会话密钥的基本密钥。
16.如权利要求15所述的方法,其特征在于,所述S55具体包括所述装置将所述卡外密文数据作为数据字段值;所述装置根据所述第一个数据段对应的命令分别设置指令类别字节、指令代码字节、第二参数值;所述装置根据接收到的数据中的参数设置第一参数值;所述装置根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述卡外密文数据生成所述第二数据。
17.如权利要求16所述的方法,其特征在于,所述S56具体包括所述装置将所述第二数据中的指令类别字节对应的二进制数中由低位到高位的第三位置为1,生成所述新二进制数,将所述新二进制数转化为十六进制数,将所述十六进制数代替所述第二数据中的指令类别字节生成所述新第二数据;所述装置对所述新第二数据进行填充,生成第三数据。
18.一种转换命令模式的装置,其特征在于,包括接收模块用于接收用户输入的数据、脚本解析器返回的解析结果、虚拟机返回的处理结果;拆分模块用于对所述接收到的数据按照空格进行拆分,得到多个数据段;第一判断模块用于判断拆分得到的第一个数据段的首字符是否符合第一预定义字符;删除模块用于删除所述第一个数据段的首字符;第一获取模块用于获取文件名为所述删除首字符的第一个数据段的文件;第二判断模块用于判断所述文件内容是否为空;发送模块用于将所述非空文件内容发送给脚本解析器进行解析;第三判断模块用于在第一个数据段的首字符不符合第一预定义字符时,判断所述第一个数据段是否与第二预定义字符串相同;当所述第一个数据段与第二预定义字符串相同时,判断在预定义命令名的集合中是否有与所述第一个数据段相同的命令名;在预定义命令名的集合中有与所述第一个数据段相同的命令名时,判断所述第一个数据段对应的命令是否为智能卡不可执行的命令;存入模块用于在所述第一个数据段对应的命令为智能卡不可执行的命令时,将所述接收到的数据中的参数值存储在缓冲器中;处理模块用于在所述第一个数据段对应的命令为智能卡命令时进行下一步操作;输出模块用于调用函数将接收到的数据在应用平台上显示输出。
19.如权利要求18所述的装置,其特征在于,还包括第四判断模块用于判断接收到的所述解析结果是否为空;在所述解析结果不为空时判断所述解析结果中是否有多行数据,判断是否处理完所述接收到的解析结果。
20.如权利要求18或19所述的装置,其特征在于,所述处理模块还包括检测子模块用于在所述第一个数据段对应的命令为智能卡命令时,检测所述第一个数据段对应的智能卡命令的类型;第一生成发送子模块用于在所述第一个数据段对应的智能卡命令的类型是第一预定义类型时,根据所述接收到的数据生成符合预设格式的数据,将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理;第一发送子模块用于在所述第一个数据段对应的智能卡命令的类型是第二预定义类型时,将所述接收到的数据中除所述第一个数据段的其他数据发送给与所述装置连接的智能卡虚拟机进行处理;第二生成发送子模块用于在所述第一个数据段对应的智能卡命令的类型是第三预定义类型时,根据指令类别字节、指令代码字节和第二参数值、第一参数值和第二随机数生成符合预设格式的数据,将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理;第三生成发送子模块用于在所述第一个数据段对应的智能卡命令的类型是第四预定义类型时,根据接收到的数据生成第二数据,根据所述第二数据生成校验数据,根据所述第二数据和校验数据生成符合预设格式的数据,将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理;第一判断子模块用于判断所述装置是否已与智能卡虚拟机建立连接;建立判断子模块用于在所述装置未与智能卡虚拟机建立连接时,与智能卡虚拟机建立连接并判断连接是否成功。
21.如权利要求20所述的装置,其特征在于,所述第一生成发送子模块包括第一生成单元用于生成第一随机数,将所述第一随机数作为数据字段值;第一获取单元用于从所述接收到的数据中获取第一参数值;第一设置单元用于根据所述第一个数据段对应的命令设置指令类别字节、指令代码字节和第二参数值;第二生成单元用于根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述第一随机数生成符合预设格式的数据;第一发送单元用于将所述第二生成单元生成的符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理。
22.如权利要求20所述的装置,其特征在于,所述第二生成发送子模块包括第三生成单元用于生成第二随机数,将所述第二随机数作为数据字段值;第二获取单元用于根据所述接收到的数据中的参数从所述第一缓存器中获取第一参数值;第二设置单元用于根据所述第一个数据段对应的命令设置指令类别字节、指令代码字节和第二参数值;第四生成单元用于根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述第二随机数生成符合预设格式的数据;第二发送单元用于将所述第四生成单元生成的符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理。
23.如权利要求22所述的装置,其特征在于,所述装置还包括第二缓存器;所述处理模块还包括第一接收子模块用于在所述第二生成发送子模块将所述符合预设格式的数据发送给 与所述装置连接的智能卡虚拟机进行处理后,接收所述智能卡虚拟机返回的处理结果;第二存入子模块用于将所述接收到的智能卡虚拟机返回的处理结果存储到所述第二缓存器中;第四生成子模块用于根据第一填充数据、所述处理结果中的密钥版本号和智能卡虚拟机生成的计数值,生成安全会话密钥基本密钥;根据所述第二随机数、第二填充数据、所述智能卡虚拟机生成的计数值和所述处理结果中的智能卡虚拟机生成的随机数,生成验证源数据;第一加密子模块用于使用所述安全会话密钥基本密钥对所述验证源数据进行加密,生成验证数据;第二判断子模块用于判断所述验证数据是否与所述处理结果中的密文信息相符。
24.如权利要求23所述的装置,其特征在于,所述第四生成子模块包括 第五生成单元用于生成所述第一填充数据;第三获取单元用于根据所述处理结果中的密钥版本号获取常数值;从所述第二缓存器中获取智能卡虚拟机生成的计数值;第六生成单元用于根据所述计数值、所述常数值和所述第一填充数据生成安全会话密钥基本密钥;第七生成单元用于生成所述第二随机数和第二填充数据;第四获取单元用于从所述第二缓存器中获取智能卡虚拟机生成的计数值和智能卡虚拟机生成的随机数;第八生成单元用于根据所述第二随机数、所述第二填充数据、所述计数值和所述智能卡虚拟机生成的随机数生成验证源数据。
25.如权利要求M所述的装置,其特征在于,所述第二判断子模块包括第五获取单元用于从所述第二缓存器中获取所述密文信息;第一判断单元用于判断所述验证源数据中的最后8个字节数据是否与所述密文信息相同。
26.如权利要求20所述的装置,其特征在于,所述第三生成发送子模块包括第六获取单元用于从所述第二缓存器中获取密钥版本号和智能卡虚拟机生成的计数值;第九生成单元用于根据第三填充数据、所述密钥版本号和所述计数值生成安全会话密钥的基本密钥和命令消息识别码会话密钥的基本密钥;第一加密单元用于所述装置使用预先存储的第一基础密钥分别对所述安全会话密钥的基本密钥和所述命令消息识别码会话密钥的基本密钥进行加密,生成安全会话密钥和命令消息识别码会话密钥;第七获取单元用于从所述第二缓存器中获取所述智能卡虚拟机生成的计数值和所述智能卡虚拟机生成的随机数;第十生成单元用于根据第三随机数和第四填充数据、所述计数值和所述智能卡虚拟机生成的随机数生成第一数据;第二加密单元用于使用所述安全会话密钥对所述第一数据进行加密,生成卡外密文数据;设置生成单元用于根据第一个数据段对应的命令设置指令类别字节、指令代码字节和参数,根据所述卡外密文数据、所述指令类别字节、所述指令代码信字节和所述参数生成第二数据;转化填充单元用于对所述第二数据进行转化处理生成新第二数据,对所述新第二数据进行填充生成第三数据;第三加密单元用于使用所述命令消息识别码会话密钥对所述第三数据进行加密,生成校验数据;第十一生成单元用于根据所述新第二数据和所述校验数据,生成符合预设格式的数据;第三发送单元用于将所述第十一生成单元生成的符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理。
27.如权利要求沈所述的装置,其特征在于,所述设置生成单元包括第一设置子单元用于将所述卡外密文数据作为数据字段值;第二设置子单元用于根据第一个数据段对应的命令分别设置指令类别字节、指令代码字节、第二参数值;所述装置根据接收到的数据中的参数设置第一参数值;第一生成子单元用于根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述卡外密文数据生成第二数据。
28.如权利要求27所述的装置,其特征在于,所述转化填充单元包括第二生成子单元用于将所述第二数据中的指令类别字节对应的二进制数中由低位到高位的第三位置为1,生成所述新二进制数;转化子单元用于将所述新二进制数转化为十六进制数;第三生成子单元用于将所述十六进制数代替所述第二数据中的指令类别字节生成所述新第二数据;第四生成子单元用于对所述新第二数据进行填充,生成第三数据。
全文摘要
本发明公开一种转换命令模式的方法及装置,该方法包括对接收到的数据按照空格进行拆分;当拆分得到的第一个数据段的首字符符合第一预定义字符时,获取文件名为删除首字符的第一个数据段的文件内容,并将获取的非空文件内容发送给脚本解析器进行解析;当第一个数据段与第二预定义字符串相同且在预定义命令名的集合中有与第一个数据段相同的命令名时,如第一个数据段对应的命令为智能卡不可执行的命令,则将所述接收到的数据中除所述第一个数据段的参数值存储在缓冲器中,否则按照所述第一数据段对应的智能卡命令进行下一步操作。本发明提供的方法及装置在很大程度上缩短了调试智能卡中应用的时间,从而提高了测试智能卡的效率。
文档编号G06F9/45GK102591699SQ20111044930
公开日2012年7月18日 申请日期2011年12月29日 优先权日2011年12月29日
发明者于华章, 陆舟 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1