CN102547661A - 一种Android系统与电信智能卡通信的方法及装置 - Google Patents
一种Android系统与电信智能卡通信的方法及装置 Download PDFInfo
- Publication number
- CN102547661A CN102547661A CN2011104246539A CN201110424653A CN102547661A CN 102547661 A CN102547661 A CN 102547661A CN 2011104246539 A CN2011104246539 A CN 2011104246539A CN 201110424653 A CN201110424653 A CN 201110424653A CN 102547661 A CN102547661 A CN 102547661A
- Authority
- CN
- China
- Prior art keywords
- data content
- apdu
- interface function
- cartoon letters
- instruction
- 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
Links
Images
Abstract
本发明公开了一种Android系统与电信智能卡通信的方法,用以实现Android系统和电信智能卡之间的通信。该方法为:根据Android系统电话进程中用于与电信智能卡通信的类获取与电信智能卡通信的对象的接口函数,根据接收的访问电信智能卡的应用程序协议数据单元APDU指令,获取需要与电信智能卡通信的数据内容,调用所述接口函数,将所述数据内容重组为APDU指令,并将重组后的APDU指令发送至所述电信智能卡。本发明同时公开了一种Android系统与电信智能卡通信的装置。
Description
技术领域
本发明涉及通信和智能卡技术领域,尤其一种Android系统与电信智能卡通信的方法及装置。
背景技术
目前,很多智能手机都采用Android系统平台,但是在Android系统中,出于安全考虑,直接与SIM(Subscriber Identity Module,用户身份识别模块)卡通信的接口被屏蔽,使得第三方应用程序不能直接与SIM卡进行数据交互,从而导致第三方应用程序无法直接使用SIM卡提供的服务。
现有技术中,第三方应用程序直接利用已封装的用于读写SIM卡电话本或短消息的方法(即函数)间接访问SIM卡,该访问方式一方面破坏了现有SIM卡电话本或短消息的本身应用规则,另一方面也为第三方应用程序使用的SIM卡服务带来了隐患,使得SIM卡作为安全服务载体的价值受到较大的限制。
发明内容
本发明提供一种Android系统与电信智能卡通信的方法及装置,用以实现Android系统和电信智能卡之间的通信,为第三方应用程序使用电信智能卡提供的各种服务提供高效、安全的环境。
本发明实施例提供的具体技术方案如下:
一种Android系统与电信智能卡通信的方法,包括:
根据Android系统电话进程中用于与电信智能卡通信的类获取与电信智能卡通信的对象的接口函数;
根据接收的访问电信智能卡的应用程序协议数据单元APDU指令,获取需要与电信智能卡通信的数据内容;
调用所述接口函数,将所述数据内容重组为APDU指令,并将重组后的APDU指令发送至所述电信智能卡。
一种Android系统与电信智能卡通信的装置,包括:
第一处理单元,用于根据Android系统电话进程中用于与电信智能卡通信的类获取与电信智能卡通信的对象的接口函数;
第二处理单元,用于根据接收的访问电信智能卡的应用程序协议数据单元APDU指令,获取需要与电信智能卡通信的数据内容;
第三处理单元,用于调用所述接口函数,将所述数据内容重组为APDU指令,并将所述重组后的APDU指令发送至所述电信智能卡。
基于上述技术方案,本发明实施例中,根据Android系统电话进程中用于与电信智能卡通信的类获取与电信智能卡通信的对象的接口函数后,根据接收的访问电信智能卡的APDU指令,获取需要与电信智能卡通信的数据内容,并调用接口函数将该数据内容重组为APDU指令,将重组后的APDU指令发送至电信智能卡,从而通过Android系统直接与电信智能卡进行通信,使第三方应用程序可以在高效、安全的环境下使用电信智能卡提供的各种服务。
附图说明
图1为本实施例中Android系统与电信智能卡通信的方法流程图;
图2为本实施例中第三方应用程序、与电信智能卡通信的类、电话进程的关系示意图;
图3为本实施例中Android系统与电信智能卡通信的装置结构图。
具体实施方式
为了通过Android系统和电信智能卡通信,为第三方应用程序直接使用电信智能卡提供的各种服务提供高效、安全的环境,本发明实施例提供了一种Android系统与电信智能卡通信的方法。
下面结合附图对本发明优选的实施方式进行详细说明。
如附图1所示,本发明实施例中,Android系统与SIM卡通信的详细方法流程如下:
步骤101:根据Android系统电话进程中用于与电信智能卡通信的类获取与电信智能卡通信的对象的接口函数。
实际应用中,与电信智能卡通信的对象为Android系统电话进程(即phone进程)中的CommandsInterface对象,接口函数包括第一接口函数(sendEnvelope成员函数)和第二接口函数(iccIO成员函数)。
较佳地,获取与电信智能卡通信的对象的接口函数后,将该对象包含的第一接口函数和第二接口函数封装为一接口对象,该接口对象用于第三方应用程序与电信智能卡通信时直接调用。
其中,Android系统电话进程中预置有与电信智能通信的类。
其中,在Android系统电话进程中预置与电信智能卡通信的类时,将采用移动终端厂商提供的platform私钥签名对该程序签名后下载安装至Android系统电话进程的过程中,电话进程采用预置的platform公钥对该类进行验签,并在验签通过后进行安装。
电话进程是Android系统的核心模块,主要负责管理与电话相关的功能,例如,收发短消息、通话管理及与SIM卡的交互等。本实施例中,将与电信智能卡通信的类安装至Android系统的电话进程中,使得该类具有电话进程的权限,能够与电信智能卡进行通信。如附图2所示,为第三方应用程序、与电信智能卡通信的类、电话进程的关系示意图。
步骤102:根据接收的访问电信智能卡的应用程序协议数据单元(APDU)指令,获取需要与电信智能卡通信的数据内容。
实际应用中,第三方应用程序可以直接发送APDU指令,也可以发送与电信智能卡通信的数据内容,在发送数据内容时,按照与APDU指令各字节相一致的顺序发送。
较佳地,获取需要与电信智能卡通信的数据内容之前,接收第三方应用程序发送的签名信息,采用预设的公钥验证签名信息的有效性,并在确定签名信息有效后,获取需要与电信智能卡通信的数据内容,该签名信息为根据第三方应用程序的程序包生成数字摘要后,采用预设的私钥对数字摘要进行加密生成。通过对第三方应用程序进行认证,以保证电信智能卡数据的安全,能够对访问电信智能卡的机制进行安全控制,保证正常的电信应用不受影响。
步骤103:调用接口函数,将数据内容重组为APDU指令,并将重组后的APDU指令发送至电信智能卡。
其中,将数据内容重组为APDU指令,具体为:判断数据内容的预定字节是否为设定值,若是,则调用与电信智能卡通信的对象的第一接口函数,将该数据内容重组为ppDownload指令;否则,调用与电信智能卡通信的对象的第二接口函数将数据内容重组为ppDownload指令之外的其他APDU指令。
具体地,判断接收的APDU指令的第二字节对应的数据是否为0xC2,若是,则调用sendEnvelope成员函数,否则,调用iccIO成员函数。
较佳地,将重组后的APDU指令发送至电信智能卡后,调用接口函数,接收电信智能卡返回的APDU响应,并获取APDU响应中携带的处理结果信息。
本实施例中,在将与电信智能卡通信的程序下载至phone进程中时,还需要将与电信智能卡通信的类对应的进程的属性设置为“com.android.phone”。例如,可采用语句android:process=“com.android.phone”设置进程属性。
其中,与电信智能卡通信的类调用phone进程中与电信智能卡通信的CommandsInterface对象时,由于CommandsInterface对象是作为一个私有变量存在于phone进程中,需要采用Java语言的反射技术获得。
例如,调用CommandsInterface对象的具体代码如下所示:
StkService mStkService=(StkService)StkService.getInstance();//获取StkService对象
Field field=mStkService.getClass().getDeclaredField(“mCmdIf”);//获取成员变量名为mCmdIf的私有变量
field.setAccessible(true);//将私有变量设置为可以访问
Object obj=field.get(mStkService);//获取属性为CommandsInterfàce的值
CommandsInterface mCM=(CommandsInterface)obj;//强制类型转换
具体地,获取需要与电信智能卡通信的数据内容为APDU指令中除第一字节外的所有数据内容,或者APDU指令中第二字节和数据域的数据内容。其中,调用sendEnvelope成员函数时,相应的与电信智能卡通信的数据内容为APDU指令中第二字节和数据域的数据内容,调用iccIO成员函数时,相应的与电信智能卡通信的数据内容为APDU指令中除第一字节外的所有数据内容。
例如,CommandsInterface实例中的iccIO和sendEnvelope成员函数表示如下:
mCM.iccIO(command,fileid,path,p1,p2,p3,data,pin2,response);//command为APDU的第二字节的内容,表示指令类型,fileid为目标文件标识,path为目标文件路径,p1、p2、p3为APDU第三、四、五字节的内容,data为APDU命令体数据,pin2参数留空,response用于接收SIM卡返回的APDU指令中包含的处理结果信息。
mCM.sendEnvelope(data,response);//对应data为APDU指令A0C2000000之后的APDU命令体数据,response用于接收SIM卡返回的APDU指令中包含的处理结果信息。
其中,SIM卡对接收的APDU指令的处理结果信息通过response参数返回。
本实施例中,在将iccIO和sendEnvelope接口函数封装为接口对象时,具体可以采用Android接口描述语言(AIDL语言)对iccIO和sendEnvelope接口函数进行封装,即将与电信智能卡通信的服务以AIDL方式公开。第三方应用程序可以直接调用对iccIO和sendEnvelope接口函数封装得到的接口对象,基于该接口对象中的iccIO或sendEnvelope接口函数,将与电信智能卡通信的数据内容重组为APDU指令发送给电信智能卡,以及获取电信智能卡返回的APDU指令中包含的处理结果信息。通过封装为接口对象,可以使得第三方应用程序直接调用该接口对象与电信智能卡进行通信,即可以将接口对象面向所有的第三方应用程序。
例如,将CommandsInterface实例中的iccIO和sendEnvelope接口函数封装为一接口对象,代码表示如下:
在接口对象中,如果command的值等于0xC2则调用CommandsInterface对象中的sendEnvelope接口函数,否则调用CommandsImerfàce实例中的iccIO接口函数。
基于上述原理,如附图3所示,本发明实施例中,Android系统与电信智能卡通信的装置主要包括以下处理单元:
第一处理单元301,用于根据Android系统电话进程中用于与电信智能卡通信的类获取与电信智能卡通信的对象的接口函数;
第二处理单元302,用于根据接收的访问电信智能卡的应用程序协议数据单元(APDU)指令,获取需要与电信智能卡通信的数据内容;
第三处理单元303,用于调用接口函数,将数据内容重组为APDU指令,并将重组后的APDU指令发送至电信智能卡。
基于上述技术方案,本发明实施例中,根据Android系统电话进程中用于与电信智能卡通信的类获取与电信智能卡通信的对象的接口函数后,根据接收的访问电信智能卡的APDU指令,获取需要与电信智能卡通信的数据内容,并调用接口函数将该数据内容重组为APDU指令,将重组后的APDU指令发送至电信智能卡,从而通过Android系统直接与电信智能卡进行通信,使第三方应用程序可以在高效、安全的环境下使用电信智能卡提供的各种服务。
并且,本发明实施例中,通过将CommandsInterface对象中的iccIO和sendEnvelope接口函数封装为一接口对象,从而能够使得该接口对象面向第三方应用程序公开,使得第三方应用程序通过该接口对象直接与电信智能卡进行通信。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种Android系统与电信智能卡通信的方法,其特征在于,包括:
根据Android系统电话进程中用于与电信智能卡通信的类获取与电信智能卡通信的对象的接口函数;
根据接收的访问电信智能卡的应用程序协议数据单元APDU指令,获取需要与电信智能卡通信的数据内容;
调用所述接口函数,将所述数据内容重组为APDU指令,并将重组后的APDU指令发送至所述电信智能卡。
2.如权利要求1所述的方法,其特征在于,将所述数据内容重组为APDU指令,包括:
判断所述数据内容的预定字节是否为设定值,若是,则调用所述对象的第一接口函数,将所述数据内容重组为ppDownload指令;
否则,调用所述对象的第二接口函数将所述数据内容重组为所述ppDownload指令之外的其他APDU指令。
3.如权利要求2所述的方法,其特征在于,获取与电信智能卡通信的对象的接口函数后,还包括:
将所述对象包含的第一接口函数和第二接口函数封装为一接口对象,所述接口对象用于第三方应用程序与所述电信智能卡通信时直接调用;
在所述接口对象被所述第三方应用程序调用后,获取需要与所述电信智能卡通信的数据内容,调用所述接口对象包含的第一接口函数或第二接口函数将所述数据内容重组为APDU指令,并发送至所述电信智能卡。
4.如权利要求3所述的方法,其特征在于,获取需要与电信智能卡通信的数据内容之前,还包括:
接收所述第三方应用程序发送的签名信息,采用预设的公钥验证所述签名信息的有效性,并在确定所述签名信息有效后,获取需要与电信智能卡通信的数据内容,所述签名信息为根据所述第三方应用程序的程序包生成数字摘要后,采用预设的私钥对所述数字摘要进行加密生成。
5.如权利要求1-4任一项所述的方法,其特征在于,将重组后的APDU指令发送至所述电信智能卡后,包括:
调用所述接口函数,接收所述电信智能卡返回的APDU响应,并获取所述APDU响应中携带的处理结果信息。
6.一种Android系统与电信智能卡通信的装置,其特征在于,包括:
第一处理单元,用于根据Android系统电话进程中用于与电信智能卡通信的类获取与电信智能卡通信的对象的接口函数;
第二处理单元,用于根据接收的访问电信智能卡的应用程序协议数据单元APDU指令,获取需要与电信智能卡通信的数据内容;
第三处理单元,用于调用所述接口函数,将所述数据内容重组为APDU指令,并将所述重组后的APDU指令发送至所述电信智能卡。
7.如权利要求6所述的装置,其特征在于,所述第三处理单元具体用于调用所述接口函数,将所述数据内容重组APDU指令时,判断所述数据内容的预定字节是否为设定值,若是,则调用所述对象的第一接口函数,将所述数据内容重组为ppDownload指令,否则,调用所述对象的第二接口函数将所述数据内容重组为所述ppDownload指令之外的其他APDU指令。
8.如权利要求7所述的装置,其特征在于,所述第一处理单元获取与电信智能卡通信的对象的接口函数后,还用于:将所述对象包含的第一接口函数和第二接口函数封装为一接口对象,所述接口对象用于第三方应用程序与所述电信智能卡通信时直接调用;
所述第三处理单元还用于调用所述接口对象后,获取需要与所述电信智能卡通信的数据内容,将所述数据内容重组为符合规范的APDU指令。
9.如权利要求8所述的装置,其特征在于,所述第二处理单元获取需要与电信智能卡通信的数据内容之前,还用于:接收所述第三方应用程序发送的签名信息,采用预设的公钥验证所述签名信息的有效性,并在确定所述签名信息有效后,获取需要与电信智能卡通信的数据内容,所述签名信息为根据所述第三方应用程序的程序包生成数字摘要后,采用预设的私钥对所述数字摘要进行加密生成。
10.如权利要求6-9任一项所述的装置,其特征在于,所述第三处理单元将重组后的APDU指令发送至所述电信智能卡后,还用于:
调用所述接口函数,接收所述电信智能卡返回的APDU响应,并获取所述APDU响应中携带的处理结果信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110424653.9A CN102547661B (zh) | 2011-12-16 | 2011-12-16 | 一种Android系统与电信智能卡通信的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110424653.9A CN102547661B (zh) | 2011-12-16 | 2011-12-16 | 一种Android系统与电信智能卡通信的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102547661A true CN102547661A (zh) | 2012-07-04 |
CN102547661B CN102547661B (zh) | 2014-06-04 |
Family
ID=46353371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110424653.9A Active CN102547661B (zh) | 2011-12-16 | 2011-12-16 | 一种Android系统与电信智能卡通信的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102547661B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455349A (zh) * | 2013-08-27 | 2013-12-18 | 中国联合网络通信集团有限公司 | 应用程序访问智能卡的方法和装置 |
CN103874054A (zh) * | 2012-12-07 | 2014-06-18 | 中国移动通信集团公司 | 数据传输方法及移动终端、sim卡 |
CN104077618A (zh) * | 2013-03-29 | 2014-10-01 | 西门子公司 | 一种访问智能卡的方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216758A (zh) * | 2007-12-27 | 2008-07-09 | 东信和平智能卡股份有限公司 | 智能卡开放应用的开发方法 |
CN101616415A (zh) * | 2006-09-13 | 2009-12-30 | 北京握奇数据系统有限公司 | 移动通信用户身份识别卡信息直接交互方法及其支持设备 |
CN101902741A (zh) * | 2010-07-21 | 2010-12-01 | 中兴通讯股份有限公司 | 移动终端及其接入网络的方法 |
US20110167434A1 (en) * | 2008-07-14 | 2011-07-07 | Nyotron Information Security, Ltd. | System and method for reacting to system calls made to a kernal of the system |
-
2011
- 2011-12-16 CN CN201110424653.9A patent/CN102547661B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101616415A (zh) * | 2006-09-13 | 2009-12-30 | 北京握奇数据系统有限公司 | 移动通信用户身份识别卡信息直接交互方法及其支持设备 |
CN101216758A (zh) * | 2007-12-27 | 2008-07-09 | 东信和平智能卡股份有限公司 | 智能卡开放应用的开发方法 |
US20110167434A1 (en) * | 2008-07-14 | 2011-07-07 | Nyotron Information Security, Ltd. | System and method for reacting to system calls made to a kernal of the system |
CN101902741A (zh) * | 2010-07-21 | 2010-12-01 | 中兴通讯股份有限公司 | 移动终端及其接入网络的方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103874054A (zh) * | 2012-12-07 | 2014-06-18 | 中国移动通信集团公司 | 数据传输方法及移动终端、sim卡 |
CN103874054B (zh) * | 2012-12-07 | 2017-09-15 | 中国移动通信集团公司 | 数据传输方法及移动终端、sim卡 |
CN104077618A (zh) * | 2013-03-29 | 2014-10-01 | 西门子公司 | 一种访问智能卡的方法和装置 |
CN103455349A (zh) * | 2013-08-27 | 2013-12-18 | 中国联合网络通信集团有限公司 | 应用程序访问智能卡的方法和装置 |
CN103455349B (zh) * | 2013-08-27 | 2016-08-10 | 中国联合网络通信集团有限公司 | 应用程序访问智能卡的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102547661B (zh) | 2014-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1216538B1 (en) | Method and apparatus for executing secure data transfer in a wireless network | |
EP2388968B1 (en) | System and method for downloading application | |
US8914489B2 (en) | Method of personalizing an application embedded in a secured electronic token | |
US9690950B2 (en) | Method for exporting data of a Javacard application stored in a UICC to a host | |
US6504932B1 (en) | Method of transferring information between a subscriber identification module and a radiocommunication mobile terminal, and a corresponding subscriber identification module and mobile terminal | |
KR101701668B1 (ko) | 서비스 액세스를 위한 방법, 대응하는 디바이스 및 시스템 | |
US20110047257A1 (en) | System and method for installing smart card applet | |
CN104168557A (zh) | 操作系统的升级方法和操作系统的升级装置 | |
CN111479259B (zh) | Sim卡配置分发方法及系统 | |
CN102724315A (zh) | 基于智能卡网页服务器实现智能卡远程操作的方法及系统 | |
CN105701427B (zh) | 一种智能卡写入数据的方法及装置 | |
CN103249014A (zh) | 加密移动通讯的短信的方法 | |
CN104507130A (zh) | 一种支持移动通信网络切换的sim卡及系统 | |
ES2219533T3 (es) | Representacion de aplicaciones en un sistema de telecomunicaciones. | |
EP1561301B1 (en) | Software integrity test in a mobile telephone | |
CN108810835B (zh) | 一号多终端的关联方法、装置、终端和存储介质 | |
CN102547661B (zh) | 一种Android系统与电信智能卡通信的方法及装置 | |
CN105743651B (zh) | 芯片安全域的卡应用使用方法、装置和应用终端 | |
CN103546873B (zh) | 一键通业务处理方法及装置 | |
CN109640277B (zh) | 应用于usim卡的短消息处理方法和装置 | |
CN111400737A (zh) | 一种多应用物理隔离的加密sim卡实现装置,方法及终端 | |
CN103020547A (zh) | 执行命令的方法、装置、智能卡及移动终端 | |
KR20090106103A (ko) | 스마트 카드 정보 관리 시스템 및 방법 | |
KR100967361B1 (ko) | 네트워크 개시 서비스를 이용하여 스마트 카드 웹서버의 관리 에이전트를 호출하는 방법 | |
CN101499152A (zh) | 实现安全移动支付的方法、设备及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CB03 | Change of inventor or designer information |
Inventor after: Xie Shufeng Inventor after: Guo Tianguang Inventor before: Xie Shufeng |
|
COR | Change of bibliographic data | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100015 Beijing city Chaoyang District Dongzhimen West eight Street No. 2 room Wanhong Yan Dong Business Garden Patentee after: Beijing Watchdata Limited by Share Ltd Address before: 100015 Beijing city Chaoyang District Dongzhimen West eight Street No. 2 room Wanhong Yan Dong Business Garden Patentee before: Beijing Woqi Data System Co., Ltd. |