数据传输方法及移动终端、SIM卡转让专利

申请号 : CN201210526471.7

文献号 : CN103874054B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 朱本浩郭漫雪

申请人 : 中国移动通信集团公司

摘要 :

本发明提供一种数据传输方法及移动终端、SIM卡,属于数据业务领域。其中,该数据传输方法,用以将客户端的第一APDU指令传输给SIM卡,所述方法包括:根据获取的透传APDU参数值对所述第一APDU指令进行封装;将封装后的第二APDU指令通过Modem发送给SIM卡;在接收到所述SIM卡返回的成功响应消息时,对所述成功响应消息进行解析得到SIM卡的应答数据,对所述应答数据进行逻辑处理后将处理结果发送给客户端。本发明的技术方案能够实现不同的行业用户的客户端与SIM卡之间的通信。

权利要求 :

1.一种数据传输方法,用以将客户端的第一APDU指令传输给SIM卡,其特征在于,所述方法包括:根据获取的透传APDU参数值对所述第一APDU指令进行封装;

将封装后的第二APDU指令通过Modem发送给SIM卡;

在接收到所述SIM卡返回的成功响应消息时,对所述成功响应消息进行解析得到SIM卡的应答数据,对所述应答数据进行逻辑处理后将处理结果发送给客户端。

2.根据权利要求1所述的数据传输方法,其特征在于,所述根据获取的透传APDU参数值对所述第一APDU指令进行封装之前还包括:获取移动终端的Modem的能力信息;

根据所述能力信息判断所述Modem是否完全支持逻辑通道透传指令;

在所述Modem不完全支持逻辑通道透传指令时,获取所述SIM卡对应的透传APDU参数值。

3.根据权利要求2所述的数据传输方法,其特征在于,所述获取所述SIM卡对应的透传APDU参数值包括:步骤a:获取Modem逻辑通道能够透传的APDU参数值推荐列表;

步骤b:从所述APDU参数值推荐列表中选择APDU参数值构造APDU协商开始指令;

步骤c:发送所述APDU协商开始指令至SIM卡,其中所述APDU协商开始指令中的P1P2为预设值;

步骤d:接收所述SIM卡的返回值,构建确认APDU指令,将所述确认APDU指令中的P1P2设为所述返回值;

步骤e:发送确认APDU指令至SIM卡;

步骤f:在接收所述SIM卡返回的成功响应,确定所选择的APDU参数值为所述透传APDU参数值;在接收到所述SIM卡返回的失败响应,返回步骤b。

4.根据权利要求1所述的数据传输方法,其特征在于,所述方法还包括:在未接收到SIM卡返回的成功响应消息时,重新获取透传APDU参数值,以便利用所述重新获取的透传APDU参数值对所述第一APDU指令进行封装。

5.一种数据传输方法,用以将客户端的第一APDU指令传输给SIM卡,其特征在于,所述方法包括:接收移动终端发送的第二APDU指令;

根据保存的透传APDU参数值对所述第二APDU指令进行解析,获取第一APDU指令;

将携带有所述第一APDU指令的应答数据的成功响应消息发送给所述移动终端。

6.根据权利要求5所述的数据传输方法,其特征在于,所述接收移动终端发送的第二APDU指令之前还包括:与所述移动终端协商确定所述透传APDU参数值。

7.一种移动终端,其特征在于,包括:

透传APDU封装模块,用于根据获取的透传APDU参数值对第一APDU指令进行封装,将封装后的第二APDU指令通过Modem发送给SIM卡;

响应解析模块,用于接收所述SIM卡返回的成功响应消息,对所述成功响应消息进行解析得到SIM卡的应答数据,并将所述应答数据发送给标准Open Mobile API模块;

所述标准Open Mobile API模块,用于对所述应答数据进行逻辑处理后,将处理结果发送给客户端。

8.根据权利要求7所述的移动终端,其特征在于,所述移动终端还包括:Modem能力获取模块,用于获取移动终端的Modem的能力信息,根据所述能力信息判断所述Modem是否完全支持逻辑通道透传指令;

透传APDU获取模块,用于在所述Modem不完全支持逻辑通道透传指令时,获取所述SIM卡对应的透传APDU参数值。

