一种智能卡操作方法和装置与流程

文档序号:17290785发布日期:2019-04-03 03:56阅读:283来源:国知局
一种智能卡操作方法和装置与流程

本发明实施例涉及但不限于测试技术,尤指一种智能卡操作方法和装置。



背景技术:

随着智能卡在金融、医疗保险等领域应用的迅速增长,其可靠性要求越来越高,相应的,针对智能卡测试的多样化需求也日趋增多。

相关的测试工具一般是以单服务器单接口为主的应用软件,即一台个人电脑(pc,personalcomputer)机上的测试工具同一时刻只能对一张智能卡进行测试,如果想同时测试多张智能卡,则需要使用多套pc机,并且每台pc机都需要安装测试工具和读写设备驱动,如图1所示,测试工具用于实现对智能卡的测试,读写设备驱动用于实现测试工具和读写设备之间的通信。

相关技术的测试工具是单服务器单接口模式,无法满足对智能卡的多样化的测试需求。



技术实现要素:

本发明实施例提供了一种智能卡操作方法和装置,能够满足对智能卡的多样化的操作需求。

本发明实施例提供了一种智能卡操作方法,包括:

创建并启动主进程;

当处于串行模式时,创建并启动一个子进程,子进程与主进程建立连接,通过主进程和子进程依次对至少一个读写设备中的智能卡进行不同的操作;

当处于批量模式或并行模式时,创建并启动至少一个子进程,所有子进程与主进程建立连接,通过主进程和至少一个子进程执行以下任意一个:

当处于批量模式时,同时对至少一个读写设备中的智能卡进行相同的操作;

当处于并行模式时,同时对至少一个读写设备中的智能卡进行不同的操作。

在本发明实施例中,所述创建并启动子进程包括:

通过所述主进程创建所述子进程的主线程,指定所述子进程的入口函数,启动所述主线程;

通过所述主线程创建所述子进程的子线程,将所述子线程设置为就绪状态,所述主线程进入循环状态;当所述子线程与所述主进程连接成功时,所述子线程进入循环状态;

所述子进程与主进程建立连接包括:

通过所述子进程的子线程创建套接字,基于创建的套接字连接所述主进程。

在本发明实施例中,所述通过主进程和子进程依次对至少一个读写设备中的智能卡进行不同的操作包括:

所述主进程通过读写设备驱动与所有所述读写设备建立连接;

所述主进程将脚本打包成脚本数据包,将所述脚本数据包发送给所述子进程的子线程;

所述子线程对所述脚本数据包进行解包处理得到操作指令;

所述子线程将所述操作指令中的读写设备的操作指令发送给所述主进程;所述主进程将所述读写设备的操作指令通过所述读写设备驱动发送给对应的读写设备,以使所述读写设备将所述读写设备的操作指令发送给所述智能卡执行或所述读写设备执行所述读写设备的操作指令;所述主进程通过所述读写设备驱动接收到所述读写设备返回的第一执行结果,将第一执行结果和所述主进程的第二执行结果发送给所述子线程;

所述子线程将所述操作指令中除读写设备的操作指令之外的其他操作指令写入到请求队列中;

所述子进程的主线程执行所述请求队列中的其他操作指令得到第三执行结果,将第三执行结果放入响应队列中,所述子线程将响应队列中的第三执行结果发送给所述主进程。

在本发明实施例中,所述通过主进程和子进程依次对至少一个读写设备中的智能卡进行不同的操作包括:

所述主进程将连接读写设备的命令打包发送给所述子进程的子线程,所述子进程的子线程通过读写设备驱动连接所有读写设备;

所述主进程将脚本打包成脚本数据包,将所述脚本数据包发送给所述子进程的子线程;

所述子线程对所述脚本数据包进行解包处理得到操作指令;

所述子线程将所述操作指令中的读写设备的操作指令通过所述读写设备驱动发送给对应的读写设备,以使所述读写设备将所述读写设备的操作指令发送给所述智能卡执行或所述读写设备执行所述读写设备的操作指令;所述子进程的子线程通过所述读写设备驱动接收到所述读写设备返回的第一执行结果;

所述子线程将所述操作指令中除读写设备的操作指令之外的其他操作指令写入到请求队列中;

所述子进程的主线程执行所述请求队列中的其他操作指令得到第三执行结果,将第三执行结果放入响应队列中,所述子线程将响应队列中的第三执行结果发送给所述主进程。

在本发明实施例中,所述通过主进程和至少一个子进程同时对至少一个读写设备中的智能卡进行相同的操作包括:

所述主进程将连接读写设备的命令打包发送给所有子进程,每一个子进程通过读写设备驱动连接对应的读写设备;

所述主进程将脚本打包成脚本数据包,将所述脚本数据包发送给所有所述子进程的子线程;

