應(yīng)用程序訪問(wèn)智能卡的方法和裝置制造方法
【專利摘要】本發(fā)明提供一種應(yīng)用程序訪問(wèn)智能卡的方法和裝置,該方法包括:代理程序接收應(yīng)用程序通過(guò)調(diào)用開(kāi)放API接口函數(shù)發(fā)送的操作指令,所述開(kāi)放API接口函數(shù)由與所述操作指令相對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令封裝而成;代理程序?qū)⑺霾僮髦噶钪械牟僮餍畔⑻砑拥脚c所述開(kāi)放API接口函數(shù)對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令中,并將該標(biāo)準(zhǔn)APDU指令發(fā)送給智能卡,以使所述智能卡根據(jù)所述標(biāo)準(zhǔn)APDU指令進(jìn)行操作。應(yīng)用程序僅需調(diào)用代理程序提供的開(kāi)放API接口函數(shù)來(lái)將其操作指令發(fā)送給代理程序,由代理程序自動(dòng)完成應(yīng)用程序?qū)χ悄芸ǖ脑L問(wèn),大大降低了對(duì)開(kāi)發(fā)者的能力要求以及應(yīng)用程序的開(kāi)發(fā)難度。
【專利說(shuō)明】應(yīng)用程序訪問(wèn)智能卡的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于通信【技術(shù)領(lǐng)域】,具體是涉及一種應(yīng)用程序訪問(wèn)智能卡的方法和裝置?!颈尘凹夹g(shù)】
[0002]隨著智能卡處理能力的增強(qiáng)、存儲(chǔ)空間的擴(kuò)大以及移動(dòng)增值業(yè)務(wù)的發(fā)展,智能卡不再僅作為移動(dòng)通信網(wǎng)絡(luò)的接入鑒權(quán)模塊,而是可以為諸如移動(dòng)支付、近距離通信等應(yīng)用提供相關(guān)存儲(chǔ)、鑒權(quán)等功能。
[0003]目前,很多智能手機(jī)都采用Android系統(tǒng)平臺(tái),第三方Android應(yīng)用程序開(kāi)發(fā)者在開(kāi)發(fā)新的增值業(yè)務(wù)應(yīng)用或者對(duì)現(xiàn)有的增值業(yè)務(wù)進(jìn)行升級(jí)改進(jìn)時(shí),都需要與智能卡進(jìn)行交互,以調(diào)用智能卡中與該增值業(yè)務(wù)應(yīng)用相關(guān)的應(yīng)用程序塊(Applet)完成相應(yīng)的存儲(chǔ)、更新等處理。為了使Android應(yīng)用程序能夠與智能卡中的相關(guān)Applet實(shí)現(xiàn)交互,SIM卡聯(lián)盟提出了 Open Mobile API標(biāo)準(zhǔn),根據(jù)該標(biāo)準(zhǔn)定義的接口,Android應(yīng)用程序可以通過(guò)該與智能卡交互的標(biāo)準(zhǔn)Android API函數(shù)來(lái)發(fā)送標(biāo)準(zhǔn)的應(yīng)用協(xié)議數(shù)據(jù)單元(Application Protocoldata unit,以下簡(jiǎn)稱APDU)指令,調(diào)用相關(guān)的Applet,從而實(shí)現(xiàn)與智能卡的交互。
[0004]但上述方案中,開(kāi)發(fā)者要想實(shí)現(xiàn)其Android應(yīng)用程序與智能卡的交互,需要知道與智能卡交互所涉及的標(biāo)準(zhǔn)APDU指令的交互流程與數(shù)據(jù)格式定義。另外,由于不同終端廠商對(duì)上述Open Mobile API標(biāo)準(zhǔn)的實(shí)現(xiàn)不同,開(kāi)發(fā)者還需了解不同廠商的具體實(shí)現(xiàn)方式,以使其應(yīng)用程序與終端設(shè)備相適應(yīng),這對(duì)開(kāi)發(fā)者的能力提出了較高的要求,使應(yīng)用程序的開(kāi)發(fā)難度大大提高。
【發(fā)明內(nèi)容】
[0005]針對(duì)現(xiàn)有技術(shù)中存在的問(wèn)題,本發(fā)明提供一種應(yīng)用程序訪問(wèn)智能卡的方法和裝置,用以克服現(xiàn)有技術(shù)中通過(guò)標(biāo)準(zhǔn)Android API函數(shù)調(diào)用智能卡中與應(yīng)用程序相關(guān)的Applet而導(dǎo)致的對(duì)開(kāi)發(fā)者要求高、應(yīng)用開(kāi)發(fā)難度大的缺陷。
[0006]本發(fā)明提供了一種應(yīng)用程序訪問(wèn)智能卡的方法,包括:
[0007]代理程序接收應(yīng)用程序通過(guò)調(diào)用開(kāi)放API接口函數(shù)發(fā)送的操作指令,所述開(kāi)放API接口函數(shù)由與所述操作指令相對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令封裝而成;
[0008]代理程序?qū)⑺霾僮髦噶钪械牟僮餍畔⑻砑拥脚c所述開(kāi)放API接口函數(shù)對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令中,并將該標(biāo)準(zhǔn)APDU指令發(fā)送給智能卡,以使所述智能卡根據(jù)所述標(biāo)準(zhǔn)APDU指令進(jìn)行操作。
[0009]本發(fā)明提供了一種應(yīng)用程序訪問(wèn)智能卡的裝置,包括:
[0010]接收模塊,用于接收應(yīng)用程序通過(guò)調(diào)用代理程序提供的開(kāi)放API接口函數(shù)發(fā)送的操作指令,所述開(kāi)放API接口函數(shù)由與所述操作指令相對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令封裝而成;[0011 ] 發(fā)送模塊,用于將所述操作指令中的操作信息添加到與所述開(kāi)放API接口函數(shù)對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令中,并將該標(biāo)準(zhǔn)APDU指令發(fā)送給智能卡,以使所述智能卡根據(jù)所述標(biāo)準(zhǔn)APDU指令進(jìn)行操作。[0012]本發(fā)明提供的應(yīng)用程序訪問(wèn)智能卡的方法和裝置,通過(guò)在Android終端中置入代理程序,由該代理程序?qū)⑴c應(yīng)用程序的操作指令對(duì)應(yīng)標(biāo)準(zhǔn)APDU指令進(jìn)行封裝,封裝成供應(yīng)用程序調(diào)用的開(kāi)放API接口函數(shù),使得應(yīng)用程序在需要訪問(wèn)智能卡時(shí),僅需從代理程序提供的開(kāi)放API接口函數(shù)中調(diào)用其需要的API接口函數(shù)來(lái)將其操作指令發(fā)送給代理程序,而由代理程序?qū)牟僮髦噶钪蝎@取的操作信息添加到與該API接口函數(shù)對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令中,并將該標(biāo)準(zhǔn)APDU指令發(fā)送給智能卡,從而使得應(yīng)用程序無(wú)需知道訪問(wèn)智能卡所需的標(biāo)準(zhǔn)APDU指令以及該標(biāo)準(zhǔn)APDU指令的格式定義,由代理程序自動(dòng)完成應(yīng)用程序?qū)χ悄芸ǖ脑L問(wèn),大大降低了對(duì)開(kāi)發(fā)者的能力要求以及應(yīng)用程序的開(kāi)發(fā)難度。
【專利附圖】
【附圖說(shuō)明】
[0013]圖1為本發(fā)明應(yīng)用程序訪問(wèn)智能卡的方法實(shí)施例一的流程圖;
[0014]圖2為本發(fā)明應(yīng)用程序訪問(wèn)智能卡的方法實(shí)施例二的流程圖;
[0015]圖3為本發(fā)明應(yīng)用程序訪問(wèn)智能卡的裝置實(shí)施例一的示意圖;
[0016]圖4為本發(fā)明應(yīng)用程序訪問(wèn)智能卡的裝置實(shí)施例二的示意圖。
【具體實(shí)施方式】
[0017]圖1為本發(fā)明應(yīng)用程序訪問(wèn)智能卡的方法實(shí)施例一的流程圖,如圖1所示,本實(shí)施例提供的應(yīng)用程序訪問(wèn)智能卡的方法尤其適用于第三方Android應(yīng)用程序需要訪問(wèn)智能卡的場(chǎng)景。所述智能卡具體承載于諸如智能手機(jī)、掌上電腦、平板電腦等具有Android系統(tǒng)的終端設(shè)備中,智能卡中包括有運(yùn)營(yíng)商置入的多種應(yīng)用程序塊(Applet),如存儲(chǔ)、運(yùn)算等,Android應(yīng)用程序的開(kāi)發(fā)過(guò)程中,需要訪問(wèn)智能卡中的這些Applet來(lái)完成相應(yīng)的操作。而要想實(shí)現(xiàn)對(duì)智能卡中Applet的訪問(wèn),需要使用與智能卡相適應(yīng)的標(biāo)準(zhǔn)APDU指令完成與智能卡的交互?,F(xiàn)有技術(shù)中,Android應(yīng)用程序開(kāi)發(fā)者需要掌握為了完成其操作,需要使用哪些標(biāo)準(zhǔn)APDU指令以及各標(biāo)準(zhǔn)APDU指令的格式定義,才能將其操作信息構(gòu)造成標(biāo)準(zhǔn)APDU指令,進(jìn)而發(fā)送給智能卡,而本實(shí)施例提供的方案,則是通過(guò)在終端設(shè)備中引入代理程序,由代理程序?qū)⒁瓿蓱?yīng)用程序的操作所需的標(biāo)準(zhǔn)APDU指令封裝為一開(kāi)放API接口函數(shù),供應(yīng)用程序調(diào)用,由于該開(kāi)放API接口函數(shù)的通用性,方便應(yīng)用程序開(kāi)發(fā)者的開(kāi)發(fā)工作,并由該代理程序代為完成與智能卡的標(biāo)準(zhǔn)APDU指令交互。
[0018]本實(shí)施例提供的應(yīng)用程序訪問(wèn)智能卡的方法,具體包括:
[0019]步驟101、代理程序接收應(yīng)用程序通過(guò)調(diào)用開(kāi)放API接口函數(shù)發(fā)送的操作指令,所述開(kāi)放API接口函數(shù)由與所述操作指令相對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令封裝而成;
[0020]本實(shí)施例中,運(yùn)營(yíng)商可以在使用Android系統(tǒng)的終端設(shè)備中置入代理程序,該代理程序可以根據(jù)應(yīng)用程序普遍進(jìn)行的智能卡訪問(wèn)操作,如添加、讀取、更新、刪除等操作,預(yù)先定義多種可供第三方Android應(yīng)用程序調(diào)用的開(kāi)放API接口函數(shù),比如添加函數(shù)、讀取函數(shù)、更新函數(shù)、刪除函數(shù)等,并將完成對(duì)智能卡訪問(wèn)所需的相應(yīng)標(biāo)準(zhǔn)APDU指令封裝在該開(kāi)放API接口函數(shù)中,比如,若完成更新操作需要用到的標(biāo)準(zhǔn)APDU指令包括:通道建立指令、數(shù)據(jù)處理指令、通道關(guān)閉指令,那么代理程序提供的更新函數(shù)中即封裝了這三種標(biāo)準(zhǔn)APDU指令。
[0021]具體地,當(dāng)應(yīng)用程序需要對(duì)智能卡進(jìn)行訪問(wèn)時(shí),該應(yīng)用程序會(huì)通過(guò)調(diào)用相應(yīng)的開(kāi)放API接口函數(shù)將其操作指令發(fā)送給代理程序。具體來(lái)說(shuō),每個(gè)開(kāi)放API接口函數(shù)可以以函數(shù)名作為標(biāo)識(shí),以使應(yīng)用程序能夠調(diào)用與其操作指令相適應(yīng)的接口函數(shù)。
[0022]步驟102、代理程序?qū)⑺霾僮髦噶钪械牟僮餍畔⑻砑拥脚c所述開(kāi)放API接口函數(shù)對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令中,并將該標(biāo)準(zhǔn)APDU指令發(fā)送給智能卡,以使所述智能卡根據(jù)所述標(biāo)準(zhǔn)APDU指令進(jìn)行操作。
[0023]具體地,代理程序在接收到應(yīng)用程序通過(guò)調(diào)用開(kāi)放API接口函數(shù)發(fā)送的操作指令后,會(huì)從該操作指令中提取獲取該操作指令的操作信息,如操作類型、數(shù)據(jù)內(nèi)容等,并將這些操作信息添加到與調(diào)用的開(kāi)放API接口函數(shù)相對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令中,相當(dāng)于對(duì)該標(biāo)準(zhǔn)APDU指令寫(xiě)入其所需的參數(shù)信息,之后便將該添加入操作信息的標(biāo)準(zhǔn)APDU指令發(fā)送給智能卡,使得智能卡可以根據(jù)該標(biāo)準(zhǔn)APDU指令完成相應(yīng)的操作。
[0024]本實(shí)施例提供的應(yīng)用程序訪問(wèn)智能卡的方法,通過(guò)在Android終端設(shè)備中引入代理程序,由該代理程序?qū)⑴c應(yīng)用程序的操作指令對(duì)應(yīng)標(biāo)準(zhǔn)APDU指令進(jìn)行封裝,封裝成供應(yīng)用程序調(diào)用的開(kāi)放API接口函數(shù),使得應(yīng)用程序在需要訪問(wèn)智能卡時(shí),僅需以調(diào)用開(kāi)放API接口函數(shù)的方式將其操作指令發(fā)送給代理程序,而由代理程序通過(guò)與被調(diào)用的開(kāi)放API接口函數(shù)對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令來(lái)自動(dòng)完成應(yīng)用程序?qū)χ悄芸ǖ脑L問(wèn),使得應(yīng)用程序無(wú)需知道訪問(wèn)智能卡所需的標(biāo)準(zhǔn)APDU指令以及該標(biāo)準(zhǔn)APDU指令的格式定義,大大降低了對(duì)開(kāi)發(fā)者的能力要求以及應(yīng)用程序的開(kāi)發(fā)難度。
[0025]圖2為本發(fā)明應(yīng)用程序訪問(wèn)智能卡的方法實(shí)施例二的流程圖,如圖2所示,該方法包括:
[0026]步驟201、終端訪問(wèn)控制程序根據(jù)智能卡中的訪問(wèn)控制文件對(duì)所述代理程序進(jìn)行鑒權(quán),以確定所述代理程序是否能夠訪問(wèn)智能卡,所述訪問(wèn)控制文件為預(yù)置入所述智能卡中的包含所述代理程序身份信息的只讀文件,若鑒權(quán)通過(guò),則執(zhí)行步驟202,否則,結(jié)束;
[0027]本實(shí)施例中,代理程序作為一種終端設(shè)備中、智能卡外的特殊應(yīng)用程序,為了保證智能卡訪問(wèn)的安全性,一般需要對(duì)代理程序進(jìn)行鑒權(quán),以確定該代理程序是否是運(yùn)營(yíng)商置入的合法代理程序。
[0028]對(duì)代理程序的鑒權(quán),采用與現(xiàn)有技術(shù)中對(duì)第三方應(yīng)用程序進(jìn)行鑒權(quán)相類似的方案,現(xiàn)簡(jiǎn)要介紹如下:
[0029]在運(yùn)營(yíng)商在終端設(shè)備中預(yù)置入代理程序時(shí),便在智能卡中創(chuàng)建一個(gè)與該代理程序相對(duì)應(yīng)的訪問(wèn)控制文件(Access Rule File,以下簡(jiǎn)稱ARF),該訪問(wèn)控制文件為一個(gè)只讀文件,其內(nèi)部存儲(chǔ)著運(yùn)營(yíng)商置入的合法代理程序的身份信息,該身份信息例如可以是代理程序的包名、數(shù)字摘要簽名。
[0030]現(xiàn)有技術(shù)中,對(duì)應(yīng)用程序的鑒權(quán)是通過(guò)終端設(shè)備中的終端訪問(wèn)控制程序來(lái)執(zhí)行的,在應(yīng)用程序初始化時(shí),啟動(dòng)對(duì)應(yīng)用程序的鑒權(quán)。本實(shí)施例中,對(duì)代理程序的鑒權(quán)亦通過(guò)終端訪問(wèn)控制程序來(lái)執(zhí)行,該終端訪問(wèn)控制程序根據(jù)智能卡中的訪問(wèn)控制文件對(duì)所述代理程序進(jìn)行鑒權(quán),以確定所述代理程序是否能夠訪問(wèn)智能卡。具體地,終端訪問(wèn)控制程序獲取所述代理程序的標(biāo)識(shí)信息;終端訪問(wèn)控制程序確定所述訪問(wèn)控制文件中的代理程序身份信息與所述標(biāo)識(shí)信息是否一致,若一致,則所述代理程序能夠訪問(wèn)智能卡。
[0031]由于現(xiàn)有技術(shù)中,每一個(gè)應(yīng)用程序均在智能卡中存在著一個(gè)與之一一對(duì)應(yīng)的ARF,由于ARF不能修改,每當(dāng)有一個(gè)新的應(yīng)用程序時(shí),都需要在智能卡中加入該應(yīng)用程序?qū)?yīng)的ARF,操作不便,且占用過(guò)多智能卡資源。而本申請(qǐng)中,理想情況下,運(yùn)營(yíng)商僅需要為具有Android系統(tǒng)的終端設(shè)備設(shè)置一個(gè)代理程序,相應(yīng)地,在智能卡中,僅需要?jiǎng)?chuàng)建一個(gè)ARF,來(lái)完成對(duì)代理程序的鑒權(quán)即可。
[0032]步驟202、代理程序接收應(yīng)用程序通過(guò)調(diào)用開(kāi)放API接口函數(shù)發(fā)送的操作指令,所述開(kāi)放API接口函數(shù)由與所述操作指令相對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令封裝而成;
[0033]步驟203、代理程序調(diào)用智能卡中的訪問(wèn)控制程序塊對(duì)所述應(yīng)用程序進(jìn)行鑒權(quán),所述訪問(wèn)控制程序塊為預(yù)置入智能卡中的包含已授權(quán)應(yīng)用程序權(quán)限信息的可讀寫(xiě)應(yīng)用程序塊,若鑒權(quán)通過(guò),則執(zhí)行步驟204,否則,結(jié)束;
[0034]本實(shí)施例中,對(duì)應(yīng)用程序的鑒權(quán)是通過(guò)運(yùn)營(yíng)商預(yù)置入智能卡中的一訪問(wèn)控制程序塊來(lái)進(jìn)行的。該訪問(wèn)控制程序塊中存儲(chǔ)有運(yùn)營(yíng)商已經(jīng)授權(quán)的所有應(yīng)用程序的權(quán)限信息,另夕卜,由于該訪問(wèn)控制程序塊允許進(jìn)行讀寫(xiě)操作,從而使得當(dāng)有新的應(yīng)用程序被授權(quán)訪問(wèn)智能卡時(shí),運(yùn)營(yíng)商僅需要在該程序塊中加入新的應(yīng)用程序的權(quán)限信息即可。
[0035]具體地,所述已授權(quán)應(yīng)用程序權(quán)限信息包括:
[0036]已授權(quán)應(yīng)用程序的身份信息、與所述身份信息對(duì)應(yīng)的智能卡應(yīng)用程序塊信息和與所述智能卡應(yīng)用程序塊信息對(duì)應(yīng)的訪問(wèn)類型信息。
[0037]本實(shí)施例中,所述已授權(quán)應(yīng)用程序的身份信息,例如可以是應(yīng)用程序的包名、數(shù)字摘要簽名。實(shí)際上,應(yīng)用程序訪問(wèn)智能卡,即是訪問(wèn)智能卡應(yīng)用程序塊,該智能卡應(yīng)用程序塊存在于智能卡中,是完成應(yīng)用程序所需操作的執(zhí)行功能單元,該智能卡應(yīng)用程序塊例如可以是完成數(shù)據(jù)更新、刪除等操作的程序塊,所述智能卡應(yīng)用程序塊信息例如包括智能卡應(yīng)用程序塊標(biāo)識(shí)符。所述訪問(wèn)類型信息例如可以是更新、刪除等。
[0038]具體地,所述代理程序調(diào)用智能卡中的訪問(wèn)控制程序塊對(duì)所述應(yīng)用程序進(jìn)行鑒權(quán),包括:
[0039]代理程序?qū)乃霾僮髦噶钪蝎@取的鑒權(quán)信息發(fā)送給所述訪問(wèn)控制程序塊,所述鑒權(quán)信息包括所述應(yīng)用程序的標(biāo)識(shí)信息、操作類型和待訪問(wèn)的智能卡應(yīng)用程序塊標(biāo)識(shí)符;
[0040]所述訪問(wèn)控制程序塊確定所述已授權(quán)應(yīng)用程序的身份信息中是否包含所述應(yīng)用程序的標(biāo)識(shí)信息,以確定所述應(yīng)用程序的身份合法性;
[0041]若合法,則所述訪問(wèn)控制程序塊確定與所述身份信息對(duì)應(yīng)的智能卡應(yīng)用程序塊信息中是否包含所述待訪問(wèn)的智能卡應(yīng)用程序塊標(biāo)識(shí)符,以確定所述應(yīng)用程序的訪問(wèn)合法性;
[0042]若合法,則所述訪問(wèn)控制程序塊確定與所述智能卡應(yīng)用程序塊信息對(duì)應(yīng)的訪問(wèn)類型信息中是否包含所述操作類型,以確定所述應(yīng)用程序的操作合法性。
[0043]通過(guò)上述對(duì)應(yīng)用程序的鑒權(quán)過(guò)程可知,本實(shí)施例中以一種層層遞進(jìn)的方式對(duì)應(yīng)用程序進(jìn)行鑒權(quán)。首先對(duì)應(yīng)用程序的身份合法性進(jìn)行鑒權(quán),只有身份合法性通過(guò)鑒權(quán)后,才會(huì)觸發(fā)對(duì)應(yīng)用程序是否能夠訪問(wèn)智能卡中的應(yīng)用程序塊進(jìn)行鑒權(quán),即確定訪問(wèn)控制程序塊中與該應(yīng)用程序身份信息對(duì)應(yīng)的智能卡應(yīng)用程序塊信息中否是含有該應(yīng)用程序操作指令中所攜帶的智能卡應(yīng)用程序塊標(biāo)識(shí)符,若訪問(wèn)合法性通過(guò),才進(jìn)行操作合法性的鑒權(quán)。這種鑒權(quán)方式,當(dāng)前一種鑒權(quán)不合法時(shí),便無(wú)需進(jìn)行后續(xù)鑒權(quán),有利于提供鑒權(quán)處理效率。
[0044]步驟204、代理程序根據(jù)所述開(kāi)放API接口函數(shù)所描述的函數(shù)形式,從所述操作指令中獲取所述操作信息,所述操作信息包括控制域信息和數(shù)據(jù)域信息,其中所述控制域信息中包含智能卡應(yīng)用程序塊標(biāo)識(shí)符;
[0045]步驟205、代理程序?qū)⑺隹刂朴蛐畔⒑蛿?shù)據(jù)域信息添加到所述開(kāi)放API接口函數(shù)對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令中,并將該標(biāo)準(zhǔn)APDU指令發(fā)送給與所述智能卡應(yīng)用程序塊標(biāo)識(shí)符對(duì)應(yīng)的智能卡應(yīng)用程序塊,以使所述智能卡應(yīng)用程序塊根據(jù)所述標(biāo)準(zhǔn)APDU指令進(jìn)行操作。
[0046]本實(shí)施例中,當(dāng)應(yīng)用程序鑒權(quán)通過(guò)后,代理程序便會(huì)執(zhí)行應(yīng)用程序?qū)χ悄芸ㄔL問(wèn)的處理過(guò)程。具體地,代理程序根據(jù)應(yīng)用程序所調(diào)用的開(kāi)放API接口函數(shù)所描述的函數(shù)形式,從接收到的操作指令中獲取操作信息,該操作信息包括控制域信息和數(shù)據(jù)域信息,其中所述控制域信息中包含智能卡應(yīng)用程序塊標(biāo)識(shí)符。之后,代理程序?qū)⑺隹刂朴蛐畔⒑蛿?shù)據(jù)域信息添加到所述開(kāi)放API接口函數(shù)對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令中,并將該添入操作信息的標(biāo)準(zhǔn)APDU指令發(fā)送給與所述智能卡應(yīng)用程序塊標(biāo)識(shí)符對(duì)應(yīng)的智能卡應(yīng)用程序塊,以使所述智能卡應(yīng)用程序塊根據(jù)所述標(biāo)準(zhǔn)APDU指令進(jìn)行操作。
[0047]本實(shí)施例提供的應(yīng)用程序訪問(wèn)智能卡的方法,應(yīng)用程序僅需代理程序提供的調(diào)用開(kāi)放API接口函數(shù)將其操作指令發(fā)送給代理程序,由代理程序完成該應(yīng)用程序?qū)χ悄芸☉?yīng)用程序塊的訪問(wèn),大大降低了對(duì)開(kāi)發(fā)者的能力要求以及應(yīng)用程序的開(kāi)發(fā)難度;在智能卡中僅需創(chuàng)建與代理程序?qū)?yīng)的訪問(wèn)控制文件,大大節(jié)省了訪問(wèn)控制文件對(duì)智能卡存儲(chǔ)空間等資源的占用;通過(guò)智能卡中可讀寫(xiě)的訪問(wèn)控制程序塊來(lái)完成對(duì)應(yīng)用程序的鑒權(quán),既克服了訪問(wèn)控制文件的形式所導(dǎo)致的智能卡資源占用問(wèn)題,又大大提高了應(yīng)用程序鑒權(quán)的處理效率。
[0048]圖3為本發(fā)明應(yīng)用程序訪問(wèn)智能卡的裝置實(shí)施例一的示意圖,如圖3所示,該裝置包括:
[0049]接收模塊11,用于接收應(yīng)用程序通過(guò)調(diào)用代理程序提供的開(kāi)放API接口函數(shù)發(fā)送的操作指令,所述開(kāi)放API接口函數(shù)由與所述操作指令相對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令封裝而成;
[0050]發(fā)送模塊12,用于將所述操作指令中的操作信息添加到與所述開(kāi)放API接口函數(shù)對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令中,并將該標(biāo)準(zhǔn)APDU指令發(fā)送給智能卡,以使所述智能卡根據(jù)所述標(biāo)準(zhǔn)APDU指令進(jìn)行操作。
[0051]本實(shí)施例的裝置可以用于執(zhí)行圖1所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
[0052]圖4為本發(fā)明應(yīng)用程序訪問(wèn)智能卡的裝置實(shí)施例二的示意圖,如圖4所示,該裝置在圖3所示實(shí)施例的基礎(chǔ)上,所述發(fā)送模塊12包括:
[0053]獲取單元121,用于根據(jù)所述開(kāi)放API接口函數(shù)所描述的函數(shù)形式,從所述操作指令中獲取所述操作信息,所述操作信息包括控制域信息和數(shù)據(jù)域信息,其中所述控制域信息中包含智能卡應(yīng)用程序塊標(biāo)識(shí)符;
[0054]添加單元122,用于將所述控制域信息和數(shù)據(jù)域信息添加到所述開(kāi)放API接口函數(shù)對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令中,并將該標(biāo)準(zhǔn)APDU指令發(fā)送給與所述智能卡應(yīng)用程序塊標(biāo)識(shí)符對(duì)應(yīng)的智能卡應(yīng)用程序塊,以使所述智能卡應(yīng)用程序塊根據(jù)所述標(biāo)準(zhǔn)APDU指令進(jìn)行操作。
[0055]進(jìn)一步地,所述裝置還包括:
[0056]第一鑒權(quán)模塊21,用于根據(jù)智能卡中的訪問(wèn)控制文件對(duì)所述代理程序進(jìn)行鑒權(quán),以確定所述代理程序是否能夠訪問(wèn)智能卡,所述訪問(wèn)控制文件為預(yù)置入所述智能卡中的包含所述代理程序身份信息的只讀文件;[0057]所述第一鑒權(quán)模塊21根據(jù)智能卡中的訪問(wèn)控制文件對(duì)所述代理程序進(jìn)行鑒權(quán),以確定所述代理程序是否能夠訪問(wèn)智能卡,包括:
[0058]第一鑒權(quán)模塊21獲取所述代理程序的標(biāo)識(shí)信息;
[0059]第一鑒權(quán)模塊21確定所述訪問(wèn)控制文件中的代理程序身份信息與所述標(biāo)識(shí)信息是否一致,若一致,則所述代理程序能夠訪問(wèn)智能卡。
[0060]進(jìn)一步地,所述裝置還包括:
[0061]第二鑒權(quán)模塊22,用于調(diào)用智能卡中的訪問(wèn)控制程序塊對(duì)所述應(yīng)用程序進(jìn)行鑒權(quán),所述訪問(wèn)控制程序塊為預(yù)置入智能卡中的包含已授權(quán)應(yīng)用程序權(quán)限信息的可讀寫(xiě)應(yīng)用程序塊;
[0062]其中,所述已授權(quán)應(yīng)用程序權(quán)限信息包括:
[0063]已授權(quán)應(yīng)用程序的身份信息、與所述身份信息對(duì)應(yīng)的智能卡應(yīng)用程序塊信息和與所述智能卡應(yīng)用程序塊信息對(duì)應(yīng)的訪問(wèn)類型信息;
[0064]所述第二鑒權(quán)模塊22調(diào)用智能卡中的訪問(wèn)控制程序塊對(duì)所述應(yīng)用程序進(jìn)行鑒權(quán),包括:
[0065]第二鑒權(quán)模塊22將從所述操作指令中獲取的鑒權(quán)信息發(fā)送給所述訪問(wèn)控制程序塊,所述鑒權(quán)信息包括所述應(yīng)用程序的標(biāo)識(shí)信息、操作類型和待訪問(wèn)的智能卡應(yīng)用程序塊標(biāo)識(shí)符;
[0066]所述訪問(wèn)控制程序塊確定所述已授權(quán)應(yīng)用程序的身份信息中是否包含所述應(yīng)用程序的標(biāo)識(shí)信息,以確定所述應(yīng)用程序的身份合法性;
[0067]若合法,則所述訪問(wèn)控制程序確定與所述身份信息對(duì)應(yīng)的智能卡應(yīng)用程序塊信息中是否包含所述待訪問(wèn)的智能卡應(yīng)用程序塊標(biāo)識(shí)符,以確定所述應(yīng)用程序的訪問(wèn)合法性;
[0068]若合法,則所述訪問(wèn)控制程序確定與所述智能卡應(yīng)用程序塊對(duì)應(yīng)的訪問(wèn)類型信息中是否包含所述操作類型,以確定所述應(yīng)用程序的操作合法性。
[0069]本實(shí)施例的裝置可以用于執(zhí)行圖2所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
[0070]本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:R0M、RAM、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0071]最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種應(yīng)用程序訪問(wèn)智能卡的方法,其特征在于,包括: 代理程序接收應(yīng)用程序通過(guò)調(diào)用開(kāi)放API接口函數(shù)發(fā)送的操作指令,所述開(kāi)放API接口函數(shù)由與所述操作指令相對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令封裝而成; 代理程序?qū)⑺霾僮髦噶钪械牟僮餍畔⑻砑拥脚c所述開(kāi)放API接口函數(shù)對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令中,并將該標(biāo)準(zhǔn)APDU指令發(fā)送給智能卡,以使所述智能卡根據(jù)所述標(biāo)準(zhǔn)APDU指令進(jìn)行操作。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述代理程序?qū)⑺霾僮髦噶钪械牟僮餍畔⑻砑拥脚c所述開(kāi)放API接口函數(shù)對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令中,并將該標(biāo)準(zhǔn)APDU指令發(fā)送給智能卡,以使所述智能卡根據(jù)所述標(biāo)準(zhǔn)APDU指令進(jìn)行操作,包括: 代理程序根據(jù)所述開(kāi)放API接口函數(shù)所描述的函數(shù)形式,從所述操作指令中獲取所述操作信息,所述操作信息包括控制域信息和數(shù)據(jù)域信息,其中所述控制域信息中包含智能卡應(yīng)用程序塊標(biāo)識(shí)符; 代理程序?qū)⑺隹刂朴蛐畔⒑蛿?shù)據(jù)域信息添加到所述開(kāi)放API接口函數(shù)對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令中,并將該標(biāo)準(zhǔn)APDU指令發(fā)送給與所述智能卡應(yīng)用程序塊標(biāo)識(shí)符對(duì)應(yīng)的智能卡應(yīng)用程序塊,以使所述智能卡應(yīng)用程序塊根據(jù)所述標(biāo)準(zhǔn)APDU指令進(jìn)行操作。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述代理程序接收應(yīng)用程序通過(guò)調(diào)用開(kāi)放API接口函數(shù)發(fā)送的操作指令之前,還包括: 終端訪問(wèn)控制程序根據(jù)智能卡中的訪問(wèn)控制文件對(duì)所述代理程序進(jìn)行鑒權(quán),以確定所述代理程序是否能夠訪問(wèn)智能卡,所述訪問(wèn)控制文件為預(yù)置入所述智能卡中的包含所述代理程序身份信息的只讀文件。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述終端訪問(wèn)控制程序根據(jù)智能卡中的訪問(wèn)控制文件對(duì)所述代理 程序進(jìn)行鑒權(quán),以確定所述代理程序是否能夠訪問(wèn)智能卡,包括: 終端訪問(wèn)控制程序獲取所述代理程序的標(biāo)識(shí)信息; 終端訪問(wèn)控制程序確定所述訪問(wèn)控制文件中的代理程序身份信息與所述標(biāo)識(shí)信息是否一致,若一致,則所述代理程序能夠訪問(wèn)智能卡。
5.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述代理程序?qū)⑺霾僮髦噶钪械牟僮餍畔⑻砑拥脚c所述開(kāi)放API接口函數(shù)對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令中,并將該標(biāo)準(zhǔn)APDU指令發(fā)送給智能卡,以使所述智能卡根據(jù)所述標(biāo)準(zhǔn)APDU指令進(jìn)行操作之前,還包括: 代理程序調(diào)用智能卡中的訪問(wèn)控制程序塊對(duì)所述應(yīng)用程序進(jìn)行鑒權(quán),所述訪問(wèn)控制程序塊為預(yù)置入智能卡中的包含已授權(quán)應(yīng)用程序權(quán)限信息的可讀寫(xiě)應(yīng)用程序塊。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述已授權(quán)應(yīng)用程序權(quán)限信息包括: 已授權(quán)應(yīng)用程序的身份信息、與所述身份信息對(duì)應(yīng)的智能卡應(yīng)用程序塊信息和與所述智能卡應(yīng)用程序塊信息對(duì)應(yīng)的訪問(wèn)類型信息; 所述代理程序調(diào)用智能卡中的訪問(wèn)控制程序塊對(duì)所述應(yīng)用程序進(jìn)行鑒權(quán),包括: 代理程序?qū)乃霾僮髦噶钪蝎@取的鑒權(quán)信息發(fā)送給所述訪問(wèn)控制程序塊,所述鑒權(quán)信息包括所述應(yīng)用程序的標(biāo)識(shí)信息、操作類型和待訪問(wèn)的智能卡應(yīng)用程序塊標(biāo)識(shí)符; 所述訪問(wèn)控制程序塊確定所述已授權(quán)應(yīng)用程序的身份信息中是否包含所述應(yīng)用程序的標(biāo)識(shí)信息,以確定所述應(yīng)用程序的身份合法性;若合法,則所述訪問(wèn)控制程序塊確定與所述身份信息對(duì)應(yīng)的智能卡應(yīng)用程序塊信息中是否包含所述待訪問(wèn)的智能卡應(yīng)用程序塊標(biāo)識(shí)符,以確定所述應(yīng)用程序的訪問(wèn)合法性;若合法,則所述訪問(wèn)控制程序塊確定與所述智能卡應(yīng)用程序塊信息對(duì)應(yīng)的訪問(wèn)類型信息中是否包含所述操作類型,以確定所述應(yīng)用程序的操作合法性。
7.一種應(yīng)用程序訪問(wèn)智能卡的裝置,其特征在于,包括:接收模塊,用于接收應(yīng)用程序通過(guò)調(diào)用代理程序提供的開(kāi)放API接口函數(shù)發(fā)送的操作指令,所述開(kāi)放API接口函數(shù)由與所述操作指令相對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令封裝而成; 發(fā)送模塊,用于將所述操作指令中的操作信息添加到與所述開(kāi)放API接口函數(shù)對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令中,并將該標(biāo)準(zhǔn)APDU指令發(fā)送給智能卡,以使所述智能卡根據(jù)所述標(biāo)準(zhǔn)APDU指令進(jìn)行操作。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述發(fā)送模塊包括: 獲取單元,用于根據(jù)所述開(kāi)放API接口函數(shù)所描述的函數(shù)形式,從所述操作指令中獲取所述操作信息,所述操作信息包括控制域信息和數(shù)據(jù)域信息,其中所述控制域信息中包含智能卡應(yīng)用程序塊標(biāo)識(shí)符; 添加單元,用于將所述控制域信息和數(shù)據(jù)域信息添加到所述開(kāi)放API接口函數(shù)對(duì)應(yīng)的標(biāo)準(zhǔn)APDU指令中,并將 該標(biāo)準(zhǔn)APDU指令發(fā)送給與所述智能卡應(yīng)用程序塊標(biāo)識(shí)符對(duì)應(yīng)的智能卡應(yīng)用程序塊,以使所述智能卡應(yīng)用程序塊根據(jù)所述標(biāo)準(zhǔn)APDU指令進(jìn)行操作。
9.根據(jù)權(quán)利要求7或8所述的裝置,其特征在于,還包括: 第一鑒權(quán)模塊,用于根據(jù)智能卡中的訪問(wèn)控制文件對(duì)所述代理程序進(jìn)行鑒權(quán),以確定所述代理程序是否能夠訪問(wèn)智能卡,所述訪問(wèn)控制文件為預(yù)置入所述智能卡中的包含所述代理程序身份信息的只讀文件; 所述第一鑒權(quán)模塊根據(jù)智能卡中的訪問(wèn)控制文件對(duì)所述代理程序進(jìn)行鑒權(quán),以確定所述代理程序是否能夠訪問(wèn)智能卡,包括: 第一鑒權(quán)模塊獲取所述代理程序的標(biāo)識(shí)信息; 第一鑒權(quán)模塊確定所述訪問(wèn)控制文件中的代理程序身份信息與所述標(biāo)識(shí)信息是否一致,若一致,則所述代理程序能夠訪問(wèn)智能卡。
10.根據(jù)權(quán)利要求7或8所述的裝置,其特征在于,還包括: 第二鑒權(quán)模塊,用于調(diào)用智能卡中的訪問(wèn)控制程序塊對(duì)所述應(yīng)用程序進(jìn)行鑒權(quán),所述訪問(wèn)控制程序塊為預(yù)置入智能卡中的包含已授權(quán)應(yīng)用程序權(quán)限信息的可讀寫(xiě)應(yīng)用程序塊; 其中,所述已授權(quán)應(yīng)用程序權(quán)限信息包括: 已授權(quán)應(yīng)用程序的身份信息、與所述身份信息對(duì)應(yīng)的智能卡應(yīng)用程序塊信息和與所述智能卡應(yīng)用程序塊信息對(duì)應(yīng)的訪問(wèn)類型信息;所述第二鑒權(quán)模塊調(diào)用智能卡中的訪問(wèn)控制程序塊對(duì)所述應(yīng)用程序進(jìn)行鑒權(quán),包括:第二鑒權(quán)模塊將從所述操作指令中獲取的鑒權(quán)信息發(fā)送給所述訪問(wèn)控制程序塊,所述鑒權(quán)信息包括所述應(yīng)用程序的標(biāo)識(shí)信息、操作類型和待訪問(wèn)的智能卡應(yīng)用程序塊標(biāo)識(shí)符;所述訪問(wèn)控制程序塊確定所述已授權(quán)應(yīng)用程序的身份信息中是否包含所述應(yīng)用程序的標(biāo)識(shí)信息,以確定所述應(yīng)用程序的身份合法性; 若合法,則所述訪問(wèn)控制程序確定與所述身份信息對(duì)應(yīng)的智能卡應(yīng)用程序塊信息中是否包含所述待訪問(wèn)的智能卡應(yīng)用程序塊標(biāo)識(shí)符,以確定所述應(yīng)用程序的訪問(wèn)合法性; 若合法,則所述訪問(wèn)控制程序確定與所述 智能卡應(yīng)用程序塊對(duì)應(yīng)的訪問(wèn)類型信息中是否包含所述操作類型,以確定所述應(yīng)用程序的操作合法性。
【文檔編號(hào)】G06F9/445GK103455349SQ201310379209
【公開(kāi)日】2013年12月18日 申請(qǐng)日期:2013年8月27日 優(yōu)先權(quán)日:2013年8月27日
【發(fā)明者】劉誠(chéng)明, 嚴(yán)斌峰, 張成巖, 姜琳 申請(qǐng)人:中國(guó)聯(lián)合網(wǎng)絡(luò)通信集團(tuán)有限公司