9.根据权利要求8所述的移动终端,其特征在于,所述透传APDU获取模块具体用于执行以下步骤:步骤a:获取Modem逻辑通道能够透传的APDU参数值推荐列表;

步骤b:从所述APDU参数值推荐列表中选择APDU参数值构造APDU协商开始指令;

步骤c:发送所述APDU协商开始指令至SIM卡,其中所述APDU协商开始指令中的P1P2为预设值;

步骤d:接收所述SIM卡的返回值,构建确认APDU指令,将所述确认APDU指令中的P1P2设为所述返回值;

步骤e:发送确认APDU指令至SIM卡;

步骤f:在接收所述SIM卡返回的成功响应,确定所选择的APDU参数值为所述透传APDU参数值;在接收到所述SIM卡返回的失败响应,返回步骤b。

10.根据权利要求7所述的移动终端,其特征在于,所述移动终端还包括:透传APDU协商模块,用于在所述响应解析模块未接收到SIM卡返回的成功响应消息时,重新获取透传APDU参数值,以便所述透传APDU封装模块利用所述重新获取的透传APDU参数值对所述第一APDU指令进行封装。

11.一种SIM卡,其特征在于,包括:

透传APDU模块,用于接收移动终端发送的第二APDU指令,根据保存的透传APDU参数值对所述第二APDU指令进行解析,获取第一APDU指令,将携带有所述第一APDU指令的应答数据的成功响应消息发送给所述移动终端。

12.根据权利要求11所述的SIM卡,其特征在于,所述透传APDU模块还用于与所述移动终端协商确定所述透传APDU参数值。

说明书 :

数据传输方法及移动终端、SIM卡

技术领域

[0001] 本发明涉及数据业务领域,特别是指一种数据传输方法、装置及移动终端。

背景技术