所述子线程对所述脚本数据包进行解包处理得到操作指令;

所述子线程将所述操作指令中的读写设备的操作指令通过所述读写设备驱动发送给连接的读写设备,以使所述读写设备将所述读写设备的操作指令发送给所述智能卡执行或所述读写设备执行所述读写设备的操作指令;所述子线程通过所述读写设备驱动接收到所述读写设备返回的第一执行结果;

所述子线程将所述操作指令中除读写设备的操作指令之外的其他操作指令写入到请求队列中;

所述子进程的主线程执行所述请求队列中的其他操作指令得到第三执行结果,将第三执行结果放入响应队列中,所述子线程将响应队列中的第三执行结果发送给所述主进程。

在本发明实施例中,所述通过主进程和至少一个子进程同时对至少一个读写设备中的智能卡进行不同的操作包括:

所述主进程将连接读写设备的命令打包发送给所有子进程,每一个子进程通过读写设备驱动连接对应的读写设备;

所述主进程将所有脚本逐一打包成脚本数据包,将不同的所述脚本数据包发送给对应的所述子进程的子线程;

所述子线程对所述脚本数据包进行解包处理得到操作指令;

所述子线程将所述操作指令中的读写设备的操作指令通过所述读写设备驱动发送给连接的读写设备,以使所述读写设备将所述读写设备的操作指令发送给所述智能卡执行或所述读写设备执行所述读写设备的操作指令;所述子线程通过所述读写设备驱动接收到所述读写设备返回的第一执行结果;

所述子线程将所述操作指令中除读写设备的操作指令之外的其他操作指令写入到请求队列中;

所述子进程的主线程执行所述请求队列中的其他操作指令得到第三执行结果,将第三执行结果放入响应队列中,所述子线程将响应队列中的第三执行结果发送给所述主进程。

在本发明实施例中,当所述读写设备的操作指令为测试操作指令时,所述子进程的主线程执行所述请求队列中的其他操作指令得到第三执行结果包括:所述子进程的主线程对所述第一执行结果执行所述请求队列中的其他操作指令得到所述第三执行结果。

本发明实施例提出了一种智能卡操作装置,包括:

创建模块,用于创建并启动主进程;当处于串行模式时,创建并启动一个子进程,子进程与主进程建立连接;当处于批量模式或并行模式时,创建并启动至少一个子进程,所有子进程与主进程建立连接;

执行模块,用于当处于串行模式时,通过主进程和子进程依次对至少一个读写设备中的智能卡进行不同的操作;当处于批量模式或并行模式时,通过主进程和至少一个子进程执行以下任意一个:

当处于批量模式时,同时对至少一个读写设备中的智能卡进行相同的操作;

当处于并行模式时,同时对至少一个读写设备中的智能卡进行不同的操作。

本发明实施例提出了一种智能卡操作装置,包括处理器和计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令被所述处理器执行时,实现上述任一种智能卡操作方法。

本发明实施例提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种智能卡操作方法的步骤。

本发明实施例包括:创建并启动主进程;当处于串行模式时,创建并启动一个子进程,子进程与主进程建立连接,通过主进程和子进程依次对至少一个读写设备中的智能卡进行不同的操作;当处于批量模式或并行模式时,创建并启动至少一个子进程,所有子进程与主进程建立连接,通过主进程和至少一个子进程执行以下任意一个:当处于批量模式时,同时对至少一个读写设备中的智能卡进行相同的操作;当处于并行模式时,同时对至少一个读写设备中的智能卡进行不同的操作。本发明实施例通过主进程和子进程实现了对多个读写设备中的智能卡依次进行不同的操作;同时对多个读写设备中的智能卡进行相同的操作;同时对多个读写设备中的智能卡进行不同的操作,从而满足了对智能卡的多样化的操作需求。

本发明实施例的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例而了解。本发明实施例的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明实施例技术方案的进一步理解,并且构成说明书的一部分,与本发明实施例的实施例一起用于解释本发明实施例的技术方案,并不构成对本发明实施例技术方案的限制。

图1为相关技术智能卡测试系统的结构组成示意图;

图2为本发明一个实施例提出的智能卡操作方法的流程图;

图3为本发明实施例示例1的方法的流程图;

图4为本发明实施例示例2的串行模式的智能卡操作方法的流程图;

图5(a)为本发明实施例示例3批量模式的结构示意图;

图5(b)为本发明实施例示例3批量模式的智能卡操作方法的流程图;

图6(a)为本发明实施例示例4并行模式的结构示意图;

图6(b)为本发明实施例示例4并行模式的智能卡操作方法的流程图;

图7为本发明另一个实施例提出的智能卡操作装置的结构组成示意图;

