專利名稱:數(shù)據(jù)通信的移動設(shè)置的制作方法
相關(guān)申請的相互引用本申請與下列申請有關(guān)Susser和Schwabe于1999年2月2日提出的美國專利申請,標題為“Object-Oriented Instruction Set for Resource-Constrained Devices”。
Levy和Schwabe于1997年4月15日提出的美國專利申請,標題為“Virtual Machine with Securely Distributed Bytecode Verification”。
1.發(fā)明領(lǐng)域本發(fā)明涉及計算機系統(tǒng)。尤其是,本發(fā)明涉及數(shù)據(jù)通信的移動設(shè)置(moving set)。
2.發(fā)明背景虛擬機是一個由軟件應(yīng)用或者由處理器執(zhí)行的指令序列產(chǎn)生的抽象的計算裝置。術(shù)語“體系結(jié)構(gòu)中性(architecture-neutral)”指的是程序,諸如那些以JavaTM程序設(shè)計語言編寫的程序,可以由虛擬機在各種各樣的具有多種不同的計算機體系結(jié)構(gòu)的計算機平臺上執(zhí)行。因此,例如在基于windowsTM的個人計算機系統(tǒng)上執(zhí)行的虛擬機將使用相同指令組作為在基于UNIXTM的計算機系統(tǒng)上執(zhí)行的虛擬機。虛擬機的指令序列的獨立的平臺編碼的結(jié)果是一串一個或多個字節(jié)碼,每個字節(jié)碼例如是一個字節(jié)長的數(shù)字代碼。
JavaTM虛擬機是虛擬機的一個例子。由JavaTM虛擬機執(zhí)行的編譯程序代碼以獨立于硬設(shè)備和操作系統(tǒng)的二進制格式表示,其通常存儲在稱為類文件格式的文件中。類文件被設(shè)計成處理面向目標的結(jié)構(gòu),其可以代表以JavaTM程序設(shè)計語言編寫的程序,但也可支持若干其它程序設(shè)計語言。類文件格式明確地規(guī)定類或者接口的表達式,包括細節(jié),諸如可以在一個目標文件格式的特定平臺中必然的字節(jié)排序。為了安全起見,JavaTM虛擬機在類文件中對于該指令施加了強的格式及結(jié)構(gòu)約束。帶有可用有效類文件術(shù)語表示的功能性的任何語言都能夠以JavaTM虛擬機作為宿主機。類文件設(shè)計成能處理面向目標的結(jié)構(gòu),其可代表以JavaTM程序設(shè)計語言編寫的程序,但也可支持若干其它程序設(shè)計語言。對JavaTM虛擬機的詳細描述見于Lindholm等人所著″JavaTM虛擬機技術(shù)要求(The JavaTMVirtual machine Specification)″,Addison-Wesley Longman公司在1999年4月所出版的第二版。
與標準的臺式計算機等等相比較資源受限設(shè)備通常認為是在存儲器和/或計算能力或者速度方面相對受限的設(shè)備。舉例來說,其它的資源受限設(shè)備包括蜂窩電話、邊界掃描設(shè)備(boundary scan device)、字段可編程設(shè)備(field programmable device)、個人數(shù)字助理(PDA)以及傳呼機及其它微型或者小體積裝置(small footprint device)。
亦稱為智能便攜式數(shù)據(jù)攜帶卡的智能卡是一種資源受限設(shè)備。智能卡由塑料或者金屬制成,并且具有一個電子芯片,該電子芯片包括一個執(zhí)行程序的嵌入式微處理器或者微型控制器和儲存程序和數(shù)據(jù)的存儲器。上述裝置可以約為信用卡大小,具有為8位或者16位體系結(jié)構(gòu)的計算機芯片。另外,這些設(shè)備通常具有有限的存儲容量。例如,某些智能卡具有小于一千字節(jié)(1K)的隨機存取存儲器(RAM)和有限的只讀存儲器(ROM),和/或諸如電可擦可編程只讀存儲器(EEPROM)的非易失性存儲器。
JavaTM虛擬機執(zhí)行以JavaTM程序設(shè)計語言編寫的虛擬機程序代碼,并且設(shè)計成使用32位體系結(jié)構(gòu)。如能編寫程序,使JavaTM虛擬機得以完全實施,用于在諸如智能卡的資源受限設(shè)備上執(zhí)行,將是合乎希望的。但是,由于諸如智能卡的資源受限設(shè)備的受限的體系結(jié)構(gòu)和存儲器,完全的JavaTM虛擬機平臺不能在這種設(shè)備上實施。因此,一種單獨的Java CardTM(支持JavaTM程序設(shè)計語言的智能卡)技術(shù)支持用于資源受限設(shè)備的JavaTM程序設(shè)計語言的子集。
現(xiàn)在轉(zhuǎn)向
圖1,介紹一個典型的用于在Java CardTM技術(shù)啟動設(shè)備(Java CardTMtechnology enabled device)120上安裝應(yīng)用程序的裝置。在Java CardTM技術(shù)中,Java CardTM轉(zhuǎn)換器100以常規(guī)的類文件105作為輸入,并將其轉(zhuǎn)換為CAP(轉(zhuǎn)換的小應(yīng)用程序)文件110。該CAP格式支持類文件信息的子集。每個CAP文件110包括在一個JavaTM包中限定的所有的類和接口。在轉(zhuǎn)換之后,該CAP文件110被復(fù)制到智能卡終端,諸如一個具有讀卡機外部設(shè)備的臺式計算機。然后,在該終端上的一個安裝工具115加載CAP文件110,并將其發(fā)送給Java CardTM技術(shù)啟動設(shè)備120。在該Java CardTM技術(shù)啟動設(shè)備120上的一個安裝應(yīng)用程序125接收和處理來自終端的數(shù)據(jù),從而在該Java CardTM技術(shù)啟動設(shè)備120上安裝應(yīng)用程序。
由于典型Java CardTM技術(shù)啟動設(shè)備120的資源約束特性,只有相對少量的存儲器可用于數(shù)據(jù)通信。因此,在終端和Java CardTM技術(shù)啟動設(shè)備120之間的通信,通常由多個從終端發(fā)送給Java CardTM技術(shù)啟動設(shè)備120的應(yīng)用數(shù)據(jù)單元(APDU)135組成。APDU 135是數(shù)據(jù)包,具有長度處于32字節(jié)到256字節(jié)范圍的數(shù)據(jù)部分。從終端發(fā)送的數(shù)據(jù)在被發(fā)送給Java CardTM技術(shù)啟動設(shè)備120之前被封裝在一個或多個APDU 135中。
由于所封裝的多個數(shù)據(jù)值的長度是變化的,該數(shù)據(jù)值經(jīng)常在多個APDU 135之間被分離(split)。表1舉例說明一個APDU 135的數(shù)據(jù)部分。表2示出在一個APDU 135中封裝的數(shù)據(jù)。
表1
表2
如果在表2中所示數(shù)據(jù)封裝在表1所示的APDU 135中,同時保留該數(shù)據(jù)的相應(yīng)排序,將沒有足夠的余地用于第二個十六位整數(shù),導(dǎo)致“數(shù)據(jù)分離(data split)”問題。這一數(shù)據(jù)分離問題一般通過在終端側(cè)對數(shù)據(jù)進行處理來解決,以保證該數(shù)據(jù)不會被分離。舉例來說,這種在該終端側(cè)所進行的處理可以包括改變APDU 135的尺寸以預(yù)防數(shù)據(jù)分離,或者在將其發(fā)送給Java CardTM技術(shù)啟動設(shè)備120之前重新在APDU內(nèi)使數(shù)據(jù)排序。上述解決方案中,每種都有缺點。
改變APDU 135尺寸和在APDU 135內(nèi)重新使數(shù)據(jù)排序需要在該終端和該卡之間的復(fù)雜協(xié)商(negotiation)。終端必須轉(zhuǎn)換數(shù)據(jù),并給智能卡提供足夠信息去重建該數(shù)據(jù)。該卡必須從終端接收信息,重建該數(shù)據(jù),并且對終端提供響應(yīng)。如上所述地使終端和卡的數(shù)據(jù)相關(guān),增加了處理開銷(overhead)。對于程序大小和為儲存緩沖數(shù)據(jù)所需的RAM的數(shù)量二者而言,這種數(shù)據(jù)相關(guān)性還增加了存儲開銷。
在終端側(cè)放置智能(intelligence)還增加了安全方面的擔心。分辨是否存在數(shù)據(jù)分離問題即要求終端知道每個所發(fā)送的數(shù)據(jù)項的大小。這個長度信息與數(shù)據(jù)類型有關(guān)。如果數(shù)據(jù)被加密則該信息是不可用的。因此,終端必須在其解釋數(shù)據(jù)以確定每個數(shù)據(jù)單元的大小之前,對加密數(shù)據(jù)予以解密。一旦數(shù)據(jù)被解密,終端即可使用保密信息。在某些應(yīng)用中,只有智能卡預(yù)定去解釋數(shù)據(jù),而不是終端。
因此,在現(xiàn)有技術(shù)中,需要一種用于在終端設(shè)備和智能卡之間進行數(shù)據(jù)通信的方法和裝置,其對于終端和智能卡的應(yīng)用而言,需要相對小的處理和存儲開銷。對這樣的方法和裝置的另一個要求是其相對安全。
圖2是一個流程圖,舉例說明一種按照本發(fā)明的一個實施例而用于數(shù)據(jù)通信的方法。
圖3是一個流程圖,舉例說明一種按照本發(fā)明的一個實施例而用于附加分離數(shù)據(jù)值的方法。
圖4是一個流程圖,舉例說明一種按照本發(fā)明的一個實施例而用于移動窗口的方法。
圖5是一個方框圖,舉例說明將本發(fā)明用于32字節(jié)數(shù)據(jù)包和4字節(jié)窗口。
具體實施方案詳述本領(lǐng)域普通技術(shù)人員會了解下面的本發(fā)明描述僅僅是說明性的。本發(fā)明的其它實施例自身易于啟發(fā)受益于本說明的這些技術(shù)人員。
本發(fā)明涉及計算機系統(tǒng)。尤其是,本發(fā)明涉及移動設(shè)置(moving set)數(shù)據(jù)通信。本發(fā)明進一步涉及機器可讀的媒體,在其上存儲(1)本發(fā)明的布設(shè)參數(shù);和/或(2)應(yīng)用本發(fā)明而在計算機上完成操作的程序指令。上述的媒體舉例來說包括磁帶、磁盤、諸如CD ROM的光學(xué)可讀媒體以及諸如PCMCIA卡的半導(dǎo)體存儲器。媒體也可以采取便攜式器件的形式,諸如小磁盤、軟盤或者盒式磁帶。媒體也可以為較大或者固定器件的形式,諸如硬盤驅(qū)動器或者計算機RAM。
與標準的臺式計算機等等相比,資源受限設(shè)備通常認為是在存儲和/或計算能力或者速度方面相對受限的設(shè)備。雖然下面論述的特定的實施方案是就智能卡來描述的,本發(fā)明可以使用其它的資源受限設(shè)備,包括——但不限于——蜂窩電話、邊界掃描設(shè)備、字段可編程設(shè)備、個人數(shù)字助理(PDA)以及傳呼機和其它的微型或者小體積裝置。本發(fā)明也可以在非資源受限設(shè)備上使用。
為本公開起見,術(shù)語“處理器”可用于指實體的計算機或者虛擬機。同樣,數(shù)據(jù)處理指的是為在資源受限設(shè)備上安裝應(yīng)用程序所需進行的處理,該資源受限設(shè)備例如為一個Java CardTM技術(shù)啟動設(shè)備120。
根據(jù)本發(fā)明,在概念上將實際上分段的數(shù)據(jù)作為連續(xù)的數(shù)據(jù)流來對待。數(shù)據(jù)在一個概念上的滑動開閉窗內(nèi)得到處理,也稱作移動設(shè)置。如果不存在數(shù)據(jù)分離,數(shù)據(jù)處理照常進行。如果檢測到數(shù)據(jù)分離,窗口移向概念數(shù)據(jù)流的信源以查看其余數(shù)據(jù),包括該分離數(shù)據(jù)的另一部分。這一處理持續(xù)進行,直到所有的數(shù)據(jù)耗盡。
現(xiàn)在轉(zhuǎn)向圖2,介紹根據(jù)本發(fā)明的一個實施例的移動數(shù)據(jù)設(shè)置流程圖。在附圖標記150,接收數(shù)據(jù)包。在附圖標記155,將窗口的開始設(shè)置到數(shù)據(jù)包的開始。在附圖標記160,確定數(shù)據(jù)值是否是分離的。如果數(shù)據(jù)值未曾分離,則在附圖標記165照常處理該數(shù)據(jù)。在附圖標記170,使窗口移動相當于該窗口尺寸的若干字節(jié)。
如果一個數(shù)據(jù)值已經(jīng)分離,在附圖標記165照常處理直到分離數(shù)據(jù)值的這部分數(shù)據(jù)。在附圖標記170,儲存出現(xiàn)的這部分分離數(shù)據(jù)值。在附圖標記175,將窗口移動以包括余下的分離數(shù)據(jù)。在附圖標記180,將分離數(shù)據(jù)的儲存部分從新定位的窗口附加到該余下的分離數(shù)據(jù)上。在附圖標記165,照常處理附加后的數(shù)據(jù)。
現(xiàn)在轉(zhuǎn)向圖3,介紹根據(jù)本發(fā)明的一個實施例的附加數(shù)據(jù)的流程圖。在附圖標記200,檢索存儲的數(shù)據(jù)。在附圖標記205,當在圖2的附圖標記175窗口被移動到包括余下的分離數(shù)據(jù)的時候,存儲的數(shù)據(jù)被與新獲得的數(shù)據(jù)結(jié)合(concatenated)。在附圖標記210,處理該結(jié)合的數(shù)據(jù)。在附圖標記215,窗口移動通過該結(jié)合的數(shù)據(jù)。
現(xiàn)在轉(zhuǎn)向圖4,介紹根據(jù)本發(fā)明的一個實施例的移動窗口的流程圖。在附圖標記230,確定窗口是否大得足以適應(yīng)移動而無需丟棄未處理的數(shù)據(jù)。如果窗口不夠大,在附圖標記235增加窗口尺寸。如果窗口夠大,在附圖標記240確定是否已到達輸入數(shù)據(jù)流的結(jié)尾。如果已到達輸入數(shù)據(jù)流結(jié)尾,在附圖標記245讀取至少一個數(shù)據(jù)包。如果尚未到達輸入數(shù)據(jù)流的結(jié)尾,在附圖標記250使窗口定位。
為有助于理解本發(fā)明,將本發(fā)明施加于圖5所示的一個特定例子中。圖5說明本發(fā)明使用一個32字節(jié)數(shù)據(jù)包緩沖器270和一個4字節(jié)窗口275。在數(shù)據(jù)包中除二個數(shù)據(jù)項之外,所有的都是2字節(jié)整數(shù)。以附圖標記280表示一個字節(jié),以附圖標記285表示4字節(jié)整數(shù)的頭兩個字節(jié)。在圖2中附圖標記150接收第一個數(shù)據(jù)包。在附圖標記155,將窗口275設(shè)置到數(shù)據(jù)包270的開始。在附圖標記160,確定窗口275中的數(shù)據(jù)值是否分離。由于結(jié)果是窗口275的結(jié)尾與2字節(jié)整數(shù)290的結(jié)尾重合,沒有數(shù)據(jù)分離。在附圖標記165,照常處理數(shù)據(jù)值290和295。
在附圖標記170,移動窗口275。在圖4的附圖標記230,確定窗口要大得足以移動4個字節(jié),因為該窗口可容納那么多字節(jié)。在附圖標記240,進行檢查以確定是否已到達輸入數(shù)據(jù)流的結(jié)尾。由于迄今僅處理了32字節(jié)數(shù)據(jù)包的4個字節(jié),該數(shù)據(jù)流的結(jié)尾尚未到達。在附圖標記250,窗口朝向輸入數(shù)據(jù)流的信源移動4個字節(jié)。重新定位的窗口由附圖標記300表示。窗口300包括一個字節(jié)305、一個2字節(jié)整數(shù)310和另一個2字節(jié)整數(shù)315的一個字節(jié)。
在圖2的附圖標記160,確定數(shù)據(jù)值是否已經(jīng)分離。由于窗口僅包括2字節(jié)整數(shù)315的一個字節(jié),數(shù)據(jù)值已經(jīng)分離。在附圖標記165,處理分離之前存在的數(shù)據(jù)值。因此,字節(jié)305和2字節(jié)整數(shù)310得到處理。在附圖標記170,儲存2字節(jié)整數(shù)315的一個字節(jié)。在附圖標記175,移動窗口以包括余下的分離數(shù)據(jù)。重新定位的窗口以附圖標記330表示。窗口330包含分離的2字節(jié)整數(shù)315的兩個字節(jié)。
窗口335至355中,每個都包含二個2字節(jié)整數(shù),并且通過與窗口275一樣的方法進行處理。窗口360只包括4字節(jié)整數(shù)365的一半。在圖2的附圖標記170,存儲這二個字節(jié)365。在附圖標記175,移動窗口以包括余下的分離數(shù)據(jù)。由于輸入數(shù)據(jù)流的結(jié)尾已經(jīng)到達,在圖4的附圖標記245讀取另一個數(shù)據(jù)包。由于在這個例子中窗口尺寸小于32字節(jié)數(shù)據(jù)包數(shù)據(jù)的尺寸,只有一個數(shù)據(jù)包被讀取。在圖3的附圖標記200,檢索存儲的數(shù)據(jù)。在附圖標記205,存儲數(shù)據(jù)與窗口360中正從新數(shù)據(jù)包讀取的另一個數(shù)據(jù)結(jié)合。在附圖標記210,處理該結(jié)合的數(shù)據(jù)。在附圖標記215,窗口被移動通過該結(jié)合的數(shù)據(jù)。
本領(lǐng)域普通技術(shù)人員還會認識到,利用本發(fā)明所遇到的分離數(shù)據(jù)的數(shù)量和窗口尺寸成反比。通過增加窗口尺寸而減少分離數(shù)據(jù)的效果必須與較大窗口所增加的內(nèi)存需求對照權(quán)衡。
按照本發(fā)明的一個實施例,分配用于存儲分離數(shù)據(jù)值的字節(jié)數(shù)目是基于卡設(shè)備的計算機體系結(jié)構(gòu)而選擇的。一個標準的十六位處理器具有二個字節(jié)整數(shù)基底型。大多數(shù)十六位處理器指令預(yù)期有16位操作數(shù)。因此,在數(shù)據(jù)包中所遇到的大多數(shù)數(shù)據(jù)值將是二個字節(jié)或者更少。如果二字節(jié)數(shù)據(jù)值是分離的,一個字節(jié)將在窗口內(nèi),而另一字節(jié)在窗口外。因此,對于大多數(shù)情形來說,一字節(jié)緩沖器即足夠了。
同樣,一個標準的32位處理器具有4字節(jié)的整數(shù)基數(shù)類型。如果一個4字節(jié)整數(shù)是分離的,在窗口中的數(shù)據(jù)數(shù)量可以是該4字節(jié)中的一個字節(jié)到三個字節(jié)。因此,對于大多數(shù)情形來說,三字節(jié)緩沖器將是足夠的。因而一般地說,對于一個n基數(shù)處理器——其中n是位的數(shù)目,分配給存儲器緩沖器的字節(jié)的數(shù)目是(n/8)-1。
根據(jù)本發(fā)明另一實施例,數(shù)據(jù)包的標題(header)部分用于存儲分離數(shù)據(jù)值。例如,一個APDU包括一個5字節(jié)的標題。一個APDU包括一個命令或者一個響應(yīng)。標準的命令A(yù)PDU的格式示于表3。
表3
在表3中,CLA是指令類別,INS是指令,P1和P2是指令參數(shù),Lc是指令的數(shù)據(jù)字段的字節(jié)長度,Data是該指令的數(shù)據(jù)字段,而Le是在響應(yīng)的數(shù)據(jù)字段中所預(yù)期的字節(jié)最大數(shù)值。在標題中的每個項目是一個字節(jié)大小。因此,最大的數(shù)據(jù)字段長度是256字節(jié)。在ISO標準7816-41995第5.3節(jié)中詳細描述了APDU。
通常一旦收到APDU,即檢查五個APUU標題字節(jié)CLA、INS、P1、P2以及Lc,從而確定如何解釋APDU的數(shù)據(jù)部分。一旦從標題字節(jié)提取了信息,在APDU數(shù)據(jù)部分的后續(xù)處理期間,即不會使用標題字節(jié)的存儲位置。按照本發(fā)明的這個實施例,APDU標題字節(jié)作為用于分離數(shù)據(jù)值的存儲單元而重復(fù)使用,因此避免了附加存儲器的配置。
本發(fā)明以特定的窗口尺寸和特定的數(shù)據(jù)包尺寸加以說明,其意絕非作出限定。本領(lǐng)域普通技術(shù)人員會認識到本發(fā)明可適用于各種各樣的數(shù)據(jù)包格式和窗口尺寸。同樣,雖然根據(jù)Java CardTM技術(shù)而舉例了說明本發(fā)明,本領(lǐng)域普通技術(shù)人員會認識到本發(fā)明還可適用于許多其它平臺。舉例來說,這些平臺包括K虛擬機(KVM)技術(shù)。在Sun微型系統(tǒng)公司1999年6月8日出版的“K虛擬機(KVM)-白皮書(The KVirtual Machine(KVM)-A White Paper)”中,對KVM技術(shù)進行了說明。
本發(fā)明可以通過軟件或固件以及可編程門陣列設(shè)備、專用集成電路(ASIC)及其它硬件來實施。
在此描述了一種用于移動設(shè)置數(shù)據(jù)通信的新方法。雖然顯示和描述了本發(fā)明的實施例及其應(yīng)用,對受益于本說明的本領(lǐng)域技術(shù)人員來說顯而易見的是,無需脫離在此所述的本發(fā)明概念即可能會有許多有別于上述內(nèi)容的修改。因此,本發(fā)明僅受限于所附權(quán)利要求書的精神。
權(quán)利要求
1.一種用于數(shù)據(jù)通信的方法,包括接收一個數(shù)據(jù)包,所述數(shù)據(jù)包包括至少一個連續(xù)數(shù)據(jù)項;規(guī)定一個窗口,其初始即包括所述至少一個連續(xù)數(shù)據(jù)項的開始;確定是否所述窗口包括分離數(shù)據(jù)項的一部分,所述分離數(shù)據(jù)項包括在所述窗口內(nèi)的第一部分,以及未在所述窗口內(nèi)的第二部分;當不存在所述分離數(shù)據(jù)項的時候,處理所述至少一個連續(xù)數(shù)據(jù)項;處理所有的在所述第一部分之前出現(xiàn)的所述至少一個連續(xù)數(shù)據(jù)項;存儲所述第一部分;移動所述窗口以便包括所述第一部分和所述第二部分;將所述存儲的第一部分附加到所述第二部分,從而生成一個附加的數(shù)據(jù)包;和處理所述附加的數(shù)據(jù)包。
2.根據(jù)權(quán)利要求1所述的方法,其中所述移動所述窗口的步驟進一步包括當所述窗口小于所述第一部分和所述第二部分相結(jié)合的尺寸時,增加所述窗口的尺寸;當?shù)竭_一個輸入數(shù)據(jù)流的結(jié)尾時,接收另一個數(shù)據(jù)包;以及移動所述窗口以便包括所述第一部分和所述第二部分。
3.根據(jù)權(quán)利要求1所述的方法,其中所述附加步驟進一步包括檢索所述存儲的第一部分;結(jié)合(concatenating)所述存儲的第一部分和所述第二部分,從而生成結(jié)合的數(shù)據(jù);處理所述結(jié)合的數(shù)據(jù);以及將所述窗口的所述開始移動到所述第二部分之后的第一字節(jié)。
4.根據(jù)權(quán)利要求1所述的方法,其中所述數(shù)據(jù)包包括一個APDU,所述APDU包括一個標題(header);且所述存儲的第一部分存儲在所述標題中。
5.一種機器可讀的程序存儲設(shè)備,其具體實施為該機器可執(zhí)行來完成數(shù)據(jù)通信的程序指令,包括接收一個數(shù)據(jù)包,所述數(shù)據(jù)包包括至少一個連續(xù)數(shù)據(jù)項;規(guī)定一個窗口,其初始即包括所述至少一個連續(xù)數(shù)據(jù)項的開始;確定是否所述窗口包括分離數(shù)據(jù)項的一部分,所述分離數(shù)據(jù)項包括在所述窗口內(nèi)的第一部分,以及未在所述窗口內(nèi)的第二部分;當不存在所述分離數(shù)據(jù)項的時候,處理所述至少一個連續(xù)數(shù)據(jù)項;處理所有的在所述第一部分之前出現(xiàn)的所述至少一個連續(xù)數(shù)據(jù)項;存儲所述第一部分;移動所述窗口以便包括所述第一部分和所述第二部分;將所述存儲的第一部分附加到所述第二部分,從而生成一個附加的數(shù)據(jù)包;和處理所述附加的數(shù)據(jù)包。
6.根據(jù)權(quán)利要求5所述的程序存儲設(shè)備,其中所述移動所述窗口的步驟進一步包括當所述窗口小于所述第一部分和所述第二部分相結(jié)合的尺寸時,增加所述窗口的尺寸;當?shù)竭_一個輸入數(shù)據(jù)流的結(jié)尾時,接收另一個數(shù)據(jù)包;以及移動所述窗口以便包括所述第一部分和所述第二部分。
7.根據(jù)權(quán)利要求5所述的程序存儲設(shè)備,其中所述附加步驟進一步包括檢索所述存儲的第一部分;結(jié)合所述存儲的第一部分和所述第二部分,從而生成結(jié)合的數(shù)據(jù);處理所述結(jié)合的數(shù)據(jù);以及將所述窗口的所述開始移動到所述第二部分之后的第一字節(jié)。
8.根據(jù)權(quán)利要求5所述的程序存儲設(shè)備,其中所述數(shù)據(jù)包包括一個APDU,所述APDU包括一個標題;且所述存儲的第一部分存儲在所述標題中。
9.一種用于數(shù)據(jù)通信的裝置,包括至少一個具有程序指令的存儲器;和至少一個配置為使用該程序指令的處理器接收一個數(shù)據(jù)包,所述數(shù)據(jù)包包括至少一個連續(xù)數(shù)據(jù)項;規(guī)定一個窗口,其初始即包括所述至少一個連續(xù)數(shù)據(jù)項的開始;確定是否所述窗口包括分離數(shù)據(jù)項的一部分,所述分離數(shù)據(jù)項包括在所述窗口內(nèi)的第一部分,以及未在所述窗口內(nèi)的第二部分;當不存在所述分離數(shù)據(jù)項的時候,處理所述至少一個連續(xù)數(shù)據(jù)項;處理所有的在所述第一部分之前出現(xiàn)的所述至少一個連續(xù)數(shù)據(jù)項;存儲所述第一部分;移動所述窗口以便包括所述第一部分和所述第二部分;將所述存儲的第一部分附加到所述第二部分,從而生成一個附加的數(shù)據(jù)包;和處理所述附加的數(shù)據(jù)包。
10.根據(jù)權(quán)利要求9所述的裝置,其中對于所述存儲的第一部分的存儲器分配是基于所述至少一個處理器的計算機體系結(jié)構(gòu)(architecture)而進行。
11.根據(jù)權(quán)利要求9所述的裝置,其中所述至少一個處理器由n位處理器構(gòu)成;并且為所述存儲的第一部分而分配的8位字節(jié)的數(shù)目是(n/8)-1。
12.根據(jù)權(quán)利要求9所述的裝置,其中所述至少一個處理器由32位處理器構(gòu)成;并且三個8位字節(jié)被配給所述存儲的第一部分。
13.根據(jù)權(quán)利要求9所述的裝置,其中所述至少一個處理器由16位處理器構(gòu)成;并且一個8位字節(jié)被配給所述存儲的第一部分。
14.根據(jù)權(quán)利要求9所述的裝置,其中所述數(shù)據(jù)包包括一個APDU,所述APDU包括一個標題;且所述存儲的第一部分存儲在所述標題中。
15.一種用于數(shù)據(jù)通信的裝置,包括用于接收一個數(shù)據(jù)包的裝置,所述數(shù)據(jù)包包括至少一個連續(xù)數(shù)據(jù)項;用于規(guī)定一個初始即包括所述至少一個連續(xù)數(shù)據(jù)項的開始的窗口的裝置;用于確定是否所述窗口包括分離數(shù)據(jù)項的一部分的裝置,所述分離數(shù)據(jù)項包括在所述窗口內(nèi)的第一部分,以及未在所述窗口內(nèi)的第二部分;當不存在所述分離數(shù)據(jù)項時,用于處理所述至少一個連續(xù)數(shù)據(jù)項的裝置;用于處理所有的在所述第一部分之前出現(xiàn)的所述至少一個連續(xù)數(shù)據(jù)項的裝置;用于存儲所述第一部分的裝置;用于移動所述窗口以便包括所述第一部分和所述第二部分的裝置;用于將所述存儲的第一部分附加到所述第二部分,從而生成一個附加的數(shù)據(jù)包的裝置;和用于處理所述附加的數(shù)據(jù)包的裝置。
16.一種資源受限設(shè)備,包括存儲器,用于存儲包括指令序列的應(yīng)用軟件程序從而接收一個數(shù)據(jù)包,所述數(shù)據(jù)包包括至少一個連續(xù)數(shù)據(jù)項;規(guī)定一個窗口,其初始即包括所述至少一個連續(xù)數(shù)據(jù)項的開始;確定是否所述窗口包括分離數(shù)據(jù)項的一部分,所述分離數(shù)據(jù)項包括在所述窗口內(nèi)的第一部分,以及未在所述窗口內(nèi)的第二部分;當不存在所述分離數(shù)據(jù)項的時候,處理所述至少一個連續(xù)數(shù)據(jù)項;處理所有的在所述第一部分之前出現(xiàn)的所述至少一個連續(xù)數(shù)據(jù)項;存儲所述第一部分;移動所述窗口以便包括所述第一部分和所述第二部分;將所述存儲的第一部分附加到所述第二部分,從而生成一個附加的數(shù)據(jù)包;和處理所述附加的數(shù)據(jù)包;以及在基于小于32位體系結(jié)構(gòu)的微處理器上實施的虛擬機,其中該虛擬機能夠執(zhí)行包括在所述數(shù)據(jù)包內(nèi)的指令。
17.一種智能卡,包括存儲器,用于存儲包括指令序列的應(yīng)用軟件程序從而接收一個數(shù)據(jù)包,所述數(shù)據(jù)包包括至少一個連續(xù)數(shù)據(jù)項;規(guī)定一個窗口,其初始即包括所述至少一個連續(xù)數(shù)據(jù)項的開始;確定是否所述窗口包括分離數(shù)據(jù)項的一部分,所述分離數(shù)據(jù)項包括在所述窗口內(nèi)的第一部分,以及未在所述窗口內(nèi)的第二部分;當不存在所述分離數(shù)據(jù)項的時候,處理所述至少一個連續(xù)數(shù)據(jù)項;處理所有的在所述第一部分之前出現(xiàn)的所述至少一個連續(xù)數(shù)據(jù)項;存儲所述第一部分;移動所述窗口以便包括所述第一部分和所述第二部分;將所述存儲的第一部分附加到所述第二部分,從而生成一個附加的數(shù)據(jù)包;和處理所述附加的數(shù)據(jù)包;以及在基于小于32位體系結(jié)構(gòu)的微處理器上實施的虛擬機,其中該虛擬機能夠執(zhí)行包括在所述數(shù)據(jù)包內(nèi)的指令。
18.根據(jù)權(quán)利要求17所述的智能卡,其中所述虛擬機實質(zhì)上是一個Java CardTM虛擬機。
全文摘要
一種用于數(shù)據(jù)通信的方法,包括接收一個包含至少一個連續(xù)數(shù)據(jù)項的數(shù)據(jù)包,規(guī)定一個初始即包括數(shù)據(jù)項(150)的開始的窗口,確定是否該窗包括分離數(shù)據(jù)項(160)的一部分,并且當不存在分離數(shù)據(jù)項的時候處理連續(xù)數(shù)據(jù)項。該方法還包括當發(fā)現(xiàn)分離數(shù)據(jù)項的時候,處理所有在分離數(shù)據(jù)項之前出現(xiàn)的數(shù)據(jù)項,存儲分離數(shù)據(jù)項(170)的第一部分,移動該窗口以便包含該分離數(shù)據(jù)項(175)的兩個部分,附加該存儲的第一部分到第二部分,以便產(chǎn)生一個附加的數(shù)據(jù)包(180),并且處理該附加的數(shù)據(jù)包。
文檔編號H04J3/24GK1423867SQ00818344
公開日2003年6月11日 申請日期2000年11月10日 優(yōu)先權(quán)日1999年11月15日
發(fā)明者陳喬杰 申請人:太陽微系統(tǒng)公司