專利名稱:一種基于Java智能卡下載文件的方法及裝置的制作方法
技術領域:
本發(fā)明涉及智能卡領域,尤其涉及一種基于Java智能卡下載文件的方法及裝置。
背景技術:
Java智能卡是可以運行Java程序代碼的智能卡,在智能卡中不能直接存儲Java 源代碼或class類文件,在將Java智能卡類導入一個Java智能卡設備之前,需要通過轉(zhuǎn)換裝置將類文件轉(zhuǎn)換為標準的轉(zhuǎn)化小應用程序(Converted Applet, CAP)文件。CAP文件的格式由Java智能卡虛擬機規(guī)范統(tǒng)一定義,一個CAP文件包括多個組件,如Header組件、 Directory組件、Applet組件、Import組件、Class組件、Method組件等12個組件,而每個組件又由多個域組成。目前,在將CAP文件下載到Java智能卡中時,每當Java智能卡接收到一個組件內(nèi)的一個域時,即開始轉(zhuǎn)換流程,將相應的CAP文件數(shù)據(jù)轉(zhuǎn)換為Java智能卡要求的存儲結構。 針對整個CAP文件的下載處理過程,該處理方法存在以下缺陷對于組件中的每個域都對應一個獨立的下載處理過程,這就需要在不同域的下載處理過程之間頻繁進行切換,這使得產(chǎn)生的額外時間開銷較大,降低了 CAP文件的下載速度。
發(fā)明內(nèi)容
本發(fā)明提供一種基于Java智能卡下載文件的方法及裝置,用以提高Java智能卡下載CAP文件時的效率。本發(fā)明實施例提供的具體技術方案如下一種基于Java智能卡下載文件的方法,包括根據(jù)存儲的按照轉(zhuǎn)化小應用程序CAP文件結構設定的動作單元類型及順序,獲取存儲的該動作單元對應的下載數(shù)據(jù)量相關信息,并確定相應的下載數(shù)據(jù)量;按照所述下載數(shù)據(jù)量從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù),并存儲至Java智能卡中。一種基于Java智能卡下載文件的裝置,包括第一處理單元,用于根據(jù)存儲的按照轉(zhuǎn)化小應用程序CAP文件結構設定的動作單元類型及順序,獲取存儲的該動作單元對應的下載數(shù)據(jù)量相關信息,并確定相應的下載數(shù)據(jù)量;第二處理單元,用于按照所述下載數(shù)據(jù)量從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù),并存儲至Java智能卡中。基于上述技術方案,本發(fā)明實施例中,按照待下載文件結構設置動作單元類型、動作單元的順序以及動作單元對應的下載數(shù)據(jù)量相關信息,并存儲在Java智能卡中,在下載數(shù)據(jù)時,根據(jù)存儲的動作單元類型以及動作單元順序,獲取存儲的該動作單元對應的下載數(shù)據(jù)量相關信息并確定下載數(shù)據(jù)量,按照該下載數(shù)據(jù)量從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù),并存儲至Java智能卡中,從而能夠?qū)⒋螺d的文件數(shù)據(jù),按照動作單元進行劃分后,分別下載至Java智能卡中,避免了針對數(shù)據(jù)文件中的每個域都啟動下載處理過程,從而提高了下載CAP文件的效率,從時間上來講,提高了 CAP文件的下載速度,而從空間上來講,能夠充分利用Java智能卡有限的緩存資源。
圖1為本發(fā)明實施例中Java智能卡下載文件的系統(tǒng)架構圖;圖2為本發(fā)明實施例中基于Java智能卡下載文件的裝置結構圖;圖3為本發(fā)明實施例中基于Java智能卡下載文件的方法流程圖。
具體實施例方式為了提高Java智能卡下載CAP文件時的效率,本發(fā)明實施例中提供了一種基于 Java智能卡下載文件的方法及裝置,能夠有效地提高下載文件的速度。該方法為根據(jù)存儲的按照轉(zhuǎn)化小應用程序CAP文件結構設定的動作單元類型及順序,獲取存儲的該動作單元對應的下載數(shù)據(jù)量相關信息,并確定相應的下載數(shù)據(jù)量,按照下載數(shù)據(jù)量從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù),并存儲至Java智能卡中。本發(fā)明實施例所提供的文件下載方法并不局限于基于Java智能卡進行下載的情況,也可以應用于其他文件下載的情況,如基于計算機進行文件下載,本領域技術人員可以根據(jù)本發(fā)明實施例所提供的方法擴展到其它應用,對于除Java智能卡以外的應用情況,本發(fā)明也將其包括在內(nèi)。本發(fā)明實施例中,需要下載的文件可以是CAP文件,也可以是其它數(shù)據(jù)量較大的數(shù)據(jù)文件,本發(fā)明實施例中,僅以CAP文件為例進行說明。下面結合附圖對本發(fā)明優(yōu)選的實施方式進行詳細說明。如附圖1所示,本發(fā)明實施例中,基于Java Card下載文件的系統(tǒng)主要包括卡片接受設備10和Java Card設備11,其中,卡片接受設備10,用于向Java Card設備11下發(fā)相應的應用程序協(xié)議數(shù)據(jù)單元 (APDU)命令,在APDU緩存中攜帶待下載的文件數(shù)據(jù);Java Card設備11,用于根據(jù)存儲的按照轉(zhuǎn)化小應用程序CAP文件結構設定的動作單元類型及動作單元順序,獲取存儲的該動作單元對應的下載數(shù)據(jù)量相關信息,并確定相應的下載數(shù)據(jù)量,按照該下載數(shù)據(jù)量從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù),并存儲至Java智能卡中。如附圖2所示,本發(fā)明實施例中,Java智能卡設備11中包含的基于Java智能卡下載文件的裝置主要包括以下處理單元第一處理單元111,用于根據(jù)存儲的按照轉(zhuǎn)化小應用程序CAP文件結構設定的動作單元類型及順序,獲取存儲的該動作單元對應的下載數(shù)據(jù)量相關信息,并確定相應的下載數(shù)據(jù)量;第二處理單元112,用于按照所述下載數(shù)據(jù)量從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù),并存儲至Java智能卡中?;谏鲜鱿到y(tǒng)架構,如附圖3所示,本發(fā)明實施例中,基于Java智能卡下載文件的詳細方法流程如下
步驟301 根據(jù)存儲的按照轉(zhuǎn)化小應用程序CAP文件結構設定的動作單元類型及動作單元順序,獲取存儲的該動作單元對應的下載數(shù)據(jù)量相關信息,并確定相應的下載數(shù)據(jù)量。其中,卡片接受設備通過將待下載的CAP文件數(shù)據(jù)放置在APDU緩存中,再將攜帶待下載文件數(shù)據(jù)的APDU下發(fā)給Java智能卡設備。本發(fā)明實施例中,由于CAP文件的結構固定,每個CAP文件包含12個組件,每個組件中又包含特定的域,設計人員可以根據(jù)CAP文件的結構將整個CAP文件數(shù)據(jù)劃分為指定數(shù)目的動作單元,例如,將CAP文件劃分為53個動作單元。動作單元是指下載CAP文件時的處理單位,其以Java智能卡的易失性存儲區(qū)為載體,以符合Java智能卡規(guī)范的CAP文件數(shù)據(jù)為內(nèi)容。較佳地,設計人員在將整個CAP文件數(shù)據(jù)劃分為指定數(shù)目的動作單元時,設定動作單元類型、動作單元的順序,以及動作單元對應的下載數(shù)據(jù)量相關信息。其中,在針對整個CAP文件數(shù)據(jù)劃分動作單元時,根據(jù)CAP文件的組織結構(如,CAP文件包含的域)設定動作單元類型和動作單元的順序,以及動作單元對應的下載數(shù)據(jù)量相關信息。在下載CAP文件之前,將設定的動作單元類型、動作單元的順序,以及動作單元對應的下載數(shù)據(jù)量相關信息存儲在Java智能卡中。較佳地,可以分別針對每個動作單元設定不同的標識,則動作單元的順序可以表征為動作單元的標識的順序。其中,動作單元的下載數(shù)據(jù)量相關信息,用于確定動作單元的下載數(shù)據(jù)量。獲取存儲的動作單元對應的下載數(shù)據(jù)量相關信息,并確定相應的下載數(shù)據(jù)量時,具體為獲取存儲的動作單元對應的下載數(shù)據(jù)量相關信息,將該下載數(shù)據(jù)量相關信息直接作為相應的下載數(shù)據(jù)量;或者,獲取存儲的動作單元對應的下載數(shù)據(jù)量相關信息,該下載數(shù)據(jù)量相關信息為動作單元對應的下載數(shù)據(jù)量的位置信息,根據(jù)該下載數(shù)據(jù)量的位置信息獲取相應的下載數(shù)據(jù)量。本發(fā)明實施例中,根據(jù)CAP文件數(shù)據(jù)下載至Java智能卡時采用的不同處理方式, 將CAP文件數(shù)據(jù)對應的動作單元分為靜態(tài)動作單元、動態(tài)動作單元、透明動作單元和循環(huán)動作單元4個基本類型,在實際應用中,可以對上述基本類型進行組合,例如,可以組合為非循環(huán)靜態(tài)動作單元、非循環(huán)動態(tài)動作單元、循環(huán)靜態(tài)動作單元、循環(huán)動態(tài)動作單元、透明動作單元等,本發(fā)明實施例中,動作單元的類型并不限于上述幾種,本領域技術人員可以對基本類型的動作單元進行組合得到其它類型的動作單元,本發(fā)明也將其包括在內(nèi)。本發(fā)明實施例中,設計人員根據(jù)動作單元對應的CAP文件數(shù)據(jù)轉(zhuǎn)換為Java智能卡存儲結構時的處理方式,設定動作單元的類型。根據(jù)動作單元對應的CAP文件數(shù)據(jù)轉(zhuǎn)換為 Java智能卡存儲結構時的不同處理方式,依次設計每個動作單元的類型時,具體為如果動作單元對應的文件數(shù)據(jù)為循環(huán)結構,則將該動作單元設為循環(huán)動作單元,實際應用中,如果CAP文件中的某段循環(huán)結構的文件數(shù)據(jù)大于動作單元緩沖區(qū)的大小時,則將該循環(huán)結構的文件數(shù)據(jù)分為兩部分,每部分對應一個動作單元,并將第二動作單元設定為循環(huán)動作單元,例如,CAP文件數(shù)據(jù)中循環(huán)次數(shù)為count的循環(huán)體數(shù)據(jù);如果動作單元對應的文件數(shù)據(jù)可以采用原有形式下載至Java智能卡,將該對應單元設為透明動作單元,例如,CAP文件數(shù)據(jù)中的name變量對應的數(shù)據(jù);如果動作單元對應的文件數(shù)據(jù)的長度可變時,將該動作單元設為動態(tài)動作單元,例如,CAP文件數(shù)據(jù)中AID變量對應的文件數(shù)據(jù),該文件數(shù)據(jù)的長度取
6決于AID_Length變量的取值,與AID變量對應的文件數(shù)據(jù)所對應的動作單元為動態(tài)動作單元;如果動作單元對應的文件數(shù)據(jù)的長度固定不變時,將該動作單元設為靜態(tài)動作單元,例如,CAP文件初始部分的文件數(shù)據(jù)長度固定不變,將該文件數(shù)據(jù)對應的動作單元設為靜態(tài)動作單元。本發(fā)明實施例中,若動作單元類型為靜態(tài)動作單元,則將獲取的該動作單元對應的下載數(shù)據(jù)量相關信息直接作為該動作單元下載數(shù)據(jù)量;若動作單元類型為非靜態(tài)動作單元,則獲取的下載數(shù)據(jù)量相關信息為該動作單元對應的下載數(shù)據(jù)量的位置信息,根據(jù)該下載數(shù)據(jù)量的位置信息獲取該動作單元的下載數(shù)據(jù)量。其中,根據(jù)下載數(shù)據(jù)量的位置信息獲取動作單元的下載數(shù)據(jù)量時,基于下載的與上一個動作單元對應的數(shù)據(jù),確定下載數(shù)據(jù)量的位置信息對應的數(shù)據(jù),獲取該數(shù)據(jù)并作為當前處理的動作單元的下載數(shù)據(jù)量。步驟302 按照下載數(shù)據(jù)量從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù),并存儲至Java智能卡中。較佳地,按照下載數(shù)據(jù)量從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù)時,若確定動作單元對應的下載數(shù)據(jù)量大于APDU緩存中包含的數(shù)據(jù)量時,將APDU緩存中的數(shù)據(jù)下載至緩沖區(qū)中,并從下一條APDU緩存中下載所述動作單元對應的其余數(shù)據(jù)至緩沖區(qū),并將緩沖區(qū)中的數(shù)據(jù)存儲至Java智能卡中。本發(fā)明實施例中,在將動作單元對應的文件數(shù)據(jù)保存至Java智能卡之前,按照 Java智能卡規(guī)范將該文件數(shù)據(jù)轉(zhuǎn)換為符合具體Java智能卡產(chǎn)品存儲要求的形式,再按照該形式保存至Java智能卡中。較佳地,動作單元緩沖區(qū)的大小為16個字節(jié),在Java智能卡中的易失性存儲區(qū)有限,或采用特殊的CAP文件數(shù)據(jù)處理方式時,動作單元緩沖區(qū)的大小可以小于16字節(jié);在 Java智能卡的易失性存儲區(qū)足夠大,動作單元緩沖區(qū)的大小可以大于16字節(jié),但是,為了保證一個APDU命令至少對應一次下載過程,動作單元緩沖區(qū)的大小應限定為不大于1 字節(jié)(即APDU命令體大小的一半)。本發(fā)明實施例中,將動作單元緩沖區(qū)中的數(shù)據(jù)存儲到Java智能卡之后,按照存儲的動作單元的順序,獲取下一個動作單元的類型和下載數(shù)據(jù)量相關信息。例如,第一個動作單元(標識為1)的類型為靜態(tài)動作單元,預設的下載數(shù)據(jù)量為13個字節(jié),則從APDU緩存中下載13個字節(jié)大小的文件數(shù)據(jù),并按照Java智能卡存儲結構進行保存,然后按照存儲的動作單元標識順序獲取第二個動作單元的標識為2,根據(jù)存儲的信息可知,標識為2的動作單元的類型為動態(tài)動作單元,存儲的下載數(shù)據(jù)量的位置信息為13,基于標識為1的動作單元對應的文件數(shù)據(jù),從該文件數(shù)據(jù)中獲取第13個字節(jié)位置的文件數(shù)據(jù),并作為標識為2的動作單元的下載數(shù)據(jù)量。本發(fā)明實施例中,若動作單元類型為循環(huán)動作單元,按照所述下載數(shù)據(jù)量從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù)之前,獲取存儲的該動作單元的計數(shù)器數(shù)據(jù)位置信息,基于下載的與上一個動作單元對應的數(shù)據(jù),確定所述計數(shù)器數(shù)據(jù)位置信息對應的數(shù)據(jù),獲取該數(shù)據(jù)并作為計數(shù)器的值。例如,在確定標識為5的動作單元類型為循環(huán)動作單元時,獲取存儲的計數(shù)器數(shù)據(jù)位置信息為6,基于下載的與標識4對應的文件數(shù)據(jù),確定該文件數(shù)據(jù)中第6個字節(jié)位置 (即計數(shù)器數(shù)據(jù)位置信息確定的位置)對應的文件數(shù)據(jù)為2,獲取數(shù)據(jù)2并作為標識為5的
7循環(huán)動作單元的計數(shù)器的值。在動作單元為循環(huán)動作單元時,判斷循環(huán)動作單元的計數(shù)器是否為零值,若確定為非零值時,根據(jù)該動作單元對應的下載數(shù)據(jù)量,從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù),并存儲至Java智能卡中,將所述計數(shù)器的值減1,保持動作單元的標識和下載數(shù)據(jù)量不變;若確定為零值時,按照存儲的動作單元標識順序,獲取下一個動作單元的標識及類型。例如,確定存儲的循環(huán)動作單元的計數(shù)器的值為2,存儲的循環(huán)動作單元的下載數(shù)據(jù)量為5個字節(jié),首先判斷計數(shù)器為非零值,則從APDU緩存中下載5個字節(jié)的數(shù)據(jù),并存儲至Java智能卡中,將計數(shù)器減1,保持動作單元的標識和大小不變;進一步確定循環(huán)動作單元的計數(shù)器的值為1 (為非零值),則從APDU緩存中依次下載5個字節(jié)的數(shù)據(jù),存儲至Java 智能卡中,并將計數(shù)器減1,保持動作單元的標識和大小不變;進一步確定循環(huán)動作單元的計數(shù)器的值為零值時,獲取下一個動作單元的標識和類型。本發(fā)明實施例中,設定靜態(tài)動作單元、動態(tài)動作單元和循環(huán)動作單元的大小不大于動作單元緩沖區(qū)的大?。欢该鲃幼鲉卧拇笮〔皇軇幼鲉卧彌_區(qū)大小的限制,例如, 可以是零到幾千字節(jié)。本發(fā)明實施例中,按照待下載文件結構設置動作單元類型、動作單元的順序以及動作單元對應的下載數(shù)據(jù)量相關信息,并存儲在Java智能卡中,在下載數(shù)據(jù)時,根據(jù)存儲的動作單元類型以及動作單元的順序,獲取存儲的該動作單元對應的下載數(shù)據(jù)量相關信息,并確定相應的下載數(shù)據(jù)量,按照該下載數(shù)據(jù)量從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù),并存儲至Java智能卡中,從而能夠?qū)⒋螺d的文件數(shù)據(jù),按照動作單元分別下載至Java智能卡中,避免了針對數(shù)據(jù)文件中的每個域都啟動下載處理過程,從而提高了下載CAP文件的效率,即從時間上提高了 CAP文件的速度,從空間上能夠充分利用Java 智能卡有限的緩存資源。另外,對于組件中的每個域都對應一個獨立的下載處理過程,這就需要在不同域的下載處理過程之間頻繁進行切換,這使得產(chǎn)生的額外時間開銷較大,同時由于各個組件域大小并不相同,甚至大小相差很大,從而不能充分利用Java智能卡的緩存資源,降低了對Java智能卡緩存資源的利用率。本發(fā)明通過將待下載的CAP文件數(shù)據(jù)對應至各個動作單元,每個動作單元對應一次下載處理過程,在每個下載處理過程中,除了完成控制所需的 RAM資源,所需額外資源取決于CAP文件數(shù)據(jù)下載至Java智能卡時的具體處理,因此,可以提高RAM資源的利用率。由于一個動作單元對應盡可能多的文件數(shù)據(jù),從而將CAP文件數(shù)據(jù)以動作單元為單位進行下載,達到了批量下載數(shù)據(jù)的目的,從而提高CAP文件的下載速度。同時,由于組件每個域?qū)南螺d處理過程所需的處理時間并不相同,對于某些域的下載處理過程所需的處理時間較短,甚至可能小于切換至另外一個域的下載處理過程所需的時間,而某些域的下載處理過程所需的時間較長,可能會超過預定的轉(zhuǎn)換時間,從而導致CAP文件下載過程的不穩(wěn)定。本發(fā)明實施例中,通過以動作單元為單位下載文件數(shù)據(jù), 避免了單個下載處理過程的時間過長或過短,使得整個CAP文件數(shù)據(jù)的下載過程可以平穩(wěn)進行,增強了系統(tǒng)的穩(wěn)定性。并且,由于按照組件中的域進行下載的過程是公開和可以預知的,因此容易受到來自電信號分析的威脅或有針對性的鐳射攻擊,引入安全隱患。本發(fā)明實施例中,每個動作單元的類型和大小都是由設計者預先設定,具有一定的保密性,從而一定程度上提高了 Java智能卡的安全性。 顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權利要求
1.一種基于Java智能卡下載文件的方法,其特征在于,包括根據(jù)存儲的按照轉(zhuǎn)化小應用程序CAP文件結構設定的動作單元類型及順序,獲取存儲的該動作單元對應的下載數(shù)據(jù)量相關信息,并確定相應的下載數(shù)據(jù)量;按照所述下載數(shù)據(jù)量從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù),并存儲至Java智能卡中。
2.如權利要求1所述的方法,其特征在于,獲取存儲的該動作單元對應的下載數(shù)據(jù)量相關信息,并確定相應的下載數(shù)據(jù)量,包括獲取存儲的動作單元對應的下載數(shù)據(jù)量相關信息,將該下載數(shù)據(jù)量相關信息直接作為相應的下載數(shù)據(jù)量;或者獲取存儲的動作單元對應的下載數(shù)據(jù)量相關信息,該下載數(shù)據(jù)量相關信息為所述動作單元對應的下載數(shù)據(jù)量的位置信息,根據(jù)該下載數(shù)據(jù)量的位置信息獲取相應的下載數(shù)據(jù)量。
3.如權利要求2所述的方法,其特征在于,若動作單元類型為靜態(tài)動作單元,則將獲取的該動作單元對應的下載數(shù)據(jù)量相關信息直接作為該動作單元下載數(shù)據(jù)量;若動作單元類型為非靜態(tài)動作單元,則獲取的下載數(shù)據(jù)量相關信息為該動作單元對應的下載數(shù)據(jù)量的位置信息,根據(jù)該下載數(shù)據(jù)量的位置信息獲取該動作單元的下載數(shù)據(jù)量。
4.如權利要求3所述的方法,其特征在于,根據(jù)下載數(shù)據(jù)量的位置信息獲取該動作單元的下載數(shù)據(jù)量,包括基于下載的與上一個動作單元對應的數(shù)據(jù),確定所述下載數(shù)據(jù)量的位置信息對應的數(shù)據(jù),獲取該數(shù)據(jù)并作為當前處理的動作單元的下載數(shù)據(jù)量。
5.如權利要求1-4任一項所述的方法,其特征在于,按照所述下載數(shù)據(jù)量從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù),并存儲至Java智能卡中,包括在確定動作單元對應的下載數(shù)據(jù)量大于APDU緩存中包含的數(shù)據(jù)量時,將APDU緩存中的數(shù)據(jù)下載至緩沖區(qū)中,并從下一條APDU緩存中下載所述動作單元對應的其余數(shù)據(jù)至緩沖區(qū),并將緩沖區(qū)中的數(shù)據(jù)存儲至Java智能卡中。
6.如權利要求5所述的方法,其特征在于,若動作單元類型為循環(huán)動作單元,按照所述下載數(shù)據(jù)量從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù)之前,包括獲取存儲的該動作單元的計數(shù)器數(shù)據(jù)位置信息,基于下載的與上一個動作單元對應的數(shù)據(jù),確定所述計數(shù)器數(shù)據(jù)位置信息對應的數(shù)據(jù),獲取該數(shù)據(jù)并作為計數(shù)器的值。
7.如權利要求6所述的方法,其特征在于,若動作單元為循環(huán)動作單元,首先判斷循環(huán)動作單元的計數(shù)器是否為零值,若確定為非零值時,根據(jù)該動作單元對應的下載數(shù)據(jù)量,從應用程序協(xié)議數(shù)據(jù)單元 APDU緩存中下載相應的數(shù)據(jù),并存儲至Java智能卡中,將所述計數(shù)器的值減1,保持動作單元的標識和下載數(shù)據(jù)量不變;若確定為零值時,按照存儲的動作單元標識順序,獲取下一個動作單元的標識及類型。
8.一種基于Java智能卡下載文件的裝置,其特征在于,包括第一處理單元,用于根據(jù)存儲的按照轉(zhuǎn)化小應用程序CAP文件結構設定的動作單元類型及順序,獲取存儲的該動作單元對應的下載數(shù)據(jù)量相關信息,并確定相應的下載數(shù)據(jù)量;第二處理單元,用于按照所述下載數(shù)據(jù)量從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù),并存儲至Java智能卡中。
9.如權利要求8所述的裝置,其特征在于,所述第一處理單元獲取存儲的該動作單元對應的下載數(shù)據(jù)量相關信息,并確定相應的下載數(shù)據(jù)量,具體為獲取存儲的動作單元對應的下載數(shù)據(jù)量相關信息,將該下載數(shù)據(jù)量相關信息直接作為相應的下載數(shù)據(jù)量;或者獲取存儲的動作單元對應的下載數(shù)據(jù)量相關信息,該下載數(shù)據(jù)量相關信息為所述動作單元對應的下載數(shù)據(jù)量的位置信息,根據(jù)該下載數(shù)據(jù)量的位置信息獲取相應的下載數(shù)據(jù)量。
10.如權利要求9所述的裝置,其特征在于,若動作單元類型為靜態(tài)動作單元,則第一處理單元將獲取的該動作單元對應的下載數(shù)據(jù)量相關信息直接作為該動作單元下載數(shù)據(jù)量;若動作單元類型為非靜態(tài)動作單元,則第一處理單元獲取的下載數(shù)據(jù)量相關信息為該動作單元對應的下載數(shù)據(jù)量的位置信息,根據(jù)該下載數(shù)據(jù)量的位置信息獲取該動作單元的下載數(shù)據(jù)量。
11.如權利要求10所述的裝置,其特征在于,第一處理單元根據(jù)下載數(shù)據(jù)量的位置信息獲取該動作單元的下載數(shù)據(jù)量,具體為基于下載的與上一個動作單元對應的數(shù)據(jù),確定所述下載數(shù)據(jù)量的位置信息對應的數(shù)據(jù),獲取該數(shù)據(jù)并作為當前處理的動作單元的下載數(shù)據(jù)量。
12.如權利要求8-11任一項所述的裝置,其特征在于,第二處理單元按照所述下載數(shù)據(jù)量從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù),并存儲至Java智能卡中,具體為在確定動作單元對應的下載數(shù)據(jù)量大于APDU緩存中包含的數(shù)據(jù)量時,將APDU緩存中的數(shù)據(jù)下載至緩沖區(qū)中,并從下一條APDU緩存中下載所述動作單元對應的其余數(shù)據(jù)至緩沖區(qū),并將緩沖區(qū)中的數(shù)據(jù)存儲至Java智能卡中。
13.如權利要求12所述的裝置,其特征在于,若動作單元類型為循環(huán)動作單元,在第二處理單元按照所述下載數(shù)據(jù)量從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù)之前,獲取存儲的該動作單元的計數(shù)器數(shù)據(jù)位置信息,基于下載的與上一個動作單元對應的數(shù)據(jù),確定所述計數(shù)器數(shù)據(jù)位置信息對應的數(shù)據(jù),獲取該數(shù)據(jù)并作為計數(shù)器的值。
14.如權利要求13所述的裝置,其特征在于,若動作單元為循環(huán)動作單元,第一處理單元判斷循環(huán)動作單元的計數(shù)器是否為零值,若確定為非零值時,第二處理單元根據(jù)該動作單元對應的下載數(shù)據(jù)量,從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù),并存儲至Java智能卡中,將所述計數(shù)器的值減1, 保持動作單元的標識和下載數(shù)據(jù)量不變;若確定為零值時,按照存儲的動作單元標識順序,獲取下一個動作單元的標識及類型。
全文摘要
本發(fā)明公開了一種基于Java智能卡下載文件的方法及裝置,以提高下載CAP文件的效率。該方法為根據(jù)存儲的按照轉(zhuǎn)化小應用程序CAP文件結構設定的動作單元類型及順序,獲取存儲的該動作單元對應的下載數(shù)據(jù)量相關信息,確定相應的下載數(shù)據(jù)量,按照所述下載數(shù)據(jù)量從應用程序協(xié)議數(shù)據(jù)單元APDU緩存中下載相應的數(shù)據(jù),并存儲至Java智能卡中。本發(fā)明同時公開了一種基于Java智能卡下載文件的裝置。
文檔編號G06F9/445GK102184374SQ20111007261
公開日2011年9月14日 申請日期2011年3月24日 優(yōu)先權日2011年3月24日
發(fā)明者成秋良 申請人:北京握奇數(shù)據(jù)系統(tǒng)有限公司