图8为本发明实施例智能卡操作装置、读写设备和智能卡的结构示意图。

具体实施方式

下文中将结合附图对本发明实施例进行详细说明。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

参见图2,本发明一个实施例提出了一种智能卡操作方法,包括:

步骤200、创建并启动主进程。

在本发明另一个实施例中,创建并启动主进程后,初始化各功能模块,绘制图形用户界面(gui,graphicaluserinterface)。

步骤201、当处于串行模式时,创建并启动一个子进程,子进程与主进程建立连接,通过主进程和子进程依次对至少一个读写设备中的智能卡进行不同的操作。

在本发明实施例中,智能卡(smartcard)又称为集成电路卡(ic卡,integratedcircuitcard)。智能卡按不同的分类标准,有许多不同的种类,本发明实施例指的是带有cpu的智能卡。cpu智能卡芯片内部包含微处理器单元(cpu)、存储单元(随机存取存储器(ram,randomaccessmemory)、只读存储器(rom,readonlymemory)和带电可擦可编程只读存储器(eeprom,electricallyerasableprogrammableread-onlymemory))、和输入/输出接口单元。其中,ram用于存放运算过程中的中间数据,rom中固化有片内操作系统(cos,cardoperatingsystem),而eeprom用于存放持卡人的个人信息以及发行单位的有关信息。

在本发明实施例中,如果之前已经有创建过子进程,则先关闭已创建的子进程,再重新创建一个子进程。

在本发明实施例中,创建并启动子进程包括:

通过所述主进程创建所述子进程的主线程,指定所述子进程的入口函数,启动所述主线程;其中,子进程的入口函数为子进程开始执行的函数;

通过所述主线程创建所述子进程的子线程,将所述子线程设置为就绪状态,所述主线程进入循环状态;当所述子线程与所述主进程连接成功时,所述子线程进入循环状态。

在本发明实施例中,子进程与主进程建立连接包括:

通过所述子进程的子线程创建套接字(socket),基于创建的套接字连接所述主进程。

在本发明实施例中,通过主进程和子进程依次对至少一个读写设备中的智能卡进行不同的操作包括:

所述主进程通过读写设备驱动与所有所述读写设备建立连接;其中,主进程通过调用读写设备驱动中的连接函数与读写设备建立连接;

所述主进程将脚本打包成脚本数据包,将所述脚本数据包发送给所述子进程的子线程;

所述子线程对所述脚本数据包进行解包处理得到操作指令;

所述子线程将所述操作指令中的读写设备的操作指令发送给所述主进程;所述主进程将所述读写设备的操作指令通过所述读写设备驱动发送给对应的读写设备,以使所述读写设备将所述读写设备的操作指令发送给所述智能卡执行或所述读写设备执行所述读写设备的操作指令;所述主进程通过所述读写设备驱动接收到所述读写设备返回的第一执行结果,将第一执行结果和所述主进程的第二执行结果发送给所述子线程;其中,第一执行结果为读写设备或智能卡执行读写设备的操作指令后得到的执行结果,即读写设备或智能卡返回的结果;第二执行结果是主进程将读写设备的操作指令发送给对应的读写设备,并接收到第一执行结果的执行结果,即主进程是否执行正确;

所述子线程将所述操作指令中除读写设备的操作指令之外的其他操作指令写入到请求队列中;

所述子进程的主线程执行所述请求队列中的其他操作指令得到第三执行结果,将第三执行结果放入响应队列中,所述子线程将响应队列中的第三执行结果发送给所述主进程。其中,子进程的主线程可以调用相应的语法解释器执行对应的操作指令。因此,本发明实施例对脚本语言不作限制,只要扩展支持对应的语法解释器即可。

其中,读写设备的操作指令可以是以下至少之一:

读写设备的连接、读写设备的断开、读写设备列表刷新、断开所有读写设备、发送应用协议数据单元(apdu,applicationprotocoldataunit)指令并接收响应、读写设备的智能卡的复位、获取读写设备的智能卡的复位应答(atr)等。

在本发明另一个实施例中,所述通过主进程和子进程依次对至少一个读写设备中的智能卡进行不同的操作包括:

所述主进程将连接读写设备的命令打包发送给所述子进程的子线程,所述子进程的子线程通过读写设备驱动连接所有读写设备;

所述主进程将脚本打包成脚本数据包,将所述脚本数据包发送给所述子进程的子线程;

所述子线程对所述脚本数据包进行解包处理得到操作指令;

所述子线程将所述操作指令中的读写设备的操作指令通过所述读写设备驱动发送给对应的读写设备,以使所述读写设备将所述读写设备的操作指令发送给所述智能卡执行或所述读写设备执行所述读写设备的操作指令;所述子进程的子线程通过所述读写设备驱动接收到所述读写设备返回的第一执行结果;

所述子线程将所述操作指令中除读写设备的操作指令之外的其他操作指令写入到请求队列中;

所述子进程的主线程执行所述请求队列中的其他操作指令得到第三执行结果,将第三执行结果放入响应队列中,所述子线程将响应队列中的第三执行结果发送给所述主进程。

本发明实施例对脚本语言不作限制,脚本可以使用c++、java等编译语言,也可以使用javascript等通用脚本语言,还可以是自定义的脚本语言,只要扩展支持相应的语法解析器,即可在整体框架不变的情况下扩展支持不同的脚本语言。

在本发明实施例中,读写设备可以但不限于是读卡器。

例如,脚本数据包包括如下内容:

#指定读卡器

index=0

#cardlist是一个列表,其中有已连接的读卡器,

#index指定了列表中的索引,也就是指定了要操作的读卡器

cardlist[index].cardreset()

#cardlist[index]指定了要操作的读卡器,00a4040008a000000003000000是apdu指令

(ret,sw,response)=cardlist[index].send(‘00a4040008a000000003000000’)

#判断卡片返回值是否正确,即卡片该项功能是否正确

ifsw==(‘9000’):

print(‘suceed’)

else:

print(‘fall’)

其中,第一行为解析文字、第二行定义了要操作的读卡器的索引,第三行和第四行为解析文字,第五行指定了要操作的读卡器,第六行为解析文字,第七行为读卡器操作指令,第八行为解析文字,第九行到第十二行为根据读卡器执行结果打印是卡片功能是否正常。

步骤202、当处于批量模式或并行模式时,创建并启动至少一个子进程,所有子进程与主进程建立连接,通过主进程和至少一个子进程执行以下任意一个:当处于批量模式时,同时对至少一个读写设备中的智能卡进行相同的操作;当处于并行模式时,同时对至少一个读写设备中的智能卡进行不同的操作。

在本发明实施例中,通过主进程和至少一个子进程同时对至少一个读写设备中的智能卡进行相同的操作包括:

所述主进程将连接读写设备的命令打包发送给所有子进程,每一个子进程通过读写设备驱动连接对应的读写设备;其中,子进程可以通过调用读写设备驱动中的连接函数实现与读写设备的连接;

所述主进程将脚本打包成脚本数据包,将所述脚本数据包发送给所有所述子进程的子线程;

所述子线程对所述脚本数据包进行解包处理得到操作指令;

所述子线程将所述操作指令中的读写设备的操作指令通过所述读写设备驱动发送给连接的读写设备,以使所述读写设备将所述读写设备的操作指令发送给所述智能卡执行或所述读写设备执行所述读写设备的操作指令;所述子线程通过所述读写设备驱动接收到所述读写设备返回的第一执行结果;

所述子线程将所述操作指令中除读写设备的操作指令之外的其他操作指令写入到请求队列中;

所述子进程的主线程执行所述请求队列中的其他操作指令得到第三执行结果,将第三执行结果放入响应队列中,所述子线程将响应队列中的第三执行结果发送给所述主进程。

在本发明实施例中,所述通过主进程和至少一个子进程同时对至少一个读写设备中的智能卡进行不同的操作包括:

所述主进程将连接读写设备的命令打包发送给所有子进程,每一个子进程通过读写设备驱动连接对应的读写设备;

所述主进程将所有脚本逐一打包成脚本数据包,将不同的所述脚本数据包发送给对应的所述子进程的子线程;

所述子线程对所述脚本数据包进行解包处理得到操作指令;

所述子线程将所述操作指令中的读写设备的操作指令通过所述读写设备驱动发送给连接的读写设备,以使所述读写设备将所述读写设备的操作指令发送给所述智能卡执行或所述读写设备执行所述读写设备的操作指令;所述子线程通过所述读写设备驱动接收到所述读写设备返回的第一执行结果;

所述子线程将所述操作指令中除读写设备的操作指令之外的其他操作指令写入到请求队列中;

所述子进程的主线程执行所述请求队列中的其他操作指令得到第三执行结果,将第三执行结果放入响应队列中,所述子线程将响应队列中的第三执行结果发送给所述主进程。

在本发明另一个实施例中,当所述读写设备的操作指令为测试操作指令时,子进程的主线程执行所述请求队列中的其他操作指令得到第三执行结果包括:子进程的主线程对第一执行结果执行请求队列中的其他操作指令得到第三执行结果。

本发明实施例通过主进程和子进程实现了对多个读写设备中的智能卡依次进行不同的操作;同时对多个读写设备中的智能卡进行相同的操作;同时对多个读写设备中的智能卡进行不同的操作,从而满足了对智能卡的多样化的操作需求。