[0002] SIM(Subscriber Identity Module,客户识别模块)卡是移动通信中的重要组成部分,能够实现移动通信能力鉴权等核心功能,移动终端利用3GPP(The3rd Generation Partnership Project,第三代合作伙伴计划)/ETSI((EuropeanTelecommunications Standards Institute,欧洲电信标准化协会)标准协议实现与SIM卡的通信。
[0003] 随着NFC(Near Field Communication,近距离无线通讯技术)技术及手机支付应用市场的发展,出现了在SIM卡中加载银行、公交等不同行业应用情况。之前在SIM卡只有电信应用的时候,移动终端只有Modem(调制解调器)一个渠道与SIM卡通信,现在在SIM卡中加载其他应用后,还需要移动终端打通与SIM卡的数据通信通道,以实现不同的行业用户的客户端软件可以访问到SIM卡。
[0004] 目前,国际标准化组织SIM Alliance定义了Open Mobile API(开放移动应用程序接口)用以实现上述功能。如图1所示,Open Mobile API定义机制利用SIM的逻辑通道,以与主通道的电信应用进行区分,一方面向上层应用提供建立/关闭SIM卡逻辑通道、交互APDU(Application Protocol Data Unit,应用协议数据单元)的标准APDU,另一方面向下利用3GPP23.007中定义的CGLA标准AT指令,期望利用CGLA指令实现客户端发送的APDU指令从Modem透传至SIM卡。可见,这套架构是利用手机已有功能,需要完全依赖Modem与SIM卡进行通信。
[0005] 但是由于Modem在设计时主要是用来进行移动通信的,使得Modem很难将逻辑通道完全当做一个透传通道给其它行业使用,因此,Modem在逻辑通道上透传APDU的能力并不是很好。

发明内容

[0006] 本发明要解决的技术问题是提供一种数据传输方法及移动终端、SIM卡,能够实现不同的行业用户的客户端与SIM卡之间的通信。
[0007] 为解决上述技术问题,本发明的实施例提供技术方案如下:
[0008] 一方面,提供一种数据传输方法,用以将客户端的第一APDU指令传输给SIM卡,所述方法包括:
[0009] 根据获取的透传APDU参数值对所述第一APDU指令进行封装;
[0010] 将封装后的第二APDU指令通过Modem发送给SIM卡;
[0011] 在接收到所述SIM卡返回的成功响应消息时,对所述成功响应消息进行解析得到SIM卡的应答数据,对所述应答数据进行逻辑处理后将处理结果发送给客户端。
[0012] 进一步地,所述根据获取的透传APDU参数值对所述第一APDU指令进行封装之前还包括:
[0013] 获取移动终端的Modem的能力信息;
[0014] 根据所述能力信息判断所述Modem是否完全支持逻辑通道透传指令;
[0015] 在所述Modem不完全支持逻辑通道透传指令时,获取所述SIM卡对应的透传APDU参数值。
[0016] 进一步地,所述获取所述SIM卡对应的透传APDU参数值包括:
[0017] 步骤a:获取Modem逻辑通道能够透传的APDU参数值推荐列表;
[0018] 步骤b:从所述APDU参数值推荐列表中选择APDU参数值构造APDU协商开始指令;
[0019] 步骤c:发送所述APDU协商开始指令至SIM卡,其中所述APDU协商开始指令中的P1P2为预设值;
[0020] 步骤d:接收所述SIM卡的返回值,构建确认APDU指令,将所述确认APDU指令中的P1P2设为所述返回值;
[0021] 步骤e:发送确认APDU指令至SIM卡;
[0022] 步骤f:在接收所述SIM卡返回的成功响应,确定所选择的APDU参数值为所述透传APDU参数值;在接收到所述SIM卡返回的失败响应,返回步骤b。
[0023] 进一步地,所述方法还包括:
[0024] 在未接收到SIM卡返回的成功响应消息时,重新获取透传APDU参数值,以便利用所述重新获取的透传APDU参数值对所述第一APDU指令进行封装。
[0025] 本发明实施例还提供了一种数据传输方法,用以将客户端的第一APDU指令传输给SIM卡,所述方法包括:
[0026] 接收移动终端发送的第二APDU指令;
[0027] 根据保存的透传APDU参数值对所述第二APDU指令进行解析,获取第一APDU指令;
[0028] 将携带有所述第一APDU指令的应答数据的成功响应消息发送给所述移动终端。
[0029] 进一步地,所述接收移动终端发送的第二APDU指令之前还包括:
[0030] 与所述移动终端协商确定所述透传APDU参数值。
[0031] 本发明实施例还提供了一种移动终端,包括:
[0032] 透传APDU封装模块,用于根据获取的透传APDU参数值对所述第一APDU指令进行封装,将封装后的第二APDU指令通过Modem发送给SIM卡;
[0033] 响应解析模块,用于接收所述SIM卡返回的成功响应消息,对所述成功响应消息进行解析得到SIM卡的应答数据,并将所述应答数据发送给标准Open Mobile API模块;
[0034] 所述标准Open Mobile API模块,用于对所述应答数据进行逻辑处理后,将处理结果发送给客户端。
[0035] 进一步地,所述移动终端还包括:
[0036] Modem能力获取模块,用于获取移动终端的Modem的能力信息,根据所述能力信息判断所述Modem是否完全支持逻辑通道透传指令;
[0037] 透传APDU获取模块,用于在所述Modem不完全支持逻辑通道透传指令时,获取所述SIM卡对应的透传APDU参数值。
[0038] 进一步地,所述透传APDU获取模块具体用于执行以下步骤:
[0039] 步骤a:获取Modem逻辑通道能够透传的APDU参数值推荐列表;
[0040] 步骤b:从所述APDU参数值推荐列表中选择APDU参数值构造APDU协商开始指令;
[0041] 步骤c:发送所述APDU协商开始指令至SIM卡,其中所述APDU协商开始指令中的P1P2为预设值;
[0042] 步骤d:接收所述SIM卡的返回值,构建确认APDU指令,将所述确认APDU指令中的P1P2设为所述返回值;
[0043] 步骤e:发送确认APDU指令至SIM卡;
[0044] 步骤f:在接收所述SIM卡返回的成功响应,确定所选择的APDU参数值为所述透传APDU参数值;在接收到所述SIM卡返回的失败响应,返回步骤b。
[0045] 进一步地,所述移动终端还包括:
[0046] 透传APDU协商模块,用于在所述响应解析模块未接收到SIM卡返回的成功响应消息时,重新获取透传APDU参数值,以便所述透传APDU封装模块利用所述重新获取的透传APDU参数值对所述第一APDU指令进行封装。
[0047] 本发明实施例还提供了一种SIM卡,包括:
[0048] 透传APDU模块,用于接收移动终端发送的第二APDU指令,根据保存的透传APDU参数值对所述第二APDU指令进行解析,获取第一APDU指令,将携带有所述第一APDU指令的应答数据的成功响应消息发送给所述移动终端。
[0049] 进一步地,所述透传APDU模块还用于与所述移动终端协商确定所述透传APDU参数值。
[0050] 本发明的实施例具有以下有益效果:
[0051] 上述方案中,将实际需要传输的APDU指令封装在透传APDU指令中,通过Modem将透传APDU指令发送给SIM卡,从而实现将APDU指令发送给SIM卡,在不需要对客户端进行任何改动的前提下,提高了客户端与SIM卡之间通信的成功率。

附图说明

[0052] 图1为现有技术中Open Mobile API机制的示意图;
[0053] 图2为本发明实施例的数据传输方法的流程示意图;
[0054] 图3为本发明实施例的数据传输方法的另一流程示意图;
[0055] 图4为本发明实施例的移动终端和SIM卡的结构框图;
[0056] 图5为本发明实施例的移动终端的开机流程示意图;
[0057] 图6为本发明实施例的数据传输方法的具体流程示意图;
[0058] 图7为本发明实施例的透传指令协商流程示意图。

具体实施方式

[0059] 为使本发明的实施例要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
[0060] 现有的Open Mobile API定义机制是利用Modem在逻辑通道上透传APDU的能力,虽然利用的是Modem与SIM卡间的逻辑通道而非主通道通信,但是由于以下两个原因,导致Modem很难将逻辑通道完全当做一个透传通道给其它行业使用:
[0061] 1、世界上所有的Modem设计之初都是用来进行移动通信的,Modem所支持的3GPP11.11、11.14、ETSI102.221、102.225无一例外都是电信领域内的规范,至今多数Modem厂家不知道银行、公交及Global Platform标准,Modem对逻辑通道的要求很多是从主通道继承或者与主通道共用的,而之前电信、银行、公交都是各自领域中制定规范,其中难免有冲突及不一致的地方;例如6310返回码在银行应用是很普通,但电信应用从未涉及,许多Modem都会对6310返回码进行限制;
[0062] 2、ETSI102.221也规定了逻辑通道,电信应用在逻辑通道上也有很多要求(如VerifyPIN、Get Response等指令),因此Modem的逻辑通道不是完全通透而没有任何限制的[0063] 鉴于Modem的上述设计架构,Modem在逻辑通道上透传APDU的能力并不是很好。
[0064] 为了解决上述问题,本发明的实施例提供一种数据传输方法及移动终端、SIM卡,能够实现不同的行业用户的客户端与SIM卡之间的通信。
[0065] 本发明实施例提供一种数据传输方法,用以将客户端的第一APDU指令传输给SIM卡,如图2所示,所述方法包括:
[0066] 步骤201:根据获取的透传APDU参数值对第一APDU指令进行封装;
[0067] 步骤202:将封装后的第二APDU指令通过Modem发送给SIM卡;
[0068] 步骤203:在接收到SIM卡返回的成功响应消息时,对成功响应消息进行解析得到SIM卡的应答数据,对应答数据进行逻辑处理后将处理结果发送给客户端。
[0069] 进一步地,步骤201之前还包括:
[0070] 获取移动终端的Modem的能力信息;
[0071] 根据能力信息判断Modem是否完全支持逻辑通道透传指令;
[0072] 在Modem不完全支持逻辑通道透传指令时,获取SIM卡对应的透传APDU参数值。
[0073] 进一步地,获取SIM卡对应的透传APDU参数值包括:
[0074] 步骤a:获取Modem逻辑通道能够透传的APDU参数值推荐列表;
[0075] 步骤b:从所述APDU参数值推荐列表中选择APDU参数值构造APDU协商开始指令;
[0076] 步骤c:发送所述APDU协商开始指令至SIM卡,其中所述APDU协商开始指令中的P1P2为预设值;
[0077] 步骤d:接收所述SIM卡的返回值,构建确认APDU指令,将所述确认APDU指令中的P1P2设为所述返回值;
[0078] 步骤e:发送确认APDU指令至SIM卡;
[0079] 步骤f:在接收所述SIM卡返回的成功响应,确定所选择的APDU参数值为所述透传APDU参数值;在接收到所述SIM卡返回的失败响应,返回步骤b。
[0080] 进一步地,所述方法还包括:
[0081] 在未接收到SIM卡返回的成功响应消息时,重新获取透传APDU参数值,以便利用所述重新获取的透传APDU参数值对所述第一APDU指令进行封装。
[0082] 上述方案为本发明的数据传输方法中移动终端侧所执行的操作,相应地,本发明实施例还提供了一种数据传输方法,用以将客户端的第一APDU指令传输给SIM卡,该数据传输方法为SIM卡侧所执行的操作,如图3所示,所述方法包括:
[0083] 步骤301:接收移动终端发送的第二APDU指令;
[0084] 步骤302:根据保存的透传APDU参数值对第二APDU指令进行解析,获取第一APDU指令;
[0085] 步骤303:将携带有第一APDU指令的应答数据的成功响应消息发送给移动终端。
[0086] 进一步地,步骤301之前还包括:与移动终端协商确定透传APDU参数值。
[0087] 本发明的数据传输方法,将实际需要传输的APDU指令封装在透传APDU指令中,通过Modem将透传APDU指令发送给SIM卡,从而实现将APDU指令发送给SIM卡,在不需要对客户端进行任何改动的前提下,提高了客户端与SIM卡之间通信的成功率。
[0088] 本发明实施例还提供了一种移动终端,如图4所示,移动终端包括:
[0089] 透传APDU封装模块44,用于根据获取的透传APDU参数值对第一APDU指令进行封装,将封装后的第二APDU指令通过Modem发送给SIM卡;
[0090] 响应解析模块45,用于接收SIM卡返回的成功响应消息,对成功响应消息进行解析得到SIM卡的应答数据,并将应答数据发送给标准Open MobileAPI模块;
[0091] 标准Open Mobile API模块40,用于对应答数据进行逻辑处理后,将处理结果发送给客户端。
[0092] 进一步地,移动终端还包括:
[0093] Modem能力获取模块41,用于获取移动终端的Modem的能力信息,根据能力信息判断Modem是否完全支持逻辑通道透传指令;
[0094] 透传APDU获取模块42,用于在Modem不完全支持逻辑通道透传指令时,获取SIM卡对应的透传APDU参数值。
[0095] 进一步地,透传APDU获取模块42具体用于执行以下步骤:
[0096] 步骤a:获取Modem逻辑通道能够透传的APDU参数值推荐列表;
[0097] 步骤b:从所述APDU参数值推荐列表中选择APDU参数值构造APDU协商开始指令;
[0098] 步骤c:发送所述APDU协商开始指令至SIM卡,其中所述APDU协商开始指令中的P1P2为预设值;
[0099] 步骤d:接收所述SIM卡的返回值,构建确认APDU指令,将所述确认APDU指令中的P1P2设为所述返回值;
[0100] 步骤e:发送确认APDU指令至SIM卡;
[0101] 步骤f:在接收所述SIM卡返回的成功响应,确定所选择的APDU参数值为所述透传APDU参数值;在接收到所述SIM卡返回的失败响应,返回步骤b。
[0102] 进一步地,移动终端还包括:
[0103] 透传APDU协商模块43,用于在响应解析模块未接收到SIM卡返回的成功响应消息时,重新获取透传APDU参数值,以便透传APDU封装模块利用重新获取的透传APDU参数值对第一APDU指令进行封装。
[0104] 本发明实施例还提供了一种SIM卡,如图3所示,该SIM卡包括:
[0105] 透传APDU模块46,用于接收移动终端发送的第二APDU指令,根据保存的透传APDU参数值对第二APDU指令进行解析,获取第一APDU指令,将携带有第一APDU指令的应答数据的成功响应消息发送给移动终端。
[0106] 进一步地,透传APDU模块46还用于与移动终端协商确定透传APDU参数值。
[0107] 本发明的技术方案中,移动终端将实际需要传输的APDU指令封装在透传APDU指令中,通过Modem将透传APDU指令发送给SIM卡,从而实现将APDU指令发送给SIM卡,在不需要对客户端进行任何改动的前提下,提高了客户端与SIM卡之间通信的成功率。
[0108] 下面结合附图4-7对本发明的数据传输方法进行进一步地介绍:
[0109] 本发明实施例中,对移动终端和SIM卡的结构进行改进,在移动终端中增加了标准Open Mobile API模块40、Modem能力获取模块41、透传APDU获取模块42、透传APDU协商模块43、透传APDU封装模块44和响应解析模块45,在SIM卡中添加了透传APDU模块46。
[0110] 其中,所有的客户端下发的与SIM卡交互的指令均由标准Open MobileAPI模块受理,由开机时对该模块的配置决定是采用标准API处理方式还是扩展的透传方式;Modem能力获取模块能够获取Modem的能力信息,并根据该能力信息判断本移动终端的Modem是否有能力直接使用标准的Open MobileAPI模块;透传APDU获取模块42能够获取SIM卡对应的透传APDU参数值,透传APDU参数值包括可透过Modem的APDU指令的CLS(类别字节)和INS(指令字节)的值,这两者共同决定机卡接口的消息类型。本实施例需要为透传APDU封装模块配置CLS和INS,这样透传APDU封装模块可根据CLS和INS将APDU指令封装为能够透传的APDU指令;透传APDU协商模块能够在透传APDU获取模块获取透传APDU参数值失败时,与SIM卡协商再次获取透传APDU参数值;响应解析模块能够对SIM卡返回的数据进行解析。
[0111] 如图5所示为移动终端的开机流程图,包括以下步骤:
[0112] 步骤51:移动终端开机,上传SIM卡的IMEI(International MobileEquipment Identity,国际移动设备身份码)及移动终端的版本至移动终端的后台系统,比如DM系统;
[0113] 步骤52:判断后台系统是否存储有移动终端的Modem的能力信息,若是,转向步骤53;若否,转向步骤54。由于Modem模块版本众多,无法在移动终端中进行管理,可以在API(Application Programming Interface,应用程序编程接口)中扩展Modem能力获取模块借助后台系统,获取Modem的能力;
[0114] 步骤53:Modem能力获取模块获取Modem的能力信息,根据该能力信息判断本移动终端的Modem是否有能力直接使用标准的Open MobileAPI模块,若是,则标准Open Mobile API模块无需做任何改动,可以直接调用AT指令与Modem通信;如果Modem不支持或不明确支持Open MobileAPI的机制,则需要通知标准Open Mobile API模块需要通过透传APDU封装模块向Modem传递APDU指令,转向步骤54;
[0115] 步骤54:所有的客户端下发的与SIM卡交互的APDU指令均由标准OpenMobile API模块受理,因此在开机时需要对该模块进行配置以决定是采用标准API处理方式还是扩展的透传方式。在Modem不支持或不明确支持OpenMobile API的机制时,需要通知标准Open Mobile API模块需通过透传APDU模块进行APDU的封装和响应解析;
[0116] 步骤55:获取SIM卡IMSI,通过透传APDU获取模块,获取该SIM卡对应的透传APDU参数值,透传APDU参数值包括可透过Modem的APDU指令的CLS(类别字节)和INS(指令字节)的值,这两者共同决定机卡接口的消息类型。本实施例需要为透传APDU封装模块配置CLS和INS,这样透传APDU封装模块可根据CLS和INS将APDU指令封装为能够透传的APDU指令;
[0117] 步骤56:判断是否能够获取透传APDU参数值,该步骤中通过透传APDU获取模块查询SIM卡是否有变动、是否能够获取前面成功的透传APDU参数值,若是,转向步骤57;若否,转向步骤58;
[0118] 步骤57:获取前次成功传输的透传指令的CLS、INS,并通知透传APDU风转模块使用。
[0119] 步骤58:调用透传APDU协商模块获得可以使用的透传指令的CLS、INS,并通知透传APDU风转模块使用。
[0120] 因为逻辑通道上传输的APDU指令用于各行各业,每个行业对APDU定义也不尽相同,很难定义一个固定的CLS、INS用于透传APDU指令,因此需要一套协商机制来动态的找出目前可以透过Modem及SIM卡Applet(小应用程序)的透传APDU指令的CLS、INS,如图6所示,该协商过程包括以下步骤:
[0121] 首先通过Modem能力获取模块从后台系统获得该Modem逻辑通道上可能透传的CLS、INS推荐列表。在形成CLS、INS推荐列表时,需要借助平台侧的力量,去掉行业应用明显已经使用的APDU、特定Modem产品拒绝的APDU的CLS、INS,形成一个透传APDU的CLS、INS推荐列表。在每次协商时,可以由Modem能力获取模块去后台系统获得这个推荐列表,这个推荐列表的内容可以随着行业应用的不断深入而变化。
[0122] 透传APDU获取模块从CLS、INS推荐列表中选择拟将传输使用的CLS、INS,利用选择的CLS、INS作为指令头构建透传APDU协商开始指令,该指令中,P1P2为预设的特定值,Len=0,之后将透传APDU协商开始指令发送给SIM卡。
[0123] 如果SIM卡中有Applet识别该透传APDU协商开始指令,则按照Applet定义返回;如果SIM卡中没有Applet能够识别该透传APDU协商开始指令,则传递给透传APDU模块进行处理,由于此时该透传APDU协商开始指令已经能够正常透过Modem,因此透传APDU模块会记录一个状态并随机返回一个ETSI102.221中定义的非9XXX/6XXX的返回码(这是为了能够成功透传过Modem)。
[0124] 移动终端收到该返回码后,将返回码填入P1P2,继续用上一条透传APDU协商开始指令中的CLS、INS构建确认APDU指令,并将确认APDU指令发送给SIM卡。
[0125] 如果SIM卡中有Applet识别该确认APDU指令,则返回错误码;如果SIM卡中没有Applet识别该确认APDU指令,则传递给透传APDU模块进行处理,透传APDU模块收到后会进行比对,如果该确认APDU指令的CLS、INS与上一条透传APDU协商开始指令中的CLS、INS一致,且本条确认APDU指令中的P1P2值为上次的返回码,则确定该CLS、INS作为APDU透传指令可以透过Modem及SIM卡Applet,可后续使用,返回9000移动终端。
[0126] 如果移动终端接收到的返回值为9000,则说明当前选择的CLS、INS能够用于透传APDU指令;如果移动终端接收到的返回值不是9000,则移动终端需要重复上述步骤,从CLS、INS推荐列表中重新选择拟将传输使用的CLS、INS。
[0127] 在获取能够用于透传APDU指令的CLS、INS之后,即可实现客户端与SIM卡之间的通信,如图7所示,本发明的数据传输方法具体包括以下步骤:
[0128] 步骤701:客户端调用标准Open Mobile API模块向SIM卡传递数据,所有的客户端下发的与SIM卡交互的APDU指令均由标准Open Mobile API模块受理;
[0129] 步骤702:判断是否需要调用透传APDU模块进行数据传输,若是,转向步骤704;若否,转向步骤703;
[0130] 由移动终端开机时对标准Open Mobile API模块的配置可以决定是采用标准API处理方式还是扩展的透传方式。如果该模块的配置为采用标准API处理方式,则转向步骤703;如果是采用扩展的透传方式,转向步骤704;
[0131] 步骤703:通知标准Open Mobile API模块直接调用AT指令与Modem通信;
[0132] 步骤704:将客户端需要传递的APDU指令发送给透传APDU封装模块;
[0133] 步骤705:透传APDU封装模块用可以透过Modem的CLS、INS对原有APDU指令进行封装;
[0134] 在采用扩展的透传方式时,需要调用透传APDU封装模块对待传递的APDU指令用以下的方式封装
[0135]
[0136] 其中,CLS、INS为经过图6所示步骤获取的能够用于透传APDU指令的CLS、INS。
[0137] 步骤706:透传APDU封装模块调用AT+CGLA指令,向Modem传输封装后的APDU指令;
[0138] 步骤707:判断Modem是否成功传递封装后的APDU指令,若是,转向步骤708;若否,转向步骤709;
[0139] 对于封装后的APDU指令,通过3GPP27.007AT+CGLA指令向Modem下发,如果Modem未成功下发该指令或SIM卡拒绝了该指令(返回码非9000),即证明透传APDU所使用的CLS、INS不能成功透过Modem或SIM卡(例如本次传递仍使用上次成功透传的CLS、INS,但是在此期间SIM卡中新安装应用,且该应用与上次成功透传的CLS、INS冲突,从而造成本次失败),需要重新调用透传APDU协商模块再次协商一套可以成功透传的CLS、INS,转向步骤708。
[0140] 如果封装后的APDU指令可以成功透传至SIM卡,当SIM卡Applet不认得该CLS、INS后需要调用SIM卡中透传APDU模块进行解析,透传APDU模块比对当前自身存储的用于透明传输的CLS、INS,如果一致,则去除CLS、INS、P1、P2,仅将Data中的数据返回给SIM卡Applet进行后续处理;如果不一致,则认为不是用于透明传输,返回给SIM卡Applet进行错误处理(如返回不支持的CLS/INS等错误)。
[0141] SIM卡Applet对指令处理结束后,应答数据仍然交给SIM卡中透传APDU模块进行封装,无论Applet处理结果如何,该透传APDU模块都在原有应答数据后添加9000成功状态字返回,以便顺利通过Modem。
[0142] 步骤708:判断SIM卡是否成功返回9000码和应答数据,若是,转向步骤711;若否,转向步骤709;
[0143] 步骤709:调用透传APDU协商模块,经过图6所示步骤重新获取能够用于透传APDU指令的CLS、INS;
[0144] 步骤710:通知透传APDU封装模块使用新协商的CLS、INS,转向步骤705;
[0145] 步骤711:调用响应解析模块,将SIM卡返回的应答数据发送给标准OpenMobile API模块;
[0146] Modem将Applet返回的9000状态字+应答是数据发送给移动终端中的响应解析模块,由响应解析模块去除9000状态字后,将应答数据发送给标准OpenMobile API模块。
[0147] 步骤712:标准Open Mobile API模块对应答数据进行逻辑处理并将处理结果返回给客户端。
[0148] 本发明的数据传输方法,将实际需要传输的APDU指令封装在透传APDU指令中,通过Modem将透传APDU指令发送给SIM卡,从而实现将APDU指令发送给SIM卡,在不需要对客户端进行任何改动的前提下,提高了客户端与SIM卡之间通信的成功率。与现有的Open Mobile API标准相比,增强了对不同行业的适应性,不同行业的客户端均可访问SIM卡的卡应用,不存在任何兼容性问题
[0149] 此说明书中所描述的许多功能部件都被称为模块,以便更加特别地强调其实现方式的独立性。
[0150] 本发明实施例中,模块可以用软件实现,以便由各种类型的处理器执行。举例来说,一个标识的可执行代码模块可以包括计算机指令的一个或多个物理或者逻辑块,举例来说,其可以被构建为对象、过程或函数。尽管如此,所标识模块的可执行代码无需物理地位于一起,而是可以包括存储在不同物理上的不同的指令,当这些指令逻辑上结合在一起时,其构成模块并且实现该模块的规定目的。
[0151] 实际上,可执行代码模块可以是单条指令或者是许多条指令,并且甚至可以分布在多个不同的代码段上,分布在不同程序当中,以及跨越多个存储器设备分布。同样地,操作数据可以在模块内被识别,并且可以依照任何适当的形式实现并且被组织在任何适当类型的数据结构内。所述操作数据可以作为单个数据集被收集,或者可以分布在不同位置上(包括在不同存储设备上),并且至少部分地可以仅作为电子信号存在于系统或网络上。
[0152] 在模块可以利用软件实现时,考虑到现有硬件工艺的水平,所以可以以软件实现的模块,在不考虑成本的情况下,本领域技术人员都可以搭建对应的硬件电路来实现对应的功能,所述硬件电路包括常规的超大规模集成(VLSI)电路或者门阵列以及诸如逻辑芯片、晶体管之类的现有半导体或者是其它分立的元件。模块还可以用可编程硬件设备,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等实现。
[0153] 在本发明各方法实施例中,所述各步骤的序号并不能用于限定各步骤的先后顺序,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,对各步骤的先后变化也在本发明的保护范围之内。
[0154] 以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。