一種為智能卡打補丁的方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種實現(xiàn)智能卡軟件補丁的方法,包括:在平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接口,在可擦寫存儲空間內(nèi)預留補丁代碼運行空間;將補丁代碼下載到預留的可擦寫存儲空間內(nèi),向補丁代碼調(diào)用接口返回補丁代碼運行的入口地址;如平臺系統(tǒng)軟件檢測到所述補丁代碼調(diào)用接口包含補丁代碼運行的入口地址,則通過該補丁代碼調(diào)用接口運行該補丁代碼。本發(fā)明能便捷、高效地實現(xiàn)智能卡平臺軟件的適應性修改。本發(fā)明還公開了一種實現(xiàn)智能卡軟件補丁的方法,能夠便捷、高效地實現(xiàn)智能卡應用軟件的適應性修改。
【專利說明】一種為智能卡打補丁的方法和系統(tǒng)
【技術(shù)領域】
[0001]本發(fā)明涉及智能卡領域,尤其涉及的是一種為智能卡打補丁的方法和系統(tǒng)。
【背景技術(shù)】
[0002]智能卡產(chǎn)品的生產(chǎn)模式?jīng)Q定了一次投片常常是生產(chǎn)成千上萬個的智能卡芯片。在智能卡生產(chǎn)過程中會將很多軟件代碼,包括平臺系統(tǒng)軟件代碼和部分應用軟件代碼,固化在智能卡的ROM中。由于ROM中的內(nèi)容在卡生產(chǎn)完成后不能夠再被修改,因此固化在ROM中的軟件要盡量考慮周全各種用戶需求,功能實現(xiàn)正確,通過必要的測試。但在實際的智能卡產(chǎn)品市場應用過程里,智能卡里的軟件即使有充分的測試,還是有可能存在某些考慮不到的缺陷,另外,用戶需求往往有不可預測的變化。若不能適應這些產(chǎn)品化要求,就可能造成大量已經(jīng)生產(chǎn)的智能卡(Java卡)不能再投入市場,賣給用戶,會給智能卡產(chǎn)品提供廠商造成相應的經(jīng)濟損失。
[0003]對于后下載到智能卡的可擦寫存儲器中的應用軟件,如果需要更新,從技術(shù)上來講,遵照Java Card規(guī)范是可以將該應用軟件從卡上刪除,再下載完善后的新應用軟件到卡上的。但是,這種重新下載的方式具有下述缺陷:1)在刪除原應用軟件時會同時刪除該應用軟件所屬的數(shù)據(jù),造成用戶使用過程中的數(shù)據(jù)丟失。2)即使對應用軟件很少的改動也需要較多的操作過程,包括刪除原來的應用軟件,重新下載新應用軟件,進行應用軟件的實例化、預個人化和個人化操作等,這就需要很長的維護時間。3)有些應用的數(shù)據(jù)可能出于安全的原因只能夠被初始化一次,否則卡片就要作廢。
[0004]因此,需要一種便捷、高效的方法解決智能卡產(chǎn)品化過程中的適應性需求,實現(xiàn)智能卡軟件的功能擴展和功能修改。
【發(fā)明內(nèi)容】
[0005]本發(fā)明所要解決的技術(shù)問題是提供一種為智能卡打補丁的方法和系統(tǒng),能夠便捷、高效地實現(xiàn)智能卡軟件的產(chǎn)品適應性修改。
[0006]為了解決上述技術(shù)問題,本發(fā)明提供了一種實現(xiàn)智能卡軟件補丁的方法,該方法包括:
[0007]在智能卡平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接口,在智能卡上的可擦寫存儲空間內(nèi)預留補丁代碼運行空間;
[0008]將補丁代碼下載到預留的可擦寫存儲空間內(nèi),向所述補丁代碼調(diào)用接口返回所述補丁代碼運行的入口地址;
[0009]如所述智能卡平臺系統(tǒng)軟件檢測到所述補丁代碼調(diào)用接口包含補丁代碼運行的入口地址,則通過該補丁代碼調(diào)用接口運行該補丁代碼。
[0010]進一步地,該方法還包括下述特點:
[0011]所述智能卡是Java卡。
[0012]進一步地,該方法還包括下述特點:[0013]在智能卡平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接口,包括:在智能卡平臺系統(tǒng)軟件的以下一種或多種處理流程中預留補丁代碼調(diào)用接口:a)中斷處理流程;b)設備驅(qū)動處理流程;c)命令分發(fā)處理流程。
[0014]進一步地,該方法還包括下述特點:
[0015]在智能卡平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接口,包括:
[0016]在智能卡平臺系統(tǒng)軟件中定義補丁函數(shù)指針,在系統(tǒng)初始化時設置此函數(shù)指針為空;
[0017]將補丁代碼下載到預留的可擦寫存儲空間內(nèi),向所述補丁代碼調(diào)用接口返回所述補丁代碼運行的入口地址,包括:
[0018]將補丁代碼下載到預留的可擦寫存儲空間,將所述補丁函數(shù)指針賦值為所述補丁代碼運行的入口地址;
[0019]如所述智能卡平臺系統(tǒng)軟件檢測到所述補丁代碼調(diào)用接口包含補丁代碼運行的入口地址,則通過該補丁代碼調(diào)用接口運行該補丁代碼,包括:
[0020]如智能卡平臺系統(tǒng)軟件運行時檢測到所述補丁函數(shù)指針不為空,則執(zhí)行該補丁函數(shù)指針所指向的補丁代碼;如智能卡平臺系統(tǒng)軟件運行時檢測到所述補丁函數(shù)指針為空,則執(zhí)行原函數(shù)代碼。
[0021]為了解決上述技術(shù)問題,本發(fā)明還提供了一種實現(xiàn)智能卡軟件補丁的方法,該方法包括:
[0022]應用軟件中需要考慮產(chǎn)品適應性的功能模塊采用服務端應用程序?qū)崿F(xiàn),應用軟件的主框架模塊采用客戶端應用程序?qū)崿F(xiàn);客戶端應用程序通過服務端應用程序的應用標識AID獲得相應服務端應用程序的服務;
[0023]為不可刪除的服務端應用程序打補丁時,直接下載并安裝新的服務端應用程序,并為新下載的服務端應用程序創(chuàng)建新的AID ;客戶端應用程序查找所述新的AID,通過所述新的AID獲得新下載的服務端應用程序的服務。
[0024]進一步地,該方法還包括下述特點:
[0025]所述智能卡是Java卡。
[0026]進一步地,該方法還包括下述特點:
[0027]為可刪除的服務端應用程序打補丁時,刪除該服務端應用程序,重新下載新的服務端應用程序,并為新下載的服務端應用程序創(chuàng)建與被刪除的服務端應用程序相同的AID ;客戶端應用程序通過原來的AID獲得新下載的服務端應用程序的服務。
[0028]進一步地,該方法還包括下述特點:
[0029]所述AID包括版本號字段;
[0030]所述為新下載的服務端應用程序創(chuàng)建新的AID,包括:為新下載的服務端應用程序創(chuàng)建的AID的版本號比原來的服務端應用程序的AID的版本號高I號;
[0031]客戶端應用程序查找所述新的AID,包括:
[0032]客戶端應用程序從預定義的最高版本號的AID向低版本號的AID遍歷,如找到一個版本號比當前需要打補丁的服務端應用小程序的版本號高的服務端應用小程序,則該新找到的服務端應用小程序的AID是新的AID。
[0033]進一步地,該方法還包括下述特點:[0034]客戶端應用程序通過服務端應用程序的AID獲得相應服務端應用程序的服務,包括:
[0035]客戶端應用程序調(diào)用Java卡標準API方法,通過指定服務端應用程序的AID和相應參數(shù)獲得該服務端應用程序提供的共享接口,使用該共享接口中的方法,獲得該服務端應用程序提供的服務。
[0036]為了解決上述技術(shù)問題,本發(fā)明還提供了一種實現(xiàn)智能卡軟件補丁的系統(tǒng),該系統(tǒng)包括:
[0037]預處理模塊,用于在智能卡平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接口,在智能卡上的可擦寫存儲空間內(nèi)預留補丁代碼運行空間;
[0038]下載模塊,用于將補丁代碼下載到預留的可擦寫存儲空間內(nèi),向所述補丁代碼調(diào)用接口返回所述補丁代碼運行的入口地址;
[0039]打補丁模塊,用于如所述智能卡平臺系統(tǒng)軟件檢測到所述補丁代碼調(diào)用接口包含補丁代碼運行的入口地址,則通過該補丁代碼調(diào)用接口運行該補丁代碼。
[0040]進一步地,該系統(tǒng)還包括下述特點:
[0041 ] 所述智能卡是Java卡。
[0042]進一步地,該系統(tǒng)還包括下述特點:
[0043]預處理模塊,用于通過以下方式在智能卡平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接Π:
[0044]在智能卡平臺系統(tǒng)軟件的以下一種或多種處理流程中預留補丁代碼調(diào)用接口:a)中斷處理流程;b)設備驅(qū)動處理流程;c)命令分發(fā)處理流程。
[0045]進一步地,該系統(tǒng)還包括下述特點:
[0046]預處理模塊,用于通過以下方式在智能卡平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接口:在智能卡平臺系統(tǒng)軟件中定義補丁函數(shù)指針,在系統(tǒng)初始化時設置此函數(shù)指針為空;
[0047]下載模塊,用于通過以下方式將補丁代碼下載到預留的可擦寫存儲空間內(nèi),向所述補丁代碼調(diào)用接口返回所述補丁代碼運行的入口地址:將補丁代碼下載到預留的可擦寫存儲空間,將所述補丁函數(shù)指針賦值為所述補丁代碼運行的入口地址;
[0048]打補丁模塊,用于如所述智能卡平臺系統(tǒng)軟件檢測到所述補丁代碼調(diào)用接口包含補丁代碼運行的入口地址,則通過該補丁代碼調(diào)用接口運行該補丁代碼,包括:如智能卡平臺系統(tǒng)軟件運行時檢測到所述補丁函數(shù)指針不為空,則執(zhí)行該補丁函數(shù)指針所指向的補丁代碼;如智能卡平臺系統(tǒng)軟件運行時檢測到所述補丁函數(shù)指針為空,則執(zhí)行原函數(shù)代碼。
[0049]為了解決上述技術(shù)問題,本發(fā)明還提供了一種實現(xiàn)智能卡軟件補丁的系統(tǒng),該系統(tǒng)包括:
[0050]應用程序創(chuàng)建模塊,用于應用軟件中需要考慮產(chǎn)品適應性的功能模塊采用服務端應用程序?qū)崿F(xiàn),應用軟件的主框架模塊采用客戶端應用程序?qū)崿F(xiàn);客戶端應用程序通過服務端應用程序的應用標識AID獲得相應服務端應用程序的服務;
[0051]打補丁模塊,用于為不可刪除的服務端應用程序打補丁時,直接下載并安裝新的服務端應用程序,并為新下載的服務端應用程序創(chuàng)建新的AID ;客戶端應用程序查找所述新的AID,通過所述新的AID獲得新下載的服務端應用程序的服務。
[0052]進一步地,該系統(tǒng)還包括下述特點:[0053]所述智能卡是Java卡。
[0054]進一步地,該系統(tǒng)還包括下述特點:
[0055]打補丁模塊,還用于為可刪除的服務端應用程序打補丁時,刪除該服務端應用程序,重新下載新的服務端應用程序,并為新下載的服務端應用程序創(chuàng)建與被刪除的服務端應用程序相同的AID ;客戶端應用程序通過原來的AID獲得新下載的服務端應用程序的服務。
[0056]進一步地,該系統(tǒng)還包括下述特點:
[0057]所述AID包括版本號字段;
[0058]打補丁模塊,用于采用以下的方式為新下載的服務端應用程序創(chuàng)建新的AID:為新下載的服務端應用程序創(chuàng)建的AID的版本號比原來的服務端應用程序的AID的版本號高I號;
[0059]打補丁模塊,用于客戶端應用程序采用以下的方式查找所述新的AID:客戶端應用程序從預定義的最高版本號的AID向低版本號的AID遍歷,如找到一個版本號比當前需要打補丁的服務端應用小程序的版本號高的服務端應用小程序,則該新找到的服務端應用小程序的AID是新的AID。
[0060]進一步地,該系統(tǒng)還包括下述特點:
[0061]應用程序創(chuàng)建模塊,用于客戶端應用程序通過服務端應用程序的AID獲得相應服務端應用程序的服務,包括:
[0062]客戶端應用程序調(diào)用Java卡標準API方法,通過指定服務端應用程序的AID和相應參數(shù)獲得該服務端應用程序提供的共享接口,使用該共享接口中的方法,獲得該服務端應用程序提供的服務。
[0063]與現(xiàn)有技術(shù)相比,本發(fā)明提供的一種為智能卡打補丁的方法和系統(tǒng),針對智能卡平臺系統(tǒng)軟件,通過將補丁代碼下載到智能卡的可擦寫永久存儲區(qū),按需調(diào)用補丁代碼的函數(shù),能夠便捷、高效地實現(xiàn)智能卡平臺軟件的適應性修改;針對應用軟件,應用軟件中需要考慮產(chǎn)品適應性的功能模塊以服務端應用程序?qū)崿F(xiàn),應用軟件中的主框架模塊以客戶端應用程序?qū)崿F(xiàn),客戶端應用程序通過服務端應用程序的AID獲得相應服務,完成打補丁,從而便捷、高效地實現(xiàn)智能卡應用軟件的適應性修改。
【專利附圖】
【附圖說明】
[0064]圖1為本發(fā)明實施例的一種為智能卡打補丁的方法(對平臺系統(tǒng)軟件打補丁)的流程圖。
[0065]圖2為本發(fā)明實施例的另一種為智能卡打補丁的方法(對應用軟件打補丁)的流程圖。
[0066]圖3為本發(fā)明實施例的一種為智能卡打補丁的系統(tǒng)的結(jié)構(gòu)示意圖(對平臺系統(tǒng)軟件打補丁 )。
[0067]圖4為本發(fā)明實施例的一種為智能卡打補丁的系統(tǒng)的結(jié)構(gòu)示意圖(對應用軟件打補丁 )。
【具體實施方式】[0068]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,下文中將結(jié)合附圖對本發(fā)明的實施例進行詳細說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互任意組合。
[0069]如圖1所示,本發(fā)明實施例提供了一種實現(xiàn)智能卡軟件補丁的方法,該方法包括:
[0070]S10,在智能卡平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接口,在智能卡上的可擦寫存儲空間內(nèi)預留補丁代碼運行空間;
[0071]S20,將補丁代碼下載到預留的可擦寫存儲空間內(nèi),向所述補丁代碼調(diào)用接口返回所述補丁代碼運行的入口地址;
[0072]S30,如所述智能卡平臺系統(tǒng)軟件檢測到所述補丁代碼調(diào)用接口包含補丁代碼運行的入口地址,則通過該補丁代碼調(diào)用接口運行該補丁代碼。
[0073]該方法還可以包括下述特點:
[0074]較佳地,在智能卡平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接口,包括:在智能卡平臺系統(tǒng)軟件的以下一種或多種處理流程中預留補丁代碼調(diào)用接口:a)中斷處理流程;b)設備驅(qū)動處理流程;c)命令分發(fā)處理流程;
[0075]較佳地,在智能卡平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接口,包括:對功能需求容易出現(xiàn)變化的處理流程、或者在產(chǎn)品化階段需要進行功能擴展的處理流程、或者容易出現(xiàn)功能缺陷的處理流程,為這些處理流程預留補丁代碼調(diào)用接口。
[0076]較佳地,所述智能卡是Java卡。
[0077]其中,Java卡平臺系統(tǒng)軟件一般采用C語言+匯編語言(ASM)實現(xiàn)。但是,如果所述Java卡平臺系統(tǒng)軟件中還具有采用Java語言實現(xiàn)的處理流程,則需要先通過虛擬機native方法將該處理流程轉(zhuǎn)換為用C語言實現(xiàn),然后在其C語言實現(xiàn)中再采用上面的打補丁方法。
[0078]較佳地,將補丁代碼下載到預留的可擦寫存儲空間內(nèi)之前,將所述補丁代碼編譯為智能卡平臺系統(tǒng)軟件的函數(shù)庫。具體地,如補丁程序的實現(xiàn)不依賴智能卡平臺系統(tǒng)軟件里的函數(shù)功能,則直接將所述補丁程序編譯成函數(shù)庫。如補丁程序?qū)崿F(xiàn)需要調(diào)用智能卡平臺系統(tǒng)軟件里的函數(shù)功能,則在編譯補丁程序時,需要導入固化在智能卡ROM里智能卡平臺系統(tǒng)軟件相應的編譯信息(如函數(shù)地址、全局變量地址等)。
[0079]較佳地,將補丁代碼下載到預留的可擦寫存儲空間內(nèi),包括:智能卡平臺系統(tǒng)軟件接收到智能卡外部設備通過應用協(xié)議數(shù)據(jù)單元(application protocol data unit, APDU)命令發(fā)送過來的補丁代碼后,將所述補丁代碼下載到預留的可擦寫存儲空間內(nèi)。
[0080]較佳地,所述可擦寫存儲空間為EEPR0M。
[0081]較佳地,具體實現(xiàn)時,可以在智能卡平臺系統(tǒng)軟件中定義補丁函數(shù)指針,該補丁函數(shù)指針與需要打補丁的原函數(shù)具有相同的定義(也即,參數(shù)類型和返回值類型相同),在系統(tǒng)初始化時設置此函數(shù)指針為空。將補丁代碼下載到預留的可擦寫存儲空間,將所述補丁函數(shù)指針賦值為所述補丁代碼運行的入口地址。在智能卡平臺系統(tǒng)軟件運行時,增加對此補丁函數(shù)指針的判斷,如所述補丁函數(shù)指針為空(即不存在補丁函數(shù)),則仍然執(zhí)行原函數(shù)代碼,如果所述補丁函數(shù)指針不為空(即存在補丁函數(shù)),則執(zhí)行該補丁函數(shù)指針所指向的補丁代碼。
[0082]較佳地,如圖2所示,本發(fā)明實施例還提供了一種實現(xiàn)智能卡軟件補丁的方法,該方法包括:
[0083]S10,應用軟件中需要考慮產(chǎn)品適應性的功能模塊采用服務端應用程序?qū)崿F(xiàn),應用軟件的主框架模塊采用客戶端應用程序?qū)崿F(xiàn);客戶端應用程序通過服務端應用程序的應用標識AID獲得相應服務端應用程序的服務;
[0084]S20,為不可刪除的服務端應用程序打補丁時,直接下載并安裝新的服務端應用程序,并為新下載的服務端應用程序創(chuàng)建新的AID ;客戶端應用程序查找所述新的AID,通過所述新的AID獲得新下載的服務端應用程序的服務;
[0085]該方法還可以包括下述特點:
[0086]其中,所述智能卡是Java卡。
[0087]較佳地,每一個應用程序應用程序具有唯一的應用標識(AID);其中,AID可以包括標識字段和版本號字段。同一個功能模塊的各應用程序的AID,其標識字段相同,版本號字段不同;不同功能模塊的應用程序的AID的標識字段不同。比如,服務端應用程序的AID定義規(guī)則如下=AID由10位組成,前9個字節(jié)為0x112233445566778899,最后I個字節(jié)表示版本號,版本號從O到15。
[0088]較佳地,客戶端應用程序通過服務端應用程序的AID獲得相應服務端應用程序的服務,包括:
[0089]客戶端應用程序調(diào)用Java卡標準應用程序接口 API方法getAppletShareablelnterfaceOb ject (AID serverAID, byte parameter),通過指定服務端應用程序的AID和相應參數(shù)獲得該服務端應用程序提供的共享接口,使用該共享接口中的方法,獲得該服務端應用程序提供的服務。
[0090]較佳地,步驟S20中,為可刪除的服務端應用程序打補丁時,刪除該服務端應用程序,重新下載新的服務端應用程序,并為新下載的服務端應用程序創(chuàng)建與被刪除的服務端應用程序相同的AID ;客戶端應用程序通過原來的AID獲得新下載的服務端應用程序的服務。
[0091]較佳地,所述為新下載的服務端應用程序創(chuàng)建新的AID,包括:為新下載的服務端應用程序創(chuàng)建的AID的版本號比原來的服務端應用程序的AID的版本號高I號;
[0092]客戶端應用程序查找所述新的AID,包括:客戶端應用程序從預定義的最高版本號的AID向低版本號的AID遍歷,如找到一個版本號比當前需要打補丁的服務端應用小程序的版本號高的服務端應用小程序,則該新找到的服務端應用小程序的AID是新的AID。
[0093]如圖3所示,本發(fā)明實施例還提供了一種實現(xiàn)智能卡軟件補丁的系統(tǒng),該系統(tǒng)包括:
[0094]預處理模塊,用于在智能卡平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接口,在智能卡上的可擦寫存儲空間內(nèi)預留補丁代碼運行空間;
[0095]下載模塊,用于將補丁代碼下載到預留的可擦寫存儲空間內(nèi),向所述補丁代碼調(diào)用接口返回所述補丁代碼運行的入口地址;
[0096]打補丁模塊,用于如所述智能卡平臺系統(tǒng)軟件檢測到所述補丁代碼調(diào)用接口包含補丁代碼運行的入口地址,則通過該補丁代碼調(diào)用接口運行該補丁代碼。
[0097]該系統(tǒng)還可以包括下述特點:
[0098]其中,所述智能卡是Java卡。[0099]較佳地,預處理模塊,用于通過以下方式在智能卡平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接口:在智能卡平臺系統(tǒng)軟件的以下一種或多種處理流程中預留補丁代碼調(diào)用接口:
a)中斷處理流程;b)設備驅(qū)動處理流程;c)命令分發(fā)處理流程。
[0100]較佳地,預處理模塊,用于通過以下方式在智能卡平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接口:在智能卡平臺系統(tǒng)軟件中定義補丁函數(shù)指針,在系統(tǒng)初始化時設置此函數(shù)指針為空;
[0101]下載模塊,用于通過以下方式將補丁代碼下載到預留的可擦寫存儲空間內(nèi),向所述補丁代碼調(diào)用接口返回所述補丁代碼運行的入口地址:將補丁代碼下載到預留的可擦寫存儲空間,將所述補丁函數(shù)指針賦值為所述補丁代碼運行的入口地址;
[0102]打補丁模塊,用于如所述智能卡平臺系統(tǒng)軟件檢測到所述補丁代碼調(diào)用接口包含補丁代碼運行的入口地址,則通過該補丁代碼調(diào)用接口運行該補丁代碼,包括:如智能卡平臺系統(tǒng)軟件運行時檢測到所述補丁函數(shù)指針不為空,則執(zhí)行該補丁函數(shù)指針所指向的補丁代碼;如智能卡平臺系統(tǒng)軟件運行時檢測到所述補丁函數(shù)指針為空,則執(zhí)行原函數(shù)代碼。
[0103]如圖4所示,本發(fā)明實施例還提供了一種實現(xiàn)智能卡軟件補丁的系統(tǒng),該系統(tǒng)包括:
[0104]應用程序創(chuàng)建模塊,用于應用軟件中需要考慮產(chǎn)品適應性的功能模塊采用服務端應用程序?qū)崿F(xiàn),應用軟件的主框架模塊采用客戶端應用程序?qū)崿F(xiàn);客戶端應用程序通過服務端應用程序的應用標識AID獲得相應服務端應用程序的服務;
[0105]打補丁模塊,用于為不可刪除的服務端應用程序打補丁時,直接下載并安裝新的服務端應用程序,并為新下載的服務端應用程序創(chuàng)建新的AID ;客戶端應用程序查找所述新的AID,通過所述新的AID獲得新下載的服務端應用程序的服務。
[0106]該系統(tǒng)還可以包括下述特點:
[0107]其中,所述智能卡是Java卡。
[0108]較佳地,打補丁模塊,還用于為可刪除的服務端應用程序打補丁時,刪除該服務端應用程序,重新下載新的服務端應用程序,并為新下載的服務端應用程序創(chuàng)建與被刪除的服務端應用程序相同的AID ;客戶端應用程序通過原來的AID獲得新下載的服務端應用程序的服務。
[0109]較佳地,所述AID包括版本號字段;
[0110]打補丁模塊,用于采用以下的方式為新下載的服務端應用程序創(chuàng)建新的AID:為新下載的服務端應用程序創(chuàng)建的AID的版本號比原來的服務端應用程序的AID的版本號高I號;
[0111]打補丁模塊,用于客戶端應用程序采用以下的方式查找所述新的AID:客戶端應用程序從預定義的最高版本號的AID向低版本號的AID遍歷,如找到一個版本號比當前需要打補丁的服務端應用小程序的版本號高的服務端應用小程序,則該新找到的服務端應用小程序的AID是新的AID。
[0112]較佳地,應用程序創(chuàng)建模塊,用于客戶端應用程序通過服務端應用程序的AID獲得相應服務端應用程序的服務,包括:客戶端應用程序調(diào)用Java卡標準API方法getAppletShareablelnterfaceOb ject (AID serverAID, byte parameter),通過指定服務端應用程序的AID和相應參數(shù)獲得該服務端應用程序提供的共享接口,使用該共享接口中的方法,獲得該服務端應用程序提供的服務。
[0113]上述實施例提供的一種為智能卡打補丁的方法和系統(tǒng),針對智能卡平臺系統(tǒng)軟件,通過將補丁代碼下載到智能卡的可擦寫永久存儲區(qū),按需調(diào)用補丁代碼的函數(shù),能夠便捷、高效地實現(xiàn)智能卡平臺軟件的適應性修改;針對應用軟件,應用軟件中需要考慮產(chǎn)品適應性的功能模塊以服務端應用程序?qū)崿F(xiàn),應用軟件中的主框架模塊以客戶端應用程序?qū)崿F(xiàn),客戶端應用程序通過服務端應用程序的AID獲得相應服務,完成打補丁,從而便捷、高效地實現(xiàn)智能卡應用軟件的適應性修改。
[0114]本領域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來指令相關(guān)硬件完成,所述程序可以存儲于計算機可讀存儲介質(zhì)中,如只讀存儲器、磁盤或光盤等??蛇x地,上述實施例的全部或部分步驟也可以使用一個或多個集成電路來實現(xiàn),相應地,上述實施例中的各模塊/單元可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。本發(fā)明不限制于任何特定形式的硬件和軟件的結(jié)合。
[0115]需要說明的是,本發(fā)明還可有其他多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領域的技術(shù)人員可根據(jù)本發(fā)明作出各種相應的改變和變形,但這些相應的改變和變形都應屬于本發(fā)明所附的權(quán)利要求的保護范圍。
【權(quán)利要求】
1.一種實現(xiàn)智能卡軟件補丁的方法,該方法包括: 在智能卡平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接口,在智能卡上的可擦寫存儲空間內(nèi)預留補丁代碼運行空間; 將補丁代碼下載到預留的可擦寫存儲空間內(nèi),向所述補丁代碼調(diào)用接口返回所述補丁代碼運行的入口地址; 如所述智能卡平臺系統(tǒng)軟件檢測到所述補丁代碼調(diào)用接口包含補丁代碼運行的入口地址,則通過該補丁代碼調(diào)用接口運行該補丁代碼。
2.如權(quán)利要求1所述的方法,其特征在于: 所述智能卡是Java卡。
3.如權(quán)利要求2所述的方法,其特征在于: 在智能卡平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接口,包括:在智能卡平臺系統(tǒng)軟件的以下一種或多種處理流程中預留補丁代碼調(diào)用接口:a)中斷處理流程;b)設備驅(qū)動處理流程;c)命令分發(fā)處理流程。
4.如權(quán)利要求2所述的方法,其特征在于: 在智能卡平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接口,包括: 在智能卡平臺系統(tǒng) 軟件中定義補丁函數(shù)指針,在系統(tǒng)初始化時設置此函數(shù)指針為空;將補丁代碼下載到預留的可擦寫存儲空間內(nèi),向所述補丁代碼調(diào)用接口返回所述補丁代碼運行的入口地址,包括: 將補丁代碼下載到預留的可擦寫存儲空間,將所述補丁函數(shù)指針賦值為所述補丁代碼運行的入口地址; 如所述智能卡平臺系統(tǒng)軟件檢測到所述補丁代碼調(diào)用接口包含補丁代碼運行的入口地址,則通過該補丁代碼調(diào)用接口運行該補丁代碼,包括: 如智能卡平臺系統(tǒng)軟件運行時檢測到所述補丁函數(shù)指針不為空,則執(zhí)行該補丁函數(shù)指針所指向的補丁代碼;如智能卡平臺系統(tǒng)軟件運行時檢測到所述補丁函數(shù)指針為空,則執(zhí)行原函數(shù)代碼。
5.一種實現(xiàn)智能卡軟件補丁的方法,該方法包括: 應用軟件中需要考慮產(chǎn)品適應性的功能模塊采用服務端應用程序?qū)崿F(xiàn),應用軟件的主框架模塊采用客戶端應用程序?qū)崿F(xiàn);客戶端應用程序通過服務端應用程序的應用標識AID獲得相應服務端應用程序的服務; 為不可刪除的服務端應用程序打補丁時,直接下載并安裝新的服務端應用程序,并為新下載的服務端應用程序創(chuàng)建新的AID ;客戶端應用程序查找所述新的AID,通過所述新的AID獲得新下載的服務端應用程序的服務。
6.如權(quán)利要求5所述的方法,其特征在于: 所述智能卡是Java卡。
7.如權(quán)利要求6所述的方法,其特征在于,還包括: 為可刪除的服務端應用程序打補丁時,刪除該服務端應用程序,重新下載新的服務端應用程序,并為新下載的服務端應用程序創(chuàng)建與被刪除的服務端應用程序相同的AID;客戶端應用程序通過原來的AID獲得新下載的服務端應用程序的服務。
8.如權(quán)利要求6所述的方法,其特征在于:所述AID包括版本號字段; 所述為新下載的服務端應用程序創(chuàng)建新的AID,包括:為新下載的服務端應用程序創(chuàng)建的AID的 版本號比原來的服務端應用程序的AID的版本號高I號; 客戶端應用程序查找所述新的AID,包括: 客戶端應用程序從預定義的最高版本號的AID向低版本號的AID遍歷,如找到一個版本號比當前需要打補丁的服務端應用小程序的版本號高的服務端應用小程序,則該新找到的服務端應用小程序的AID是新的AID。
9.如權(quán)利要求6所述的方法,其特征在于: 客戶端應用程序通過服務端應用程序的AID獲得相應服務端應用程序的服務,包括:客戶端應用程序調(diào)用Java卡標準API方法,通過指定服務端應用程序的AID和相應參數(shù)獲得該服務端應用程序提供的共享接口,使用該共享接口中的方法,獲得該服務端應用程序提供的服務。
10.一種實現(xiàn)智能卡軟件補丁的系統(tǒng),該系統(tǒng)包括: 預處理模塊,用于在智能卡平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接口,在智能卡上的可擦寫存儲空間內(nèi)預留補丁代碼運行空間; 下載模塊,用于將補丁代碼下載到預留的可擦寫存儲空間內(nèi),向所述補丁代碼調(diào)用接口返回所述補丁代碼運行的入口地址; 打補丁模塊,用于如所述智能卡平臺系統(tǒng)軟件檢測到所述補丁代碼調(diào)用接口包含補丁代碼運行的入口地址,則通過該補丁代碼調(diào)用接口運行該補丁代碼。
11.如權(quán)利要求10所述的系統(tǒng),其特征在于: 所述智能卡是Java卡。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于: 預處理模塊,用于通過以下方式在智能卡平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接口:在智能卡平臺系統(tǒng)軟件的以下一種或多種處理流程中預留補丁代碼調(diào)用接口:a)中斷處理流程;b)設備驅(qū)動處理流程;c)命令分發(fā)處理流程。
13.如權(quán)利要求11所述的系統(tǒng),其特征在于: 預處理模塊,用于通過以下方式在智能卡平臺系統(tǒng)軟件中預留補丁代碼調(diào)用接口:在智能卡平臺系統(tǒng)軟件中定義補丁函數(shù)指針,在系統(tǒng)初始化時設置此函數(shù)指針為空; 下載模塊,用于通過以下方式將補丁代碼下載到預留的可擦寫存儲空間內(nèi),向所述補丁代碼調(diào)用接口返回所述補丁代碼運行的入口地址:將補丁代碼下載到預留的可擦寫存儲空間,將所述補丁函數(shù)指針賦值為所述補丁代碼運行的入口地址; 打補丁模塊,用于如所述智能卡平臺系統(tǒng)軟件檢測到所述補丁代碼調(diào)用接口包含補丁代碼運行的入口地址,則通過該補丁代碼調(diào)用接口運行該補丁代碼,包括:如智能卡平臺系統(tǒng)軟件運行時檢測到所述補丁函數(shù)指針不為空,則執(zhí)行該補丁函數(shù)指針所指向的補丁代碼;如智能卡平臺系統(tǒng)軟件運行時檢測到所述補丁函數(shù)指針為空,則執(zhí)行原函數(shù)代碼。
14.一種實現(xiàn)智能卡軟件補丁的系統(tǒng),該系統(tǒng)包括: 應用程序創(chuàng)建模塊,用于應用軟件中需要考慮產(chǎn)品適應性的功能模塊采用服務端應用程序?qū)崿F(xiàn),應用軟件的主框架模塊采用客戶端應用程序?qū)崿F(xiàn);客戶端應用程序通過服務端應用程序的應用標識AID獲得相應服務端應用程序的服務;打補丁模塊,用于為不可刪除的服務端應用程序打補丁時,直接下載并安裝新的服務端應用程序,并為新下載的服務端應用程序創(chuàng)建新的AID ;客戶端應用程序查找所述新的AID,通過所述新的AID獲得新下載的服務端應用程序的服務。
15.如權(quán)利要求14所述的系統(tǒng),其特征在于: 所述智能卡是Java卡。
16.如權(quán)利要求15所述的系統(tǒng),其特征在于: 打補丁模塊,還用于為可刪除的服務端應用程序打補丁時,刪除該服務端應用程序,重新下載新的服務端應用程序,并為新下載的服務端應用程序創(chuàng)建與被刪除的服務端應用程序相同的AID ;客戶端應用程序通過原來的AID獲得新下載的服務端應用程序的服務。
17.如權(quán)利要求15所述的系統(tǒng),其特征在于: 所述AID包括版本號字段; 打補丁模塊,用于采用以下的方式為新下載的服務端應用程序創(chuàng)建新的AID:為新下載的服務端應用程序創(chuàng)建的AID的版本號比原來的服務端應用程序的AID的版本號高I號; 打補丁模塊,用于客戶端應用程序采用以下的方式查找所述新的AID:客戶端應用程序從預定義的最高版本號的AID向低版本號的AID遍歷,如找到一個版本號比當前需要打補丁的服務端應用小程序的版本號高的服務端應用小程序,則該新找到的服務端應用小程序的AID是新的AID。
18.如權(quán)利要求15`所述的系統(tǒng),其特征在于: 應用程序創(chuàng)建模塊,用于客戶端應用程序通過服務端應用程序的AID獲得相應服務端應用程序的服務,包括: 客戶端應用程序調(diào)用Java卡標準API方法,通過指定服務端應用程序的AID和相應參數(shù)獲得該服務端應用程序提供的共享接口,使用該共享接口中的方法,獲得該服務端應用程序提供的服務。
【文檔編號】G06F9/445GK103677933SQ201310710638
【公開日】2014年3月26日 申請日期:2013年12月19日 優(yōu)先權(quán)日:2013年12月19日
【發(fā)明者】董翔, 樊兆均 申請人:大唐微電子技術(shù)有限公司