本发明实施例将操作智能卡的三种操作模式有机地集成在一起,避免了重复开发,节省了测试资源和维护成本。具体的,支持串行模式、批量模式和并行模式3种模式操作智能卡,这将多样化的功能测试和批量发行的需求集成在同一工具中,减少了工具的二次开发,避免了不必要的资源浪费。

本发明实施例更好的满足了多样化的测试需求,提高了测试工具的自动化程度。具体的,串行模式支持对多个读写设备中的智能卡依次进行不同的操作,可以模拟实际应用中智能卡间交互操作的场景,既能实现使用终端、销售点终端安全存取模块(psam,purchasesecureaccessmodule)芯片、用户卡这三方安全数据认证的场景,又可模拟常见的金融应用场景,实现销售终端(pos,pointofsale)机芯片和银行卡的交互测试;批量模式支持同一时间对多个读写设备中的智能卡进行相同的操作(如:卡片初始化、应用功能压力测试等),满足了批量卡片发行及批量卡片压力测试的现实需求;并行模式实现了同一时间对多个读写设备中智能卡进行不同的操作,支持并行操作多张卡片,每张卡片处理不同应用的测试任务。

下面分别通过一个示例说明各个模式的具体实现过程。

示例1

如图3所示,初始启动时,可以进入默认的一种模式,例如,如图3所示,进入串行模式,该方法包括:

1、创建并启动主进程,初始化各功能模块,绘制gui界面。

2、通过主进程创建子进程的主线程,指定子进程的入口函数,启动子进程的主线程。

3、子进程的主线程启动后,通过主线程创建子线程,并将子线程设置为就绪状态。

4、子进程的主线程进入其循环状态,等待执行语句。

5、子进程的子线程创建socket,并基于创建的socket连接主进程。

6、当子进程的子线程与主进程连接成功时,子线程进入循环状态,等待主进程消息并向主进程返回结果。

7、当子进程的子线程与主进程连接失败时,显示错误信息。

8、当主进程在创建子进程的主线程后的指定时间内接收到子进程的连接请求,主进程进入其循环状态,等待触发事件(如:脚本执行)并作出响应。

9、当主进程在创建子进程的主线程后的指定时间内没有接收到子进程的连接请求,主进程弹出提示框,显示软件异常,软件关闭。

10、当主进程接收到退出事件时,关闭所有子进程,并结束软件。

示例2

串行模式下,只需创建一个子进程,对读写设备的操作在主进程进行。连接多台读写设备时,测试脚本中的每台读写设备对象用card[n]表示,n为连接时对应的读写设备n。此时,可以在一个脚本中向多台读写设备发送apdu指令。如图4所示,串行模式的智能卡操作方法包括:

(1)主进程检查测试脚本的基本语法、书写格式等内容。

(2)将初始启动时创建的子进程关闭,然后重新创建一个子进程。子进程创建和连接过程与示例1中的流程相同。

(3)在主进程与子进程建立连接后,主进程将脚本数据打包成脚本数据包,通过socket接口发送给子进程的子线程。

(4)子进程中的子线程接收到主进程的脚本数据包,对脚本数据包进行解包处理得到操作指令;将操作指令中的读写设备的操作指令发送给主进程,主进程将读写设备的操作指令通过读写设备驱动发送给对应的读写设备,以使读写设备将读写设备的操作指令发送给智能卡执行,或读写设备执行读写设备的操作指令;主进程通过读写设备驱动接收到读写设备返回的第一执行结果,将第一执行结果和主进程的第二执行结果发生给子进程;子线程将所述操作指令中除读写设备的操作指令之外的其他操作指令写入到请求队列中。

(5)所述子进程的主线程执行所述请求队列中的其他操作指令得到第三执行结果,将第三执行结果放入响应队列中。

其中,子进程中的主线程从请求队列中取出操作指令,调用相应的语法解释器,对第一执行结果执行对应的操作指令,并将执行后的第三执行结果放入响应队列中。

(6)子进程中的子线程从响应队列中取出第三执行结果,将结果通过socket接口打包发送给主进程。

示例3

批量模式下,创建多个子进程。创建子进程的数量与读写设备的个数相同,每个读写设备的操作指令都是由读写设备对应的子进程发送给读写设备。连接读写设备时,每个子进程创建对应的读写设备对象,每个读写设备对象执行相同的测试脚本,相应的,测试脚本中仅处理一个读写设备对象,以达到批量操作的效果,如图5(a)所示。

如图5(b)所示,批量模式的智能卡操作方法包括:

(1)主进程检查测试脚本的基本语法、书写格式等内容。

(2)将启动时创建的子进程关闭,然后重新创建子进程。创建的子进程个数与读写设备的个数相同,创建和连接过程与示例1中的流程相同。

(3)在主进程与子进程建立连接后,主进程将重新连接读写设备的命令打包,通过socket接口发送给所有子进程。每个子进程接收到重新连接读写设备的命令后,重新连接对应的读写设备。

(4)子进程与读写设备连接成功后,主进程将待执行的脚本数据打包成脚本数据包,发送给所有子进程的子线程。

(5)子进程中的子线程接收到主进程的脚本数据包,对数据包进行解包处理得到操作指令,将操作指令中的读写设备的操作指令通过所述读写设备驱动发送给连接的读写设备,以使所述读写设备将所述读写设备的操作指令发送给所述智能卡执行或所述读写设备执行所述读写设备的操作指令;子线程通过所述读写设备驱动接收到所述读写设备返回的第一执行结果;子线程将所述操作指令中除读写设备的操作指令之外的其他操作指令写入到请求队列中。

(6)子进程中的主线程从请求队列中取出操作指令,调用相应的语法解释器,对第一执行结果执行对应的操作指令得到第三执行结果,将第三执行结果放入响应队列中。此过程与串行模式相同。

(7)子进程中的子线程从响应队列中取出第三执行结果,将第三执行结果通过socket接口打包发送给主进程。

(8)主进程在循环接收子进程消息时,每次遍历所有子进程返回的消息。

示例4

并行模式在创建子进程和连接读写设备方面与批量模式是一致的,区别在于每个读写设备对象可以执行不同的测试脚本,其结构图如图6(a)所示。

如图6(b)所示,批量模式的智能卡操作方法包括:

(1)主进程检查测试脚本的基本语法、书写格式等内容。

(2)将启动时创建的子进程关闭,然后重新创建子进程。创建的子进程个数与读写设备的个数相同,创建和连接过程与示例1中的流程相同。

(3)在主进程与子进程建立连接后,主进程将重新连接读写设备的命令打包,通过socket接口发送给所有子进程。每个子进程接收到重新连接读写设备的命令后,重新连接对应的读写设备。

(4)子进程与读写设备连接成功后,主进程将待执行的n个脚本数据打包成n个脚本数据包,发送给对应的子进程的子线程。

(5)子进程中的子线程接收到主进程的脚本数据包,对数据包进行解包处理得到操作指令,将操作指令中的读写设备的操作指令通过所述读写设备驱动发送给连接的读写设备,以使所述读写设备将所述读写设备的操作指令发送给所述智能卡执行或所述读写设备执行所述读写设备的操作指令;子线程通过所述读写设备驱动接收到所述读写设备返回的第一执行结果;子线程将所述操作指令中除读写设备的操作指令之外的其他操作指令写入到请求队列中。

(6)子进程中的主线程从请求队列中取出操作指令,调用相应的语法解释器,对第一执行结果执行对应的操作指令得到第三执行结果,将第三执行结果放入响应队列中。此过程与串行模式相同。

(7)子进程中的子线程从响应队列中取出第三执行结果,将第三执行结果通过socket接口打包发送给主进程。

(8)主进程在循环接收子进程消息时,每次遍历所有子进程返回的消息。

参见图7,本发明另一个实施例提出了一种智能卡操作装置,包括:

创建模块701,用于创建并启动主进程;当处于串行模式时,创建并启动一个子进程,子进程与主进程建立连接;当处于批量模式或并行模式时,创建并启动至少一个子进程,所有子进程与主进程建立连接;

执行模块702,用于当处于串行模式时,通过主进程和子进程依次对至少一个读写设备中的智能卡进行不同的操作;当处于批量模式或并行模式时,通过主进程和至少一个子进程执行以下任意一个:

当处于批量模式时,同时对至少一个读写设备中的智能卡进行相同的操作;

当处于并行模式时,同时对至少一个读写设备中的智能卡进行不同的操作。

在本发明另一个实施例中,创建模块701创建并启动主进程后,初始化各功能模块,绘制图形用户界面(gui,graphicaluserinterface)。

在本发明实施例中,智能卡(smartcard)又称为集成电路卡(ic卡,integratedcircuitcard)。智能卡按不同的分类标准,有许多不同的种类,本发明实施例指的是带有cpu的智能卡。cpu智能卡芯片内部包含微处理器单元(cpu)、存储单元(随机存取存储器(ram,randomaccessmemory)、只读存储器(rom,readonlymemory)和带电可擦可编程只读存储器(eeprom,electricallyerasableprogrammableread-onlymemory))、和输入/输出接口单元。其中,ram用于存放运算过程中的中间数据,rom中固化有片内操作系统(cos,cardoperatingsystem),而eeprom用于存放持卡人的个人信息以及发行单位的有关信息。

在本发明实施例中,如果之前已经有创建过子进程,则创建模块701先关闭已创建的子进程,再重新创建一个子进程。

在本发明实施例中,创建模块701具体用于采用以下方式实现创建并启动子进程:

通过所述主进程创建所述子进程的主线程,指定所述子进程的入口函数,启动所述主线程;其中,子进程的入口函数为子进程开始执行的函数;

通过所述主线程创建所述子进程的子线程,将所述子线程设置为就绪状态,所述主线程进入循环状态;当所述子线程与所述主进程连接成功时,所述子线程进入循环状态。

在本发明实施例中,创建模块701具体用于采用以下方式实现子进程与主进程建立连接:

通过所述子进程的子线程创建套接字(socket),基于创建的套接字连接所述主进程。

在本发明实施例中,执行模块702具体用于采用以下方式实现通过主进程和子进程依次对至少一个读写设备中的智能卡进行不同的操作:

所述主进程通过读写设备驱动与所有所述读写设备建立连接;其中,主进程通过调用读写设备驱动中的连接函数与读写设备建立连接;

所述主进程将脚本打包成脚本数据包,将所述脚本数据包发送给所述子进程的子线程;

所述子线程对所述脚本数据包进行解包处理得到操作指令;

所述子线程将所述操作指令中的读写设备的操作指令发送给所述主进程;所述主进程将所述读写设备的操作指令通过所述读写设备驱动发送给对应的读写设备,以使所述读写设备将所述读写设备的操作指令发送给所述智能卡执行或所述读写设备执行所述读写设备的操作指令;所述主进程通过所述读写设备驱动接收到所述读写设备返回的第一执行结果,将第一执行结果和所述主进程的第二执行结果发送给所述子线程;其中,第一执行结果为读写设备或智能卡执行读写设备的操作指令后得到的执行结果,即读写设备或智能卡返回的结果;第二执行结果是主进程将读写设备的操作指令发送给对应的读写设备,并接收到第一执行结果的执行结果,即主进程是否执行正确;

所述子线程将所述操作指令中除读写设备的操作指令之外的其他操作指令写入到请求队列中;

所述子进程的主线程执行所述请求队列中的其他操作指令得到第三执行结果,将第三执行结果放入响应队列中,所述子线程将响应队列中的第三执行结果发送给所述主进程。其中,子进程的主线程可以调用相应的语法解释器执行对应的操作指令。因此,本发明实施例对脚本语言不作限制,只要扩展支持对应的语法解释器即可。

其中,读写设备的操作指令可以是以下至少之一:

读写设备的连接、读写设备的断开、读写设备列表刷新、断开所有读写设备、发送应用协议数据单元(apdu,applicationprotocoldataunit)指令并接收响应、读写设备的智能卡的复位、获取读写设备的智能卡的复位应答(atr)等。

在本发明另一个实施例中,执行模块702具体用于采用以下方式实现所述通过主进程和子进程依次对至少一个读写设备中的智能卡进行不同的操作:

所述主进程将连接读写设备的命令打包发送给所述子进程的子线程,所述子进程的子线程通过读写设备驱动连接所有读写设备;

所述主进程将脚本打包成脚本数据包,将所述脚本数据包发送给所述子进程的子线程;

所述子线程对所述脚本数据包进行解包处理得到操作指令;

所述子线程将所述操作指令中的读写设备的操作指令通过所述读写设备驱动发送给对应的读写设备,以使所述读写设备将所述读写设备的操作指令发送给所述智能卡执行或所述读写设备执行所述读写设备的操作指令;所述子进程的子线程通过所述读写设备驱动接收到所述读写设备返回的第一执行结果;

所述子线程将所述操作指令中除读写设备的操作指令之外的其他操作指令写入到请求队列中;

所述子进程的主线程执行所述请求队列中的其他操作指令得到第三执行结果,将第三执行结果放入响应队列中,所述子线程将响应队列中的第三执行结果发送给所述主进程。

本发明实施例对脚本语言不作限制,脚本可以使用c++、java等编译语言,也可以使用javascript等通用脚本语言,还可以是自定义的脚本语言,只要扩展支持相应的语法解析器,即可在整体框架不变的情况下扩展支持不同的脚本语言。

在本发明实施例中,执行模块702具体用于采用以下方式实现通过主进程和至少一个子进程同时对至少一个读写设备中的智能卡进行相同的操作:

所述主进程将连接读写设备的命令打包发送给所有子进程,每一个子进程通过读写设备驱动连接对应的读写设备;

所述主进程将脚本打包成脚本数据包,将所述脚本数据包发送给所有所述子进程的子线程;

所述子线程对所述脚本数据包进行解包处理得到操作指令;

所述子线程将所述操作指令中的读写设备的操作指令通过所述读写设备驱动发送给连接的读写设备,以使所述读写设备将所述读写设备的操作指令发送给所述智能卡执行或所述读写设备执行所述读写设备的操作指令;所述子线程通过所述读写设备驱动接收到所述读写设备返回的第一执行结果;

所述子线程将所述操作指令中除读写设备的操作指令之外的其他操作指令写入到请求队列中;

所述子进程的主线程执行所述请求队列中的其他操作指令得到第三执行结果,将第三执行结果放入响应队列中,所述子线程将响应队列中的第三执行结果发送给所述主进程。

在本发明实施例中,执行模块702具体用于采用以下方式实现所述通过主进程和至少一个子进程同时对至少一个读写设备中的智能卡进行不同的操作:

所述主进程将连接读写设备的命令打包发送给所有子进程,每一个子进程通过读写设备驱动连接对应的读写设备;其中,子进程可以通过调用读写设备驱动中的连接函数实现与读写设备的连接;

所述主进程将所有脚本逐一打包成脚本数据包,将不同的所述脚本数据包发送给对应的所述子进程的子线程;

所述子线程对所述脚本数据包进行解包处理得到操作指令;

所述子线程将所述操作指令中的读写设备的操作指令通过所述读写设备驱动发送给连接的读写设备,以使所述读写设备将所述读写设备的操作指令发送给所述智能卡执行或所述读写设备执行所述读写设备的操作指令;所述子线程通过所述读写设备驱动接收到所述读写设备返回的第一执行结果;

所述子线程将所述操作指令中除读写设备的操作指令之外的其他操作指令写入到请求队列中;

所述子进程的主线程执行所述请求队列中的其他操作指令得到第三执行结果,将第三执行结果放入响应队列中,所述子线程将响应队列中的第三执行结果发送给所述主进程。

在本发明另一个实施例中,当所述读写设备的操作指令为测试操作指令时,执行模块702具体用于采用以下方式实现子进程的主线程执行所述请求队列中的其他操作指令得到第三执行结果:子进程的主线程对第一执行结果执行请求队列中的其他操作指令得到第三执行结果。

本发明实施例通过主进程和子进程实现了对多个读写设备中的智能卡依次进行不同的操作;同时对多个读写设备中的智能卡进行相同的操作;同时对多个读写设备中的智能卡进行不同的操作,从而满足了对智能卡的多样化的操作需求。

本发明实施例将操作智能卡的三种操作模式有机地集成在一起,避免了重复开发,节省了测试资源和维护成本。具体的,支持串行模式、批量模式和并行模式3种模式操作智能卡,这将多样化的功能测试和批量发行的需求集成在同一工具中,减少了工具的二次开发,避免了不必要的资源浪费。

本发明实施例更好的满足了多样化的测试需求,提高了测试工具的自动化程度。具体的,串行模式支持对多个读写设备中的智能卡依次进行不同的操作,可以模拟实际应用中智能卡间交互操作的场景,既能实现使用终端、销售点终端安全存取模块(psam,purchasesecureaccessmodule)芯片、用户卡这三方安全数据认证的场景,又可模拟常见的金融应用场景,实现销售终端(pos,pointofsale)机芯片和银行卡的交互测试;批量模式支持同一时间对多个读写设备中的智能卡进行相同的操作(如:卡片初始化、应用功能压力测试等),满足了批量卡片发行及批量卡片压力测试的现实需求;并行模式实现了同一时间对多个读写设备中智能卡进行不同的操作,支持并行操作多张卡片,每张卡片处理不同应用的测试任务。

在本发明实施例中,如图8所示,智能卡操作装置是运行上计算机上的软件程序,智能卡与读写设备可以通过接触或非接触的方式连接,读写设备通过读写设备驱动与智能卡操作装置进行通信与数据交互。

智能卡操作装置持三种智能卡操作模式:串行模式,批量模式以及并行模式。

其中,串行模式是在一个脚本中串行操作至少一张智能卡,以模拟实际应用中多张智能卡交互操作的场景。

批量模式是至少一张智能卡在同一时间执行同一脚本,不同智能卡之间是相互独立的,以满足批量智能卡发行及批量智能卡压力测试的现实需求。

并行模式是至少一张智能卡在同一时间执行不同脚本,不同智能卡之间也是相互独立的,以实现并行操作多应用的测试任务。

本发明另一个实施例提出了一种智能卡操作装置,包括处理器和计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令被所述处理器执行时,实现上述任一种智能卡操作方法。

本发明另一个实施例提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种智能卡操作方法的步骤。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

虽然本发明实施例所揭露的实施方式如上,但所述的内容仅为便于理解本发明实施例而采用的实施方式,并非用以限定本发明实施例。任何本发明实施例所属领域内的技术人员,在不脱离本发明实施例所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明实施例的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1