亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種收條驗證方法及系統(tǒng)的制作方法

文檔序號:6624546閱讀:179來源:國知局
一種收條驗證方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種收條驗證方法及系統(tǒng),屬于信息智能卡領(lǐng)域。上述系統(tǒng)包括卡片和上位機(jī),卡片具體包括:存儲模塊、接收模塊、解析模塊、第一獲取模塊、加載收條組織模塊、安裝收條組織模塊、刪除收條組織模塊、引渡收條組織模塊、發(fā)送模塊和更新模塊,上位機(jī)具體包括:通信模塊和驗證模塊。本發(fā)明的有益效果在于:通過本發(fā)明提供的方法,上位機(jī)能夠安全有效地獲知卡片內(nèi)容管理操作的執(zhí)行情況,確認(rèn)卡片的真實狀態(tài)。
【專利說明】一種收條驗證方法及系統(tǒng)

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及智能卡領(lǐng)域,尤其一種收條驗證方法及系統(tǒng)。

【背景技術(shù)】
[0002]智能卡,又稱智慧卡、聰明卡、集成電路卡及IC卡,是指粘貼或嵌有集成電路芯片的一種便攜式卡片。卡片包含了微處理器、I/o接口及存儲器,具有數(shù)據(jù)運算、訪問控制及存儲的功能。智能卡通過接收并執(zhí)行上位機(jī)發(fā)送的APDU數(shù)據(jù)來完成卡片內(nèi)容管理操作,所述卡片內(nèi)容管理操作包括加載操作、安裝操作、刪除操作和引渡操作。
[0003]發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn),現(xiàn)有技術(shù)至少存在以下缺陷:現(xiàn)有技術(shù)中,上位機(jī)無法獲知卡片內(nèi)容管理操作的完成情況,以致上位機(jī)不能確定卡片的真實狀態(tài)。


【發(fā)明內(nèi)容】

[0004]本發(fā)明的目的是為了克服現(xiàn)有技術(shù)的缺陷,提供一種收條驗證方法及系統(tǒng)。
[0005]本發(fā)明方法是通過下述技術(shù)方案實現(xiàn)的:
[0006]一方面,本發(fā)明提供一種收條驗證系統(tǒng),所述系統(tǒng)具體包括:
[0007]存儲模塊,用于存儲加載文件標(biāo)識、安全域標(biāo)識、安全域標(biāo)識的索引和用戶數(shù)據(jù);
[0008]接收模塊,用于接收上位機(jī)發(fā)送的APDU數(shù)據(jù);
[0009]解析模塊,用于對所述接收模塊接收到的APDU數(shù)據(jù)進(jìn)行解析,以及判斷所述APDU數(shù)據(jù)的類型;
[0010]第一獲取模塊,用于當(dāng)所述解析模塊判定所述APDU數(shù)據(jù)為預(yù)加載命令時,獲取所述預(yù)加載命令中的加載文件標(biāo)識和安全域標(biāo)識,將從所述預(yù)加載命令中獲取到的加載文件標(biāo)識存儲到所述存儲模塊中,確定從所述預(yù)加載命令中獲取的安全域標(biāo)識在卡內(nèi)的索引,以及將確定的安全域標(biāo)識的索引存儲到所述存儲模塊中;
[0011]加載收條組織模塊,用于當(dāng)所述解析模塊判定所述APDU數(shù)據(jù)為加載命令時組織加載收條;
[0012]安裝收條組織模塊,用于當(dāng)所述解析模塊判定所述APDU數(shù)據(jù)為安裝命令時組織安裝收條;
[0013]刪除收條組織模塊,用于當(dāng)所述解析模塊判定所述APDU數(shù)據(jù)為刪除命令時組織刪除收條;
[0014]引渡收條組織模塊,用于當(dāng)所述解析模塊判定所述APDU數(shù)據(jù)為引渡命令時組織引渡收條;
[0015]發(fā)送模塊,用于向所述上位機(jī)返回所述加載收條組織模塊組織得到的加載收條,向所述上位機(jī)返回所述安裝收條組織模塊組織得到的安裝收條,向所述上位機(jī)返回所述刪除收條組織模塊組織得到的刪除收條,向所述上位機(jī)返回所述引渡收條組織模塊組織得到的引渡收條,以及向所述上位機(jī)返回預(yù)設(shè)狀態(tài)碼和異常狀態(tài)碼;
[0016]更新模塊,用于更新所述卡片內(nèi)的確認(rèn)計數(shù)器的計數(shù)值;
[0017]其中,所述加載收條組織模塊具體包括:
[0018]第一獲取單元,用于獲取所述存儲模塊中存儲的加載文件標(biāo)識和安全域標(biāo)識的索弓I ;
[0019]第一查找單元,用于根據(jù)所述第一獲取單元獲取到的安全域標(biāo)識的索引在所述存儲模塊中查找相應(yīng)的安全域標(biāo)識;
[0020]第一數(shù)據(jù)組織單元,用于根據(jù)所述第一獲取單元獲取到的加載文件標(biāo)識和所述第一查找單元查找到的安全域標(biāo)識組織第一數(shù)據(jù);
[0021]第二獲取單元,用于獲取所述確認(rèn)計數(shù)器的計數(shù)值,以及獲取所述存儲模塊中存儲的用戶數(shù)據(jù);
[0022]加載收條數(shù)據(jù)組織單元,用于當(dāng)所述第二獲取單元獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且所述第二獲取單元獲取到的用戶數(shù)據(jù)不為空時,根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第一數(shù)據(jù)組織單元組織得到的第一數(shù)據(jù)組織加載收條數(shù)據(jù);
[0023]第一簽名單元,用于對所述加載收條數(shù)據(jù)組織單元組織得到的加載收條數(shù)據(jù)進(jìn)行簽名,得到第一簽名數(shù)據(jù);
[0024]加載收條組織單元,用于根據(jù)所述第一簽名單元得到的第一簽名數(shù)據(jù)和所述加載收條數(shù)據(jù)組織單元組織得到的加載收條數(shù)據(jù)組織加載收條;
[0025]所述安裝收條組織模塊具體包括:
[0026]第二數(shù)據(jù)組織單元,用于根據(jù)所述安裝命令中的可執(zhí)行加載文件標(biāo)識和應(yīng)用標(biāo)識組織第二數(shù)據(jù);
[0027]第三獲取單元,用于獲取所述確認(rèn)計數(shù)器的計數(shù)值,以及獲取所述存儲模塊中存儲的用戶數(shù)據(jù);
[0028]安裝收條數(shù)據(jù)組織單元,用于當(dāng)所述第三獲取單元獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且所述第三獲取單元獲取到的用戶數(shù)據(jù)不為空時,根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第二數(shù)據(jù)組織單元組織得到的第二數(shù)據(jù)組織安裝收條數(shù)據(jù);
[0029]第二簽名單元,用于對所述安裝收條數(shù)據(jù)組織單元組織得到的安裝收條數(shù)據(jù)進(jìn)行簽名,得到第二簽名數(shù)據(jù);
[0030]安裝收條組織單元,用于根據(jù)所述第二簽名單元得到的第二簽名數(shù)據(jù)和所述安裝收條數(shù)據(jù)組織單元組織得到的安裝收條數(shù)據(jù)組織安裝收條;
[0031 ] 所述刪除收條組織模塊具體包括:
[0032]第三數(shù)據(jù)組織單元,用于根據(jù)所述刪除命令中的應(yīng)用標(biāo)識組織第三數(shù)據(jù);
[0033]第四獲取單元,用于獲取所述確認(rèn)計數(shù)器的計數(shù)值,以及獲取所述存儲模塊中存儲的用戶數(shù)據(jù);
[0034]刪除收條數(shù)據(jù)組織單元,用于當(dāng)所述第四獲取單元獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且所述第四獲取單元獲取到的用戶數(shù)據(jù)不為空時,根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第三數(shù)據(jù)組織單元組織得到的第三數(shù)據(jù)組織刪除收條數(shù)據(jù);
[0035]第三簽名單元,用于對所述刪除收條數(shù)據(jù)組織單元組織得到的刪除收條數(shù)據(jù)進(jìn)行簽名,得到第三簽名數(shù)據(jù);
[0036]刪除收條組織單元,用于根據(jù)所述第三簽名單元得到的第三簽名數(shù)據(jù)和所述刪除收條數(shù)據(jù)組織單元組織得到的刪除收條數(shù)據(jù)組織刪除收條;
[0037]所述引渡收條組織模塊具體包括:
[0038]第二查找單元,用于在所述存儲模塊中查找與所述引渡命令中的應(yīng)用標(biāo)識相對應(yīng)的應(yīng)用的原安全域標(biāo)識;
[0039]第四數(shù)據(jù)組織單元,用于根據(jù)所述第二查找單元查找到的原安全域標(biāo)識,以及所述引渡命令中的應(yīng)用標(biāo)識和新安全域標(biāo)識,組織第四數(shù)據(jù);
[0040]第五獲取單元,用于獲取所述確認(rèn)計數(shù)器的計數(shù)值,以及獲取所述存儲模塊中存儲的用戶數(shù)據(jù);
[0041]引渡收條數(shù)據(jù)組織單元,用于當(dāng)所述第五獲取單元獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且所述第五獲取單元獲取到的用戶數(shù)據(jù)不為空時,根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第四數(shù)據(jù)組織單元組織得到的第四數(shù)據(jù)組織引渡收條數(shù)據(jù);
[0042]第四簽名單元,用于對所述引渡收條數(shù)據(jù)組織單元組織得到的引渡收條數(shù)據(jù)進(jìn)行簽名,得到第四簽名數(shù)據(jù);
[0043]引渡收條組織單元,用于根據(jù)所述第四簽名單元得到的第四簽名數(shù)據(jù)和所述引渡收條數(shù)據(jù)組織單元組織得到的引渡收條數(shù)據(jù)組織引渡收條;
[0044]所述上位機(jī)包括:
[0045]通信模塊,用于接收所述卡片返回的收條;
[0046]驗證模塊,用于對所述通信模塊接收到的收條進(jìn)行驗證。
[0047]另一方面,本發(fā)明提供一種收條驗證方法,所述方法具體包括:
[0048]步驟A:卡片接收上位機(jī)發(fā)送的APDU數(shù)據(jù),解析所述APDU數(shù)據(jù),判斷所述APDU數(shù)據(jù)的類型,若為預(yù)加載命令則執(zhí)行步驟B,若為加載命令則執(zhí)行步驟C,若為安裝命令則執(zhí)行步驟D,若為刪除命令則執(zhí)行步驟E,若為引渡命令則執(zhí)行步驟F ;
[0049]步驟B:獲取所述預(yù)加載命令中的加載文件標(biāo)識和安全域標(biāo)識,存儲獲取到的加載文件標(biāo)識,確定并記錄獲取到的安全域標(biāo)識在所述卡片內(nèi)的索引,向所述上位機(jī)返回預(yù)設(shè)狀態(tài)碼;
[0050]步驟C:所述卡片獲取所述卡片內(nèi)最近存儲的加載文件標(biāo)識和安全域標(biāo)識的索弓丨,根據(jù)所述安全域標(biāo)識的索引在所述卡片內(nèi)查找安全域標(biāo)識,根據(jù)獲取到的加載文件標(biāo)識和查找到的安全域標(biāo)識組織第一數(shù)據(jù),獲取所述卡片內(nèi)的確認(rèn)計數(shù)器的計數(shù)值和用戶數(shù)據(jù),若所述確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值且所述用戶數(shù)據(jù)不為空,則根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第一數(shù)據(jù)組織加載收條數(shù)據(jù),對所述加載收條數(shù)據(jù)進(jìn)行簽名運算得到第一簽名數(shù)據(jù),根據(jù)所述第一簽名數(shù)據(jù)和所述加載收條數(shù)據(jù)組織加載收條,向所述上位機(jī)返回所述加載收條,并更新所述確認(rèn)計數(shù)器的計數(shù)值,執(zhí)行步驟G,否則向所述上位機(jī)返回異常狀態(tài)碼;
[0051]步驟D:所述卡片根據(jù)所述安裝命令中的可執(zhí)行加載文件標(biāo)識和應(yīng)用標(biāo)識組織第二數(shù)據(jù),獲取所述卡片內(nèi)的確認(rèn)計數(shù)器的計數(shù)值和用戶數(shù)據(jù),若所述確認(rèn)計數(shù)器的計數(shù)值未達(dá)到所述閾值且所述用戶數(shù)據(jù)不為空,則根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第二數(shù)據(jù)組織安裝收條數(shù)據(jù),對所述安裝收條數(shù)據(jù)進(jìn)行簽名運算得到第二簽名數(shù)據(jù),根據(jù)所述第二簽名數(shù)據(jù)和所述安裝收條數(shù)據(jù)組織安裝收條,向所述上位機(jī)返回所述安裝收條,并更新所述確認(rèn)計數(shù)器的計數(shù)值,執(zhí)行步驟G,否則向所述上位機(jī)返回異常狀態(tài)碼;
[0052]步驟E:所述卡片根據(jù)所述刪除命令中的應(yīng)用標(biāo)識組織第三數(shù)據(jù),獲取所述卡片內(nèi)的確認(rèn)計數(shù)器的計數(shù)值和用戶數(shù)據(jù),若所述確認(rèn)計數(shù)器的計數(shù)值未達(dá)到所述閾值且所述用戶數(shù)據(jù)不為空,則根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第三數(shù)據(jù)組織刪除收條數(shù)據(jù),對所述刪除收條數(shù)據(jù)進(jìn)行簽名運算得到第三簽名數(shù)據(jù),根據(jù)所述第三簽名數(shù)據(jù)和所述刪除收條數(shù)據(jù)組織刪除收條,向所述上位機(jī)返回所述刪除收條,并更新所述確認(rèn)計數(shù)器的計數(shù)值,執(zhí)行步驟G,否則向所述上位機(jī)返回異常狀態(tài)碼;
[0053]步驟F:所述卡片根據(jù)所述引渡命令中的應(yīng)用標(biāo)識查找所述卡片內(nèi)與所述應(yīng)用標(biāo)識對應(yīng)的應(yīng)用的原安全域標(biāo)識,根據(jù)查找到的原安全域標(biāo)識以及所述引渡命令中的應(yīng)用標(biāo)識和新安全域標(biāo)識組織第四數(shù)據(jù),獲取所述卡片內(nèi)的確認(rèn)計數(shù)器的計數(shù)值和用戶數(shù)據(jù),若所述確認(rèn)計數(shù)器的計數(shù)值未達(dá)到所述閾值且所述用戶數(shù)據(jù)不為空,則根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第四數(shù)據(jù)組織引渡收條數(shù)據(jù),對所述引渡收條數(shù)據(jù)進(jìn)行簽名運算得到第四簽名數(shù)據(jù),根據(jù)所述第四簽名數(shù)據(jù)和所述引渡收條數(shù)據(jù)組織引渡收條,向所述上位機(jī)返回所述引渡收條,并更新所述確認(rèn)計數(shù)器的計數(shù)值,執(zhí)行步驟G,否則向所述上位機(jī)返回異常狀態(tài)碼;
[0054]步驟G:所述上位機(jī)接收所述卡片返回的收條,對接收到的收條進(jìn)行驗證,若驗證通過,則判定相應(yīng)地卡片內(nèi)容管理操作執(zhí)行成功,若驗證失敗,則判定相應(yīng)地卡片內(nèi)容管理操作執(zhí)行失敗。
[0055]本發(fā)明方法的有益效果在于:通過本發(fā)明提供的方法,上位機(jī)能夠安全有效地獲知卡片內(nèi)容管理操作的執(zhí)行情況,確認(rèn)卡片的真實狀態(tài)。

【專利附圖】

【附圖說明】
[0056]為了更清楚的說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0057]圖1和圖2為本發(fā)明實施例1中提供的一種收條驗證方法的流程圖;
[0058]圖3為本發(fā)明實施例2中提供的一種收條驗證系統(tǒng)的組成框圖;
[0059]圖4為圖3中加載收條組織模塊的具體組成框圖;
[0060]圖5為圖3中安裝收條組織模塊的具體組成框圖;
[0061]圖6為圖3中刪除收條組織模塊的具體組成框圖;
[0062]圖7為圖3中引渡收條組織模塊的具體組成框圖。

【具體實施方式】
[0063]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0064]本發(fā)明中的安全終端中設(shè)置有應(yīng)用處理器和安全處理器,且安全處理器不設(shè)置直接對外接口,實施例1提供的是本地更新方法,實施例2提供的是遠(yuǎn)程更新方法。
[0065]實施例1
[0066]本發(fā)明實施例1提供一種收條驗證方法,參見圖1和圖2,所述方法具體包括:
[0067]步驟101:卡片接收上位機(jī)發(fā)送的APDU數(shù)據(jù);
[0068]步驟102:卡片解析接收到的APDU數(shù)據(jù),判斷APDU數(shù)據(jù)的類型,若為用戶數(shù)據(jù)命令則執(zhí)行步驟103,若為預(yù)加載命令則執(zhí)行步驟104,若為加載命令則執(zhí)行步驟105,若為安裝命令則執(zhí)行步驟116,若為刪除命令則執(zhí)行步驟125,若為引渡命令則執(zhí)行步驟134 ;
[0069]本實施例中,卡片解析接收到的APDU數(shù)據(jù),檢查APDU數(shù)據(jù)的第二個字節(jié)和第三字節(jié),若為0xE280則APDU數(shù)據(jù)為用戶數(shù)據(jù)命令,若為0xE400則APDU數(shù)據(jù)為刪除命令,若為0xE602則APDU數(shù)據(jù)為預(yù)加載命令,若為0xE604則APDU數(shù)據(jù)為安裝命令,若為0xE610則APDU數(shù)據(jù)為引渡命令,若為0xE880則APDU數(shù)據(jù)為加載命令;
[0070]若卡片判定APDU數(shù)據(jù)為上述命令之外的數(shù)據(jù),則卡片根據(jù)接收到的APDU數(shù)據(jù)進(jìn)行相應(yīng)處理,此處不做限定。
[0071]步驟103:卡片獲取用戶數(shù)據(jù)命令中的用戶數(shù)據(jù)并存儲,向上位機(jī)返回預(yù)設(shè)狀態(tài)碼;
[0072]本實施例中,預(yù)設(shè)狀態(tài)碼為0x9000。
[0073]步驟104:卡片獲取預(yù)加載命令中的加載文件標(biāo)識和安全域標(biāo)識,存儲獲取到的加載文件標(biāo)識,確定并記錄獲取到的安全域標(biāo)識在卡內(nèi)的索引,向上位機(jī)返回預(yù)設(shè)狀態(tài)碼;
[0074]本實施例中,卡片獲取預(yù)加載命令中的第五個字節(jié)得到加載文件標(biāo)識的長度,獲取從第六個字節(jié)開始,長度等于加載文件標(biāo)識的長度的數(shù)據(jù)得到加載文件標(biāo)識,獲取預(yù)加載命令中加載文件標(biāo)識后面的一個字節(jié)得到安全域標(biāo)識的長度,獲取從安全域標(biāo)識的長度后面的一個字節(jié)開始,長度等于安全域標(biāo)識的長度的數(shù)據(jù)得到安全域標(biāo)識;
[0075]例如,卡片獲取預(yù)加載命令中的第五個字節(jié)得到加載文件標(biāo)識的長度為5個字節(jié),則獲取從第六個字節(jié)至第十個字節(jié)得到加載文件標(biāo)識,獲取第十一字節(jié)得到安全域標(biāo)識的長度為6個字節(jié),則獲取第十一字節(jié)至第十六字節(jié)得到安全域標(biāo)識。
[0076]步驟105:卡片獲取卡內(nèi)最近存儲的加載文件標(biāo)識,和安全域標(biāo)識在卡內(nèi)的索引;
[0077]步驟106:卡片根據(jù)獲取到的安全域標(biāo)識在卡內(nèi)的索引在卡內(nèi)查找安全域標(biāo)識;
[0078]步驟107:卡片根據(jù)獲取到的加載文件標(biāo)識和查找到的安全域標(biāo)識組織第一數(shù)據(jù);
[0079]本實施例中,步驟107具體包括:
[0080]步驟al:卡片初始化加載命令緩沖區(qū)的偏移為加載偏移;
[0081]本實施例中,卡片接收到加載命令時創(chuàng)建加載命令緩沖區(qū),將加載命令存儲到加載命令緩沖區(qū);
[0082]具體地,加載偏移的初始值為I ;
[0083]步驟a2:卡片更新加載偏移為加載命令緩沖區(qū)中的加載命令的數(shù)據(jù)域的起始位置的偏移,記錄當(dāng)前加載偏移為第一偏移;
[0084]具體地,加載命令的第一字節(jié)至第四字節(jié)為命令頭,從第五字節(jié)開始為數(shù)據(jù)域,SP本實施例中,更新加載偏移為5 ;
[0085]步驟a3:卡片根據(jù)加載偏移和獲取到的加載文件標(biāo)識的長度判斷加載命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟a4 ;
[0086]具體地,判斷加載偏移+加載文件標(biāo)識的長度+1的值是否大于239,是則加載命令緩沖區(qū)會越界,否則加載命令緩沖區(qū)不會越界;
[0087]步驟a4:卡片調(diào)用預(yù)設(shè)函數(shù)將獲取到的加載文件標(biāo)識寫到加載命令緩沖區(qū)中偏移等于加載偏移加I的位置;
[0088]本實施例中,預(yù)設(shè)函數(shù)為卡內(nèi)的arraycopy函數(shù);
[0089]例如,當(dāng)前加載偏移為5,則將加載文件標(biāo)識寫到加載命令緩沖區(qū)中偏移等于6的位置;
[0090]步驟a5:卡片將預(yù)設(shè)函數(shù)的返回值寫到加載命令緩沖區(qū)中偏移等于加載偏移的位置;
[0091]具體地,此時預(yù)設(shè)函數(shù)的返回值為加載文件標(biāo)識的長度;
[0092]例如,當(dāng)前加載偏移為5,則將預(yù)設(shè)函數(shù)返回值寫到加載命令緩沖區(qū)中偏移等于5的位置;
[0093]步驟a6:卡片根據(jù)加載文件標(biāo)識的長度更新加載偏移;
[0094]具體地,更新后的加載偏移=當(dāng)前加載偏移+加載文件標(biāo)識的長度+1 ;
[0095]例如,當(dāng)前加載偏移為5,加載文件標(biāo)識的長度為5,則更新加載偏移為11 ;
[0096]步驟a7:卡片根據(jù)加載偏移和查找到的安全域標(biāo)識的長度判斷加載命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟a8 ;
[0097]具體地,判斷加載偏移+安全域標(biāo)識的長度+1的值是否大于239,是則加載命令緩沖區(qū)會越界,否則加載命令緩沖區(qū)不會越界;
[0098]步驟a8:卡片調(diào)用預(yù)設(shè)函數(shù)將查找到的安全域標(biāo)識寫到加載命令緩沖區(qū)中偏移等于加載偏移加I的位置;
[0099]例如,當(dāng)前加載偏移為11,則將查找到的安全域標(biāo)識寫到加載命令緩沖區(qū)中偏移等于12的位置;
[0100]步驟a9:卡片將預(yù)設(shè)函數(shù)的返回值寫到加載命令緩沖區(qū)中偏移等于加載偏移的位置;
[0101]具體地,此時預(yù)設(shè)函數(shù)的返回值為安全域標(biāo)識的長度;
[0102]例如,當(dāng)前加載偏移為11,則將預(yù)設(shè)函數(shù)返回值寫到加載命令緩沖區(qū)中偏移等于11的位置;
[0103]步驟alO:卡片根據(jù)安全域標(biāo)識的長度更新加載偏移;
[0104]具體地,更新后的加載偏移=當(dāng)前加載偏移+安全域標(biāo)識的長度+1 ;
[0105]例如,當(dāng)前加載偏移為11,安全域標(biāo)識的長度為5,則更新加載偏移為17 ;
[0106]本實施例中,第一數(shù)據(jù)具體為加載命令緩沖區(qū)中,從偏移等于第一偏移開始至偏移等于當(dāng)前加載偏移之前的數(shù)據(jù),例如當(dāng)前加載偏移為17,則第一數(shù)據(jù)具體為加載命令緩沖區(qū)中的第五個字節(jié)至第十六個字節(jié)。
[0107]步驟108:卡片獲取卡內(nèi)確認(rèn)計數(shù)器的計數(shù)值;
[0108]本實施例中,確認(rèn)計數(shù)器的計數(shù)值的初始值為0x0000。
[0109]步驟109:卡片判斷確認(rèn)計數(shù)器的計數(shù)值是否達(dá)到閾值,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟110 ;
[0110]本實施例中,確認(rèn)計數(shù)器的計數(shù)值的閾值具體為0x7FFF。
[0111]步驟110:卡片獲取卡內(nèi)存儲的用戶數(shù)據(jù);
[0112]步驟111:卡片判斷用戶數(shù)據(jù)是否為空,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟112;
[0113]步驟112:卡片根據(jù)確認(rèn)計數(shù)器的計數(shù)值、用戶數(shù)據(jù)以及第一數(shù)據(jù)組織加載收條數(shù)據(jù);
[0114]本實施例中,步驟112具體包括:
[0115]步驟all:卡片記錄當(dāng)前加載偏移為第二偏移;
[0116]步驟al2:卡片根據(jù)加載偏移和確認(rèn)計數(shù)器的計數(shù)值的長度判斷加載命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟al3 ;
[0117]具體地,判斷加載偏移+確認(rèn)計數(shù)器的計數(shù)值的長度+1的值是否大于239,是則加載命令緩沖區(qū)會越界,否則加載命令緩沖區(qū)不會越界;
[0118]步驟al3:卡片將確認(rèn)計數(shù)器的計數(shù)值的長度寫到加載命令緩沖區(qū)中偏移等于加載偏移的位置,將確認(rèn)計數(shù)器的計數(shù)值寫到加載命令緩沖區(qū)中偏移等于加載偏移加I的位置;
[0119]例如,當(dāng)前加載偏移為17,則將確認(rèn)計數(shù)器的計數(shù)值的長度寫到加載命令緩沖區(qū)中偏移等于17的位置,將確認(rèn)計數(shù)器的計數(shù)值寫到加載命令緩沖區(qū)中偏移等于18的位置;
[0120]步驟al4:卡片根據(jù)確認(rèn)計數(shù)器的計數(shù)值的長度更新加載偏移;
[0121]具體地,更新后的加載偏移=當(dāng)前加載偏移+確認(rèn)計數(shù)器的計數(shù)值的長度+1 ;
[0122]例如,當(dāng)前加載偏移為17,確認(rèn)計數(shù)器的計數(shù)值的長度為2,則更新加載偏移為20 ;
[0123]步驟al5:卡片根據(jù)加載偏移和用戶數(shù)據(jù)的長度判斷加載命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟al7 ;
[0124]具體地,判斷加載偏移+用戶數(shù)據(jù)的長度+1的值是否大于239,是則加載命令緩沖區(qū)會越界,否則加載命令緩沖區(qū)不會越界;
[0125]步驟al6:卡片將用戶數(shù)據(jù)的長度寫到加載命令緩沖區(qū)中偏移等于加載偏移的位置,將用戶數(shù)據(jù)寫到加載命令緩沖區(qū)中偏移等于加載偏移加I的位置;
[0126]例如,當(dāng)前加載偏移為20,則將用戶數(shù)據(jù)的長度寫到加載命令緩沖區(qū)中偏移等于20的位置,將用戶數(shù)據(jù)寫到加載命令緩沖區(qū)中偏移等于21的位置;
[0127]步驟al7:卡片根據(jù)用戶數(shù)據(jù)的長度更新加載偏移;
[0128]具體地,更新后的加載偏移=當(dāng)前加載偏移+用戶數(shù)據(jù)的長度+1 ;
[0129]例如,當(dāng)前加載偏移為20,用戶數(shù)據(jù)的長度為4,則更新加載偏移為25 ;
[0130]步驟al8:卡片根據(jù)加載偏移和第一數(shù)據(jù)的長度判斷加載命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟a20 ;
[0131]具體地,判斷加載偏移+第一數(shù)據(jù)的長度的值是否大于239,是則加載命令緩沖區(qū)會越界,否則加載命令緩沖區(qū)不會越界;
[0132]步驟al9:卡片將第一數(shù)據(jù)寫到加載命令緩沖區(qū)中偏移等于加載偏移的位置;
[0133]本實施例中,步驟al9具體為:將加載命令緩沖區(qū)中從偏移等于第一偏移開始至偏移等于第二偏移之前的數(shù)據(jù),寫到加載命令緩沖區(qū)中偏移等于加載偏移的位置;
[0134]例如,當(dāng)前加載偏移為25,則將第一數(shù)據(jù)寫到加載命令緩沖區(qū)中偏移等于25的位置;
[0135]步驟a20:卡片根據(jù)第一數(shù)據(jù)的長度更新加載命令緩沖區(qū)的偏移;
[0136]具體地,更新后的加載偏移=當(dāng)前加載偏移+第一數(shù)據(jù)的長度;
[0137]例如,當(dāng)前加載偏移為25,第一數(shù)據(jù)的長度為12,則更新加載偏移為37 ;
[0138]本實施例中,加載收條數(shù)據(jù)具體為加載命令緩沖區(qū)中,從偏移等于第二偏移至當(dāng)前加載偏移之前的數(shù)據(jù),例如當(dāng)前加載偏移為37,則加載收條數(shù)據(jù)具體為加載命令緩沖區(qū)中的第十七個字節(jié)至第三十六個字節(jié)。
[0139]步驟113:卡片使用預(yù)設(shè)算法對加載收條數(shù)據(jù)進(jìn)行簽名運算,得到第一簽名數(shù)據(jù);
[0140]本實施例中,預(yù)設(shè)算法具體為ALG_DES_MAC8_IS09797_1_M2_ALG3算法。
[0141]步驟114:卡片根據(jù)第一簽名數(shù)據(jù)和加載收條數(shù)據(jù)組織加載收條;
[0142]本實施例中,步驟114具體包括:
[0143]步驟a21:卡片記錄當(dāng)前加載偏移為第三偏移;
[0144]步驟a22:卡片根據(jù)第一偏移更新加載偏移;
[0145]本實施例中,更新后的加載偏移=第一偏移+1 ;
[0146]例如,第一偏移等于5,則更新加載偏移為6 ;
[0147]步驟a23:卡片將第一簽名數(shù)據(jù)的長度寫到加載命令緩沖區(qū)中偏移等于加載偏移的位置,將第一簽名數(shù)據(jù)寫到加載命令緩沖區(qū)中加載偏移加I的位置;
[0148]例如,當(dāng)前加載偏移為6,則將第一簽名數(shù)據(jù)的長度寫到加載命令緩沖區(qū)中偏移等于6的位置,將第一簽名數(shù)據(jù)寫到加載命令緩沖區(qū)中偏移等于7的位置;
[0149]步驟a24:卡片根據(jù)第一簽名數(shù)據(jù)的長度更新加載偏移;
[0150]具體地,更新后的加載偏移=當(dāng)前加載偏移+第一簽名數(shù)據(jù)的長度+1 ;
[0151]例如,當(dāng)前加載偏移為6,第一簽名數(shù)據(jù)的長度為8,則更新加載偏移為15;
[0152]步驟a25:卡片根據(jù)加載偏移和加載收條數(shù)據(jù)的長度判斷加載命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟a26 ;
[0153]具體地,判斷加載偏移+加載收條數(shù)據(jù)的長度的值是否大于239,是則加載命令緩沖區(qū)會越界,否則加載命令緩沖區(qū)不會越界;
[0154]步驟a26:卡片將加載收條數(shù)據(jù)寫到加載命令緩沖區(qū)中偏移等于加載偏移的位置;
[0155]本實施例中,步驟a26具體為,將加載命令緩沖區(qū)中,從偏移等于第二偏移至偏移等于第三偏移之前的數(shù)據(jù)寫到加載命令緩沖區(qū)中偏移等于加載偏移的位置;
[0156]例如,當(dāng)前加載偏移為15,則將加載收條數(shù)據(jù)寫到加載命令緩沖區(qū)中偏移等于15的位置;
[0157]步驟a27:卡片根據(jù)加載收條數(shù)據(jù)的長度更新加載偏移;
[0158]具體地,更新后的加載偏移=當(dāng)前加載偏移+加載收條數(shù)據(jù)的長度;
[0159]例如,加載收條數(shù)據(jù)的長度為20,則更新加載偏移為35 ;
[0160]步驟a28:卡片計算加載收條中的數(shù)據(jù)的長度;
[0161]本實施例中,加載收條為長度+數(shù)據(jù)的格式,加載收條中的數(shù)據(jù)具體為加載命令緩沖區(qū)中,從偏移等于第一偏移之后至當(dāng)前加載偏移之前的數(shù)據(jù),加載收條中的數(shù)據(jù)的長度=當(dāng)前加載偏移-第一偏移-1;
[0162]例如,第一偏移為5,當(dāng)前加載偏移為35,則加載收條中的數(shù)據(jù)的長度為29。
[0163]步驟a29:卡片將加載收條中的數(shù)據(jù)的長度寫到加載命令緩沖區(qū)中偏移等于第一偏移的位置。
[0164]例如,第一偏移為5,則將加載收條中的數(shù)據(jù)的長度寫到加載命令緩沖區(qū)中偏移等于5的位置。
[0165]步驟115:卡片向上位機(jī)返回加載收條,并更新卡內(nèi)確認(rèn)計數(shù)器的計數(shù)值,執(zhí)行步驟 144 ;
[0166]本實施例中,加載收條具體為加載命令緩沖區(qū)中,從偏移等于第一偏移開始至偏移等于當(dāng)前加載偏移之前的數(shù)據(jù);
[0167]具體地,更新卡內(nèi)確認(rèn)計數(shù)器的計數(shù)值為其當(dāng)前值加I。
[0168]步驟116:卡片根據(jù)安裝命令中的可執(zhí)行加載文件標(biāo)識和應(yīng)用標(biāo)識組織第二數(shù)據(jù);
[0169]本實施例中,步驟116具體包括:
[0170]步驟bl:卡片初始化安裝命令緩沖區(qū)的偏移為安裝偏移;
[0171]本實施例中,卡片接收到安裝命令時創(chuàng)建安裝命令緩沖區(qū),將安裝命令存儲到安裝命令緩沖區(qū);
[0172]具體地,卡片初始化安裝偏移為I ;
[0173]步驟b2:卡片更新安裝偏移為安裝命令緩沖區(qū)中的安裝命令的數(shù)據(jù)域的起始位置的偏移,記錄當(dāng)前安裝偏移為第四偏移;
[0174]具體地,安裝命令的第一字節(jié)至第四字節(jié)為命令頭,從第五字節(jié)開始為數(shù)據(jù)域,SP本實施例中,更新安裝偏移為5 ;
[0175]步驟b3:卡片讀取安裝命令緩沖區(qū)中偏移等于安裝偏移的位置的數(shù)據(jù),得到可執(zhí)行加載文件標(biāo)識的長度,更新安裝偏移為其當(dāng)前值加I ;
[0176]例如,當(dāng)前安裝偏移為5,則讀取安裝命令緩沖區(qū)中偏移等于5的位置的數(shù)據(jù),得到可執(zhí)行加載文件標(biāo)識的長度,更新安裝偏移為6 ;
[0177]步驟b4:卡片讀取安裝命令緩沖區(qū)中從偏移等于安裝偏移的位置開始,長度等于可執(zhí)行加載文件標(biāo)識的長度的數(shù)據(jù),得到可執(zhí)行加載文件標(biāo)識,更新安裝偏移為其當(dāng)前值加上可執(zhí)行加載文件標(biāo)識的長度;
[0178]例如,當(dāng)前安裝偏移為6,可執(zhí)行加載文件標(biāo)識的長度為5,則讀取安裝命令緩沖區(qū)中從偏移等于6的位置開始,長度等于5的數(shù)據(jù),即安裝命令緩沖區(qū)中第六字節(jié)至第十字節(jié)的數(shù)據(jù),得到可執(zhí)行加載文件標(biāo)識,更新安裝偏移為11 ;
[0179]步驟b5:卡片記錄當(dāng)前安裝偏移為第五偏移;
[0180]步驟b6:卡片讀取安裝命令緩沖區(qū)中偏移等于安裝偏移的位置的數(shù)據(jù),得到可執(zhí)行模塊標(biāo)識的長度,更新安裝偏移為其當(dāng)前值加I ;
[0181]例如,當(dāng)前安裝偏移為5,則讀取安裝命令緩沖區(qū)中偏移等于11的位置的數(shù)據(jù),得到可執(zhí)行模塊標(biāo)識的長度,更新安裝偏移為12 ;
[0182]步驟b7:卡片讀取安裝命令緩沖區(qū)中從偏移等于安裝偏移的位置開始,長度等于可執(zhí)行模塊標(biāo)識的長度的數(shù)據(jù),得到可執(zhí)行模塊標(biāo)識,更新安裝偏移為其當(dāng)前值加上可執(zhí)行模塊標(biāo)識的長度;
[0183]例如,當(dāng)前安裝偏移為12,可執(zhí)行加載文件標(biāo)識的長度為5,則讀取安裝命令緩沖區(qū)中從偏移等于12的位置開始,長度等于5的數(shù)據(jù),即安裝命令緩沖區(qū)中第十二字節(jié)至第十六字節(jié)的數(shù)據(jù),得到可執(zhí)行模塊標(biāo)識,更新安裝偏移為17 ;
[0184]步驟b8:卡片讀取安裝命令緩沖區(qū)中偏移等于安裝偏移的位置的數(shù)據(jù),得到應(yīng)用標(biāo)識的長度,更新安裝偏移為其當(dāng)前值加I ;
[0185]例如,當(dāng)前安裝偏移為17,則讀取安裝命令緩沖區(qū)中偏移等于17的位置的數(shù)據(jù),得到應(yīng)用標(biāo)識的長度,更新安裝偏移為18 ;
[0186]步驟b9:卡片讀取安裝命令緩沖區(qū)中從偏移等于安裝偏移的位置開始,長度等于應(yīng)用標(biāo)識的長度的數(shù)據(jù),得到應(yīng)用標(biāo)識;
[0187]例如,當(dāng)前安裝偏移為18,應(yīng)用標(biāo)識的長度為5,則讀取安裝命令緩沖區(qū)中從偏移等于18的位置開始,長度等于5的數(shù)據(jù),即安裝命令緩沖區(qū)中第十八字節(jié)至第二十二字節(jié)的數(shù)據(jù),得到應(yīng)用標(biāo)識;
[0188]步驟blO:卡片更新安裝偏移為第五偏移;
[0189]步驟bll:卡片根據(jù)安裝偏移和應(yīng)用標(biāo)識的長度判斷安裝命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟bl2 ;
[0190]具體地,判斷安裝偏移+應(yīng)用標(biāo)識的長度+1的值是否大于239,是則安裝命令緩沖區(qū)會越界,否則安裝命令緩沖區(qū)不會越界;
[0191]步驟bl2:卡片將應(yīng)用標(biāo)識的長度寫到安裝命令緩沖區(qū)中偏移等于安裝偏移的位置,更新安裝偏移為其當(dāng)前值加I ;
[0192]例如,當(dāng)前安裝偏移為11,則將應(yīng)用標(biāo)識的長度寫到安裝命令緩沖區(qū)中偏移等于11的位置,更新安裝偏移為12 ;
[0193]步驟bl3:卡片將應(yīng)用標(biāo)識寫到安裝命令緩沖區(qū)中偏移等于安裝偏移的位置,更新安裝偏移為其當(dāng)前值加上應(yīng)用標(biāo)識的長度;
[0194]例如,當(dāng)前安裝偏移為12,應(yīng)用標(biāo)識的長度為5,則將應(yīng)用標(biāo)識的長度寫到安裝命令緩沖區(qū)中偏移等于12的位置,更新安裝偏移為17 ;
[0195]本實施例中,第二數(shù)據(jù)具體為安裝命令緩沖區(qū)中,從偏移等于第四偏移開始至偏移等于當(dāng)前安裝偏移之前的數(shù)據(jù),例如當(dāng)前加載命令緩沖區(qū)的偏移為17,則第二數(shù)據(jù)具體為安裝命令緩沖區(qū)中的第五個字節(jié)至第十六個字節(jié)。
[0196]步驟117:卡片獲取卡內(nèi)確認(rèn)計數(shù)器的計數(shù)值;
[0197]步驟118:卡片判斷確認(rèn)計數(shù)器的計數(shù)值是否達(dá)到閾值,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟119 ;
[0198]步驟119:卡片獲取卡內(nèi)存儲的用戶數(shù)據(jù);
[0199]步驟120:卡片判斷用戶數(shù)據(jù)是否為空,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟121 ;
[0200]步驟121:卡片根據(jù)確認(rèn)計數(shù)器的計數(shù)值、用戶數(shù)據(jù)以及第二數(shù)據(jù)組織安裝收條數(shù)據(jù);
[0201]本實施例中,步驟121具體包括:
[0202]步驟bl4:卡片記錄當(dāng)前安裝偏移為第六偏移;
[0203]步驟bl5:卡片根據(jù)安裝偏移和確認(rèn)計數(shù)器的計數(shù)值的長度判斷安裝命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟bl6 ;
[0204]具體地,判斷安裝偏移+確認(rèn)計數(shù)器的計數(shù)值的長度+1的值是否大于239,是則安裝命令緩沖區(qū)會越界,否則安裝命令緩沖區(qū)不會越界;
[0205]步驟bl6:卡片將確認(rèn)計數(shù)器的計數(shù)值的長度寫到安裝命令緩沖區(qū)中偏移等于安裝偏移的位置,將確認(rèn)計數(shù)器的計數(shù)值寫到安裝命令緩沖區(qū)中偏移等于安裝偏移加I的位置;
[0206]例如,當(dāng)前安裝偏移為17,則將確認(rèn)計數(shù)器的計數(shù)值的長度寫到安裝命令緩沖區(qū)中偏移等于17的位置,將確認(rèn)計數(shù)器的計數(shù)值寫到安裝命令緩沖區(qū)中偏移等于18的位置;
[0207]步驟bl7:卡片根據(jù)確認(rèn)計數(shù)器的計數(shù)值的長度更新安裝偏移;
[0208]具體地,更新后的安裝偏移=當(dāng)前安裝偏移+確認(rèn)計數(shù)器的計數(shù)值的長度+1 ;
[0209]例如,當(dāng)前安裝偏移為17,確認(rèn)計數(shù)器的計數(shù)值的長度為2,則更新加安裝偏移為20 ;
[0210]步驟bl8:卡片根據(jù)安裝偏移和用戶數(shù)據(jù)的長度判斷安裝命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟bl9 ;
[0211]具體地,判斷安裝偏移+用戶數(shù)據(jù)的長度+1的值是否大于239,是則安裝命令緩沖區(qū)會越界,否則安裝命令緩沖區(qū)不會越界;
[0212]步驟bl9:卡片將用戶數(shù)據(jù)的長度寫到安裝命令緩沖區(qū)中偏移等于安裝偏移的位置,將用戶數(shù)據(jù)寫到安裝命令緩沖區(qū)中偏移等于安裝偏移加I的位置;
[0213]例如,當(dāng)前安裝偏移為20,則將用戶數(shù)據(jù)的長度寫到安裝命令緩沖區(qū)中偏移等于20的位置,將用戶數(shù)據(jù)寫到安裝命令緩沖區(qū)中偏移等于21的位置;
[0214]步驟b20:卡片根據(jù)用戶數(shù)據(jù)的長度更新安裝偏移;
[0215]具體地,更新后的安裝偏移=當(dāng)前安裝偏移+用戶數(shù)據(jù)的長度+1 ;
[0216]例如,當(dāng)前安裝偏移為20,用戶數(shù)據(jù)的長度為4,則更新安裝偏移為25 ;
[0217]步驟b21:卡片根據(jù)安裝偏移和第二數(shù)據(jù)的長度判斷安裝命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟b22 ;
[0218]具體地,判斷安裝偏移+第二數(shù)據(jù)的長度的值是否大于239,是則安裝命令緩沖區(qū)會越界,否則安裝命令緩沖區(qū)不會越界;
[0219]步驟b22:卡片將第二數(shù)據(jù)寫到安裝命令緩沖區(qū)中偏移等于安裝偏移的位置;
[0220]本實施例中,步驟b22具體為:將安裝命令緩沖區(qū)中,從偏移等于第四偏移開始至偏移等于第五偏移之前的數(shù)據(jù)寫到安裝命令緩沖區(qū)中偏移等于安裝偏移的位置;
[0221]例如,當(dāng)前安裝命令緩沖區(qū)的偏移為25,則將第二數(shù)據(jù)寫到安裝命令緩沖區(qū)中偏移等于25的位置;
[0222]步驟b23:卡片根據(jù)第二數(shù)據(jù)的長度更新安裝偏移;
[0223]具體地,更新后的安裝偏移=當(dāng)前安裝偏移+第二數(shù)據(jù)的長度;
[0224]例如,當(dāng)前安裝偏移為25,第二數(shù)據(jù)的長度為12,則更新安裝偏移為37 ;
[0225]本實施例中,安裝收條數(shù)據(jù)具體為安裝命令緩沖區(qū)中,從偏移等于第六偏移開始至偏移等于當(dāng)前安裝偏移之前的數(shù)據(jù),例如當(dāng)前安裝偏移為37,則安裝收條數(shù)據(jù)具體為安裝命令緩沖區(qū)中的第十七個字節(jié)至第三十六個字節(jié)。
[0226]步驟122:卡片使用預(yù)設(shè)算法對安裝收條數(shù)據(jù)進(jìn)行簽名運算,得到第二簽名數(shù)據(jù);
[0227]本實施例中,預(yù)設(shè)算法具體為ALG_DES_MAC8_IS09797_1_M2_ALG3算法。
[0228]步驟123:卡片根據(jù)第二簽名數(shù)據(jù)和安裝收條數(shù)據(jù)組織安裝收條;
[0229]本實施例中,步驟123具體包括:
[0230]步驟b24:卡片記錄當(dāng)前安裝偏移為第七偏移;
[0231]步驟b25:卡片根據(jù)第四偏移更新安裝偏移;
[0232]本實施例中,更新后的安裝偏移=第四偏移+1 ;
[0233]例如,第四偏移等于5,則更新安裝偏移為6 ;
[0234]步驟b26:卡片將第二簽名數(shù)據(jù)的長度寫到安裝命令緩沖區(qū)中偏移等于安裝偏移的位置,將第二簽名數(shù)據(jù)寫到安裝命令緩沖區(qū)中安裝偏移加I的位置;
[0235]例如,當(dāng)前安裝偏移為6,則將第二簽名數(shù)據(jù)的長度寫到安裝命令緩沖區(qū)中偏移等于6的位置,將第二簽名數(shù)據(jù)寫到安裝命令緩沖區(qū)中偏移等于7的位置;
[0236]步驟b27:卡片根據(jù)第二簽名數(shù)據(jù)的長度更新安裝偏移;
[0237]具體地,更新后的安裝偏移=當(dāng)前安裝偏移+第二簽名數(shù)據(jù)的長度+1 ;
[0238]例如,當(dāng)前安裝偏移為6,第二簽名數(shù)據(jù)的長度為8,則更新安裝偏移為15 ;
[0239]步驟b28:卡片根據(jù)安裝偏移和安裝收條數(shù)據(jù)的長度判斷安裝命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟b29 ;
[0240]具體地,判斷安裝偏移+安裝收條數(shù)據(jù)的長度的值是否大于239,是則安裝命令緩沖區(qū)會越界,否則安裝命令緩沖區(qū)不會越界;
[0241]步驟b29:卡片將安裝收條數(shù)據(jù)寫到安裝命令緩沖區(qū)中偏移等于安裝偏移的位置;
[0242]本實施例中,步驟b29具體為,將安裝命令緩沖區(qū)中,偏移等于第六偏移開始至偏移等于第七偏移之前的數(shù)據(jù)寫到安裝命令緩沖區(qū)中偏移等于安裝偏移的位置;
[0243]例如,當(dāng)前安裝偏移為15,則將安裝收條數(shù)據(jù)寫到安裝命令緩沖區(qū)中偏移等于15的位置;
[0244]步驟b30:卡片根據(jù)安裝收條數(shù)據(jù)的長度更新安裝偏移;
[0245]具體地,更新后的安裝偏移=當(dāng)前安裝偏移+安裝收條數(shù)據(jù)的長度;
[0246]例如,安裝收條數(shù)據(jù)的長度為20,則更新安裝偏移為35 ;
[0247]步驟b31:卡片計算安裝收條中的數(shù)據(jù)的長度;
[0248]本實施例中,安裝收條為長度+數(shù)據(jù)的格式,安裝收條中的數(shù)據(jù)具體為安裝命令緩沖區(qū)中從偏移等于第四偏移之后至偏移等于當(dāng)前安裝偏移之前的數(shù)據(jù),安裝收條中的數(shù)據(jù)的長度=當(dāng)前安裝偏移_第四偏移_1 ;
[0249]例如,第四偏移為5,當(dāng)前安裝偏移為35,則安裝收條中的數(shù)據(jù)的長度為29。
[0250]步驟b32:卡片將安裝收條中的數(shù)據(jù)的長度寫到安裝命令緩沖區(qū)中偏移等于第四偏移的位置。
[0251]例如,第四偏移為5,則將安裝收條中的數(shù)據(jù)的長度寫到安裝命令緩沖區(qū)中偏移等于5的位置。
[0252]步驟124:卡片向上位機(jī)返回安裝收條,并更新卡內(nèi)確認(rèn)計數(shù)器的計數(shù)值,執(zhí)行步驟 144 ;
[0253]本實施例中,安裝收條具體為安裝命令緩沖區(qū)中,從偏移等于第四偏移開始至偏移等于當(dāng)前安裝偏移之前的數(shù)據(jù);
[0254]具體地,更新卡內(nèi)確認(rèn)計數(shù)器的計數(shù)值為其當(dāng)前值加I。
[0255]步驟125:卡片根據(jù)刪除命令中的應(yīng)用標(biāo)識組織第三數(shù)據(jù);
[0256]本實施例中,步驟125具體包括:
[0257]步驟Cl:卡片初始化刪除命令緩沖區(qū)的偏移為刪除偏移;
[0258]本實施例中,卡片接收到刪除命令時創(chuàng)建刪除命令緩沖區(qū),將刪除命令存儲到刪除命令緩沖區(qū);
[0259]具體地,卡片初始化刪除偏移為I ;
[0260]步驟c2:卡片更新刪除偏移為刪除命令緩沖區(qū)中的刪除命令的數(shù)據(jù)域的起始位置的偏移,記錄當(dāng)前刪除偏移為第八偏移;
[0261]具體地,刪除命令的第一字節(jié)至第四字節(jié)為命令頭,從第五字節(jié)開始為數(shù)據(jù)域,SP本實施例中,更新刪除偏移為5 ;
[0262]步驟c3:卡片讀取刪除命令緩沖區(qū)中偏移等于刪除偏移的位置的數(shù)據(jù),得到應(yīng)用標(biāo)識的長度,更新刪除偏移為其當(dāng)前值加I ;
[0263]例如,當(dāng)前刪除偏移為5,則讀取刪除命令緩沖區(qū)中偏移等于5的位置的數(shù)據(jù),得到應(yīng)用標(biāo)識的長度,更新刪除偏移為6 ;
[0264]步驟c4:卡片讀取刪除命令緩沖區(qū)中從偏移等于刪除偏移的位置開始,長度等于應(yīng)用標(biāo)識的長度的數(shù)據(jù),得到應(yīng)用標(biāo)識,更新刪除偏移為其當(dāng)前值加上應(yīng)用標(biāo)識的長度;
[0265]例如,當(dāng)前刪除偏移為6,應(yīng)用標(biāo)識的長度為5,則讀取刪除命令緩沖區(qū)中從偏移等于6的位置開始,長度等于5的數(shù)據(jù),即刪除命令緩沖區(qū)中第六字節(jié)至第十字節(jié)的數(shù)據(jù),得到應(yīng)用標(biāo)識,更新刪除偏移為11 ;
[0266]本實施例中,第三數(shù)據(jù)具體為刪除命令緩沖區(qū)中從偏移等于第八偏移至偏移等于當(dāng)前刪除偏移之前的數(shù)據(jù),例如當(dāng)前刪除偏移為11,則第三數(shù)據(jù)具體為刪除命令緩沖區(qū)中的第五個字節(jié)至第十個字節(jié)。
[0267]步驟126:卡片獲取卡內(nèi)確認(rèn)計數(shù)器的計數(shù)值;
[0268]步驟127:卡片判斷確認(rèn)計數(shù)器的計數(shù)值是否達(dá)到閾值,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟128 ;
[0269]步驟128:卡片獲取卡內(nèi)存儲的用戶數(shù)據(jù);
[0270]步驟129:卡片判斷用戶數(shù)據(jù)是否為空,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟130;
[0271]步驟130:卡片根據(jù)確認(rèn)計數(shù)器的計數(shù)值、用戶數(shù)據(jù)以及第三數(shù)據(jù)組織刪除收條數(shù)據(jù);
[0272]本實施例中,步驟130具體包括:
[0273]步驟c5:卡片記錄當(dāng)前刪除偏移為第九偏移;
[0274]步驟c6:卡片根據(jù)刪除偏移和確認(rèn)計數(shù)器的計數(shù)值的長度判斷刪除命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟c7 ;
[0275]具體地,判斷刪除偏移+確認(rèn)計數(shù)器的計數(shù)值的長度+1的值是否大于239,是則刪除命令緩沖區(qū)會越界,否則刪除命令緩沖區(qū)不會越界;
[0276]步驟C7:卡片將確認(rèn)計數(shù)器的計數(shù)值的長度寫到刪除命令緩沖區(qū)中偏移等于刪除偏移的位置,將確認(rèn)計數(shù)器的計數(shù)值寫到刪除命令緩沖區(qū)中偏移等于刪除偏移加I的位置;
[0277]例如,當(dāng)前刪除偏移為11,則將確認(rèn)計數(shù)器的計數(shù)值的長度寫到刪除命令緩沖區(qū)中偏移等于11的位置,將確認(rèn)計數(shù)器的計數(shù)值寫到刪除命令緩沖區(qū)中偏移等于12的位置;
[0278]步驟c8:卡片根據(jù)確認(rèn)計數(shù)器的計數(shù)值的長度更新刪除偏移;
[0279]具體地,更新后的刪除偏移=當(dāng)前刪除偏移+確認(rèn)計數(shù)器的計數(shù)值的長度+1 ;
[0280]例如,當(dāng)前刪除偏移為11,確認(rèn)計數(shù)器的計數(shù)值的長度為2,則更新刪除命令緩沖區(qū)的偏移為14 ;
[0281]步驟c9:卡片根據(jù)刪除偏移和用戶數(shù)據(jù)的長度判斷刪除命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟ClO ;
[0282]具體地,判斷刪除偏移+用戶數(shù)據(jù)的長度+1的值是否大于239,是則刪除命令緩沖區(qū)會越界,否則刪除命令緩沖區(qū)不會越界;
[0283]步驟ClO:卡片將用戶數(shù)據(jù)的長度寫到刪除命令緩沖區(qū)中偏移等于刪除偏移的位置,將用戶數(shù)據(jù)寫到刪除命令緩沖區(qū)中偏移等于刪除偏移加I的位置;
[0284]例如,當(dāng)前刪除偏移為14,則將用戶數(shù)據(jù)的長度寫到刪除命令緩沖區(qū)中偏移等于14的位置,將用戶數(shù)據(jù)寫到刪除命令緩沖區(qū)中偏移等于15的位置;
[0285]步驟cll:卡片根據(jù)用戶數(shù)據(jù)的長度更新刪除偏移;
[0286]具體地,更新后的刪除偏移=當(dāng)前刪除偏移+用戶數(shù)據(jù)的長度+1 ;
[0287]例如,當(dāng)前刪除偏移為14,用戶數(shù)據(jù)的長度為4,則更新刪除偏移為19 ;
[0288]步驟cl2:卡片根據(jù)刪除偏移和第三數(shù)據(jù)的長度判斷刪除命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟cl3 ;
[0289]具體地,判斷刪除偏移+第三數(shù)據(jù)的長度的值是否大于239,是則刪除命令緩沖區(qū)會越界,否則刪除命令緩沖區(qū)不會越界;
[0290]步驟cl3:卡片將第三數(shù)據(jù)寫到刪除命令緩沖區(qū)中偏移等于刪除偏移的位置;
[0291]本實施例中,步驟cl3具體為:將刪除命令緩沖區(qū)中從偏移等于第八偏移至偏移等于第九偏移之前的數(shù)據(jù)寫到刪除命令緩沖區(qū)中偏移等于刪除偏移的位置;
[0292]例如,當(dāng)前刪除偏移為19,則將第三數(shù)據(jù)寫到刪除命令緩沖區(qū)中偏移等于19的位置;
[0293]步驟cl4:卡片根據(jù)第三數(shù)據(jù)的長度更新刪除偏移;
[0294]具體地,更新后的刪除偏移=當(dāng)前刪除偏移+第三數(shù)據(jù)的長度;
[0295]例如,當(dāng)前刪除偏移為19,第三數(shù)據(jù)的長度為6,則更新刪除偏移為25 ;
[0296]本實施例中,刪除收條數(shù)據(jù)具體為刪除命令緩沖區(qū)中偏移等于第九偏移至偏移等于當(dāng)前刪除偏移之前數(shù)據(jù),例如當(dāng)前刪除偏移為25,則刪除收條數(shù)據(jù)具體為刪除命令緩沖區(qū)中的第十一個字節(jié)至第二十四個字節(jié)。
[0297]步驟131:卡片使用預(yù)設(shè)算法對刪除收條數(shù)據(jù)進(jìn)行簽名運算,得到第三簽名數(shù)據(jù);
[0298]本實施例中,預(yù)設(shè)算法具體為ALG_DES_MAC8_IS09797_1_M2_ALG3算法。
[0299]步驟132:卡片根據(jù)第三簽名數(shù)據(jù)和刪除收條數(shù)據(jù)組織刪除收條;
[0300]本實施例中,步驟132具體包括:
[0301]步驟C15:卡片記錄當(dāng)前刪除偏移為第十偏移;
[0302]步驟cl6:卡片根據(jù)第八偏移更新刪除偏移;
[0303]本實施例中,更新后的刪除偏移=第八偏移+1 ;
[0304]例如,第八偏移等于5,則更新刪除偏移為6 ;
[0305]步驟cl7:卡片將第三簽名數(shù)據(jù)的長度寫到刪除命令緩沖區(qū)中偏移等于刪除偏移的位置,將第三簽名數(shù)據(jù)寫到刪除命令緩沖區(qū)中偏移等于刪除偏移加I的位置;
[0306]例如,當(dāng)前刪除偏移為6,則將第三簽名數(shù)據(jù)的長度寫到刪除命令緩沖區(qū)中偏移等于6的位置,將第三簽名數(shù)據(jù)寫到刪除命令緩沖區(qū)中偏移等于7的位置;
[0307]步驟cl8:卡片根據(jù)第三簽名數(shù)據(jù)的長度更新刪除偏移;
[0308]具體地,更新后的刪除偏移=當(dāng)前刪除偏移+第三簽名數(shù)據(jù)的長度+1 ;
[0309]例如,當(dāng)前刪除偏移為6,第三簽名數(shù)據(jù)的長度為8,則更新刪除偏移為15 ;
[0310]步驟cl9:卡片根據(jù)刪除偏移和刪除收條數(shù)據(jù)的長度判斷刪除命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟c20 ;
[0311]具體地,判斷刪除偏移+刪除收條數(shù)據(jù)的長度的值是否大于239,是則刪除命令緩沖區(qū)會越界,否則刪除命令緩沖區(qū)不會越界;
[0312]步驟c20:卡片將刪除收條數(shù)據(jù)寫到刪除命令緩沖區(qū)中偏移等于刪除偏移的位置;
[0313]本實施例中,步驟c20具體為,將刪除命令緩沖區(qū)中從偏移等于第九偏移至偏移等于第十偏移之前的數(shù)據(jù)寫到刪除命令緩沖區(qū)中偏移等于刪除偏移的位置;
[0314]例如,當(dāng)前刪除偏移為15,則將刪除收條數(shù)據(jù)寫到刪除命令緩沖區(qū)中偏移等于15的位置;
[0315]步驟c21:卡片根據(jù)刪除收條數(shù)據(jù)的長度更新刪除偏移;
[0316]具體地,更新后的刪除偏移=當(dāng)前刪除偏移+刪除收條數(shù)據(jù)的長度;
[0317]例如,刪除收條數(shù)據(jù)的長度為14,則更新刪除偏移為29 ;
[0318]步驟c22:卡片計算刪除收條中的數(shù)據(jù)的長度;
[0319]本實施例中,刪除收條為長度+數(shù)據(jù)的格式,刪除收條中的數(shù)據(jù)具體為刪除命令緩沖區(qū)中從偏移等于第八偏移之后至偏移等于當(dāng)前刪除偏移之前的數(shù)據(jù),刪除收條中的數(shù)據(jù)的長度=當(dāng)前刪除偏移-第八偏移-1 ;
[0320]例如,第八偏移為5,當(dāng)前刪除偏移為29,則刪除收條中的數(shù)據(jù)的長度為23。
[0321]步驟c23:卡片將刪除收條中的數(shù)據(jù)的長度寫到刪除命令緩沖區(qū)中偏移等于第八偏移的位置。
[0322]例如,第八偏移為5,則將刪除收條中的數(shù)據(jù)的長度寫到刪除命令緩沖區(qū)中偏移等于5的位置。
[0323]步驟133:卡片向上位機(jī)返回刪除收條,并更新卡內(nèi)確認(rèn)計數(shù)器的計數(shù)值,執(zhí)行步驟 144 ;
[0324]本實施例中,刪除收條具體為刪除命令緩沖區(qū)中,從偏移等于第八偏移開始至偏移等于當(dāng)前刪除偏移之前的數(shù)據(jù);
[0325]具體地,更新卡內(nèi)確認(rèn)計數(shù)器的計數(shù)值為其當(dāng)前值加I。
[0326]步驟134:卡片根據(jù)引渡命令中的應(yīng)用標(biāo)識查找卡內(nèi)與該應(yīng)用標(biāo)識對應(yīng)的應(yīng)用的原安全域標(biāo)識;
[0327]本實施例中,步驟134具體包括:
[0328]步驟dl:卡片初始化引渡命令緩沖區(qū)的偏移為引渡偏移;
[0329]本實施例中,卡片接收到引渡命令時創(chuàng)建引渡命令緩沖區(qū),將引渡命令存儲到引渡命令緩沖區(qū);
[0330]具體地,卡片初始化引渡偏移為I ;
[0331]步驟d2:卡片更新引渡偏移為引渡命令緩沖區(qū)中的引渡命令的數(shù)據(jù)域的起始位置的偏移,記錄當(dāng)前引渡偏移為第十一偏移;
[0332]具體地,引渡命令的第一字節(jié)至第四字節(jié)為命令頭,從第五字節(jié)開始為數(shù)據(jù)域,SP本實施例中,更新引渡偏移為5 ;
[0333]步驟d3:卡片讀取引渡命令緩沖區(qū)中偏移等于引渡偏移的位置的數(shù)據(jù),得到新安全域標(biāo)識的長度,更新引渡偏移為其當(dāng)前值加I ;
[0334]例如,當(dāng)前引渡偏移為5,則讀取引渡命令緩沖區(qū)中偏移等于5的位置的數(shù)據(jù),得到新安全域標(biāo)識的長度,更新引渡偏移為6 ;
[0335]步驟d4:卡片讀取引渡命令緩沖區(qū)中從偏移等于引渡偏移的位置開始,長度等于新安全域標(biāo)識的長度的數(shù)據(jù),得到新安全域標(biāo)識,更新引渡偏移為其當(dāng)前值加上新安全域標(biāo)識的長度;
[0336]例如,當(dāng)前引渡偏移為6,新安全域標(biāo)識的長度為5,則讀取引渡命令緩沖區(qū)中從偏移等于6的位置開始,長度等于5的數(shù)據(jù),S卩引渡命令緩沖區(qū)中第六字節(jié)至第十字節(jié)的數(shù)據(jù),得到新安全域標(biāo)識,更新引渡偏移為11 ;
[0337]步驟d5:卡片讀取引渡命令緩沖區(qū)中偏移等于引渡偏移的位置的數(shù)據(jù),得到應(yīng)用標(biāo)識的長度,更新引渡偏移為其當(dāng)前值加I ;
[0338]例如,當(dāng)前引渡偏移為11,則讀取引渡命令緩沖區(qū)中偏移等于11的位置的數(shù)據(jù),得到應(yīng)用標(biāo)識的長度,更新引渡偏移為12 ;
[0339]步驟d6:卡片讀取引渡命令緩沖區(qū)中從偏移等于引渡偏移的位置開始,長度等于應(yīng)用標(biāo)識的長度的數(shù)據(jù),得到應(yīng)用標(biāo)識,更新引渡偏移為其當(dāng)前值加上應(yīng)用標(biāo)識的長度;
[0340]例如,當(dāng)前引渡偏移為12,應(yīng)用標(biāo)識的長度為5,則讀取引渡命令緩沖區(qū)中從偏移等于12的位置開始,長度等于5的數(shù)據(jù),S卩引渡命令緩沖區(qū)中第十二字節(jié)至第十六字節(jié)的數(shù)據(jù),得到應(yīng)用標(biāo)識,更新引渡偏移為17 ;
[0341]步驟d7:卡片在卡內(nèi)查找與應(yīng)用標(biāo)識對應(yīng)的應(yīng)用的原安全域標(biāo)識;
[0342]步驟135:卡片根據(jù)查找到的原安全域標(biāo)識以及引渡命令中的應(yīng)用標(biāo)識和新安全域標(biāo)識組織第四數(shù)據(jù);
[0343]本實施例中,步驟135具體包括:
[0344]步驟d8:卡片記錄當(dāng)前引渡偏移為第十二偏移;
[0345]步驟d9:卡片根據(jù)引渡偏移和原安全域標(biāo)識的長度判斷引渡命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟dlO ;
[0346]具體地,判斷引渡偏移+原安全域標(biāo)識的長度+1的值是否大于239,是則引渡命令緩沖區(qū)會越界,否則引渡命令緩沖區(qū)不會越界;
[0347]步驟dlO:將原安全域標(biāo)識的長度寫到引渡命令緩沖區(qū)中偏移等于引渡偏移的位置,將原安全域標(biāo)識寫到引渡命令緩沖區(qū)中偏移等于引渡偏移加I的位置;
[0348]例如,當(dāng)前引渡偏移為17,則將原安全域標(biāo)識的長度寫到引渡命令緩沖區(qū)中偏移等于17的位置,將原安全域標(biāo)識寫到引渡命令緩沖區(qū)中偏移等于18的位置;
[0349]步驟dll:卡片根據(jù)原安全域標(biāo)識的長度更新引渡偏移;
[0350]具體地,更新后的引渡偏移=當(dāng)前引渡偏移+原安全域標(biāo)識的長度+1 ;
[0351]例如,當(dāng)前引渡偏移為17,原安全域標(biāo)識的長度為5,則更新引渡偏移為23 ;
[0352]步驟dl2:卡片根據(jù)引渡偏移和應(yīng)用標(biāo)識的長度判斷引渡命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟dl3 ;
[0353]具體地,判斷引渡偏移+應(yīng)用標(biāo)識的長度+1的值是否大于239,是則引渡命令緩沖區(qū)會越界,否則引渡命令緩沖區(qū)不會越界;
[0354]步驟dl3:將應(yīng)用標(biāo)識的長度寫到引渡命令緩沖區(qū)中偏移等于引渡偏移的位置,將應(yīng)用標(biāo)識寫到引渡命令緩沖區(qū)中偏移等于引渡偏移加I的位置;
[0355]例如,當(dāng)前引渡偏移為23,則將應(yīng)用標(biāo)識的長度寫到引渡命令緩沖區(qū)中偏移等于23的位置,將應(yīng)用標(biāo)識寫到引渡命令緩沖區(qū)中偏移等于24的位置;
[0356]步驟dl4:卡片根據(jù)應(yīng)用標(biāo)識的長度更新引渡偏移;
[0357]具體地,更新后的引渡偏移=當(dāng)前引渡偏移+應(yīng)用標(biāo)識的長度+1 ;
[0358]例如,當(dāng)前引渡偏移為23,應(yīng)用標(biāo)識的長度為5,則更新引渡偏移為29 ;
[0359]步驟dl5:卡片根據(jù)引渡偏移和新安全域標(biāo)識的長度判斷引渡命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟dl6 ;
[0360]具體地,判斷引渡偏移+新安全域標(biāo)識的長度+1的值是否大于239,是則引渡命令緩沖區(qū)會越界,否則引渡命令緩沖區(qū)不會越界;
[0361]步驟dl6:將新安全域標(biāo)識的長度寫到引渡命令緩沖區(qū)中偏移等于引渡偏移的位置,將新安全域標(biāo)識寫到引渡命令緩沖區(qū)中偏移等于引渡偏移加I的位置;
[0362]例如,當(dāng)前引渡偏移為29,則將新安全域標(biāo)識的長度寫到引渡命令緩沖區(qū)中偏移等于29的位置,將新安全域標(biāo)識寫到引渡命令緩沖區(qū)中偏移等于30的位置;
[0363]步驟dl7:卡片根據(jù)新安全域標(biāo)識的長度更新引渡偏移;
[0364]具體地,更新后的引渡偏移=當(dāng)前引渡偏移+新安全域標(biāo)識的長度+1 ;
[0365]例如,當(dāng)前引渡偏移為29,新安全域標(biāo)識的長度為5,則更新引渡偏移為35 ;
[0366]本實施例中,第四數(shù)據(jù)具體為引渡命令緩沖區(qū)中從偏移等于第十二偏移至偏移等于當(dāng)前引渡偏移之前的數(shù)據(jù),例如當(dāng)前引渡偏移為35,第十二偏移為17,則第四數(shù)據(jù)具體為弓I渡命令緩沖區(qū)中的第十七個字節(jié)至第三十四個字節(jié)。
[0367]步驟136:卡片獲取卡內(nèi)確認(rèn)計數(shù)器的計數(shù)值;
[0368]步驟137:卡片判斷確認(rèn)計數(shù)器的計數(shù)值是否達(dá)到閾值,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟138 ;
[0369]步驟138:卡片獲取卡內(nèi)存儲的用戶數(shù)據(jù);
[0370]步驟139:卡片判斷用戶數(shù)據(jù)是否為空,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟140;
[0371]步驟140:卡片根據(jù)確認(rèn)計數(shù)器的計數(shù)值、用戶數(shù)據(jù)以及第四數(shù)據(jù)組織引渡收條數(shù)據(jù);
[0372]本實施例中,步驟140具體包括:
[0373]步驟dl8:卡片記錄當(dāng)前引渡偏移為第十三偏移;
[0374]步驟dl9:卡片根據(jù)引渡偏移和確認(rèn)計數(shù)器的計數(shù)值的長度判斷引渡命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟d20 ;
[0375]具體地,判斷引渡偏移+確認(rèn)計數(shù)器的計數(shù)值的長度+1的值是否大于239,是則引渡命令緩沖區(qū)會越界,否則引渡命令緩沖區(qū)不會越界;
[0376]步驟d20:卡片將確認(rèn)計數(shù)器的計數(shù)值的長度寫到引渡命令緩沖區(qū)中偏移等于引渡偏移的位置,將確認(rèn)計數(shù)器的計數(shù)值寫到引渡命令緩沖區(qū)中偏移等于引渡偏移加I的位置;
[0377]例如,當(dāng)前引渡偏移為35,則將確認(rèn)計數(shù)器的計數(shù)值的長度寫到引渡命令緩沖區(qū)中偏移等于35的位置,將確認(rèn)計數(shù)器的計數(shù)值寫到引渡命令緩沖區(qū)中偏移等于36的位置;
[0378]步驟d21:卡片根據(jù)確認(rèn)計數(shù)器的計數(shù)值的長度更新引渡偏移;
[0379]具體地,更新后的引渡偏移=當(dāng)前引渡偏移+確認(rèn)計數(shù)器的計數(shù)值的長度+1 ;
[0380]例如,當(dāng)前引渡偏移為35,確認(rèn)計數(shù)器的計數(shù)值的長度為2,則更新引渡偏移為38 ;
[0381]步驟d22:卡片根據(jù)引渡偏移和用戶數(shù)據(jù)的長度判斷引渡命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟d23 ;
[0382]具體地,判斷引渡偏移+用戶數(shù)據(jù)的長度+1的值是否大于239,是則引渡命令緩沖區(qū)會越界,否則引渡命令緩沖區(qū)不會越界;
[0383]步驟d23:卡片將用戶數(shù)據(jù)的長度寫到引渡命令緩沖區(qū)中偏移等于引渡偏移的位置,將用戶數(shù)據(jù)寫到引渡命令緩沖區(qū)中偏移等于引渡偏移加I的位置;
[0384]例如,當(dāng)前引渡偏移為38,則將用戶數(shù)據(jù)的長度寫到引渡命令緩沖區(qū)中偏移等于38的位置,將用戶數(shù)據(jù)寫到引渡命令緩沖區(qū)中偏移等于39的位置;
[0385]步驟d24:卡片根據(jù)用戶數(shù)據(jù)的長度更新引渡偏移;
[0386]具體地,更新后的引渡偏移=當(dāng)前引渡偏移+用戶數(shù)據(jù)的長度+1 ;
[0387]例如,當(dāng)前引渡偏移為38,用戶數(shù)據(jù)的長度為4,則更新引渡偏移為43 ;
[0388]步驟d25:卡片根據(jù)引渡偏移和第四數(shù)據(jù)的長度判斷引渡命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟d26 ;
[0389]具體地,判斷引渡偏移+第四數(shù)據(jù)的長度的值是否大于239,是則引渡命令緩沖區(qū)會越界,否則引渡命令緩沖區(qū)不會越界;
[0390]步驟d26:卡片將第四數(shù)據(jù)寫到引渡命令緩沖區(qū)中偏移等于引渡偏移的位置;
[0391]本實施例中,步驟d26具體為:將引渡命令緩沖區(qū)中從偏移等于第十二偏移至偏移等于第十三偏移之前的數(shù)據(jù)寫到引渡命令緩沖區(qū)中偏移等于引渡偏移的位置;
[0392]例如,當(dāng)前引渡偏移為43,則將第四數(shù)據(jù)寫到引渡命令緩沖區(qū)中偏移等于43的位置;
[0393]步驟d27:卡片根據(jù)第四數(shù)據(jù)的長度更新引渡偏移;
[0394]具體地,更新后的引渡偏移=當(dāng)前引渡偏移+第四數(shù)據(jù)的長度;
[0395]例如,當(dāng)前引渡偏移為43,第四數(shù)據(jù)的長度為18,則更新引渡偏移為61 ;
[0396]本實施例中,引渡收條數(shù)據(jù)具體為引渡命令緩沖區(qū)中,從偏移等于第十三偏移至偏移等于當(dāng)前引渡偏移之前的數(shù)據(jù),例如當(dāng)前引渡偏移為61,第十三偏移為35,則引渡收條數(shù)據(jù)具體為弓I渡命令緩沖區(qū)中的第三十五個字節(jié)至第六十個字節(jié)。
[0397]步驟141:卡片使用預(yù)設(shè)算法對引渡收條數(shù)據(jù)進(jìn)行簽名運算,得到第四簽名數(shù)據(jù);
[0398]本實施例中,預(yù)設(shè)算法具體為ALG_DES_MAC8_IS09797_1_M2_ALG3算法。
[0399]步驟142:卡片根據(jù)第四簽名數(shù)據(jù)和引渡收條數(shù)據(jù)組織引渡收條;
[0400]本實施例中,步驟142具體包括:
[0401]步驟d28:卡片記錄當(dāng)前引渡偏移為第十四偏移;
[0402]步驟d29:卡片根據(jù)第十一偏移更新引渡偏移;
[0403]本實施例中,更新后的引渡偏移=第i^一偏移+1 ;
[0404]例如,第十一偏移等于5,則更新引渡偏移為6 ;
[0405]步驟d30:卡片將第四簽名數(shù)據(jù)的長度寫到引渡命令緩沖區(qū)中偏移等于引渡偏移的位置,將第四簽名數(shù)據(jù)寫到引渡命令緩沖區(qū)中引渡偏移加I的位置;
[0406]例如,當(dāng)前引渡偏移為6,則將第四簽名數(shù)據(jù)的長度寫到引渡命令緩沖區(qū)中偏移等于6的位置,將第四簽名數(shù)據(jù)寫到引渡命令緩沖區(qū)中偏移等于7的位置;
[0407]步驟d31:卡片根據(jù)第四簽名數(shù)據(jù)的長度更新引渡偏移;
[0408]具體地,更新后的引渡偏移=當(dāng)前引渡偏移+第四簽名數(shù)據(jù)的長度+1 ;
[0409]例如,當(dāng)前引渡偏移為6,第四簽名數(shù)據(jù)的長度為8,則更新引渡偏移為15;
[0410]步驟d32:卡片根據(jù)引渡偏移和引渡收條數(shù)據(jù)的長度判斷引渡命令緩沖區(qū)是否會越界,是則卡片拋出異常,向上位機(jī)返回異常狀態(tài)碼,否則執(zhí)行步驟d33 ;
[0411]具體地,判斷引渡偏移+引渡收條數(shù)據(jù)的長度的值是否大于239,是則引渡命令緩沖區(qū)會越界,否則引渡命令緩沖區(qū)不會越界;
[0412]步驟d33:卡片將引渡收條數(shù)據(jù)寫到引渡命令緩沖區(qū)中偏移等于引渡偏移的位置;
[0413]本實施例中,步驟d33具體為,將引渡命令緩沖區(qū)中,從偏移等于第十三偏移至偏移等于第十四偏移之前的數(shù)據(jù)寫到引渡命令緩沖區(qū)中偏移等于引渡偏移的位置;
[0414]例如,當(dāng)前引渡偏移為15,則將引渡收條數(shù)據(jù)寫到引渡命令緩沖區(qū)中偏移等于15的位置;
[0415]步驟d34:卡片根據(jù)引渡收條數(shù)據(jù)的長度更新引渡偏移;
[0416]具體地,更新后的引渡偏移=當(dāng)前引渡偏移+引渡收條數(shù)據(jù)的長度;
[0417]例如,當(dāng)前引渡偏移為15,引渡收條數(shù)據(jù)的長度為26,則更新引渡偏移為41 ;
[0418]步驟d35:卡片計算引渡收條中的數(shù)據(jù)的長度;
[0419]本實施例中,引渡收條為長度+數(shù)據(jù)的格式,弓丨渡收條中的數(shù)據(jù)具體為弓I渡命令緩沖區(qū)中從偏移等于第i^一偏移之后至偏移等于當(dāng)前引渡偏移之前的數(shù)據(jù),引渡收條中的數(shù)據(jù)的長度=當(dāng)前引渡偏移-第十一偏移-1 ;
[0420]例如,第^^一偏移為5,當(dāng)前引渡偏移為41,則引渡收條中的數(shù)據(jù)的長度為35。
[0421]步驟d36:卡片將引渡收條中的數(shù)據(jù)的長度寫到引渡命令緩沖區(qū)中偏移等于第十一偏移的位置。
[0422]例如,第十一偏移為5,則將引渡收條中的數(shù)據(jù)的長度寫到引渡命令緩沖區(qū)中偏移等于5的位置。
[0423]步驟143:卡片向上位機(jī)返回引渡收條,并更新卡內(nèi)確認(rèn)計數(shù)器的計數(shù)值;
[0424]本實施例中,引渡收條具體為引渡命令緩沖區(qū)中,從偏移等于第十一偏移開始至偏移等于當(dāng)前引渡偏移之前的數(shù)據(jù);
[0425]具體地,更新卡內(nèi)確認(rèn)計數(shù)器的計數(shù)值為其當(dāng)前值加I。
[0426]步驟144:上位機(jī)接收卡片返回的收條,對接收到的收條進(jìn)行驗證,若驗證通過,則上位機(jī)判定卡片內(nèi)容管理操作執(zhí)行成功,若驗證未通過,則上位機(jī)判定卡片內(nèi)容管理操作執(zhí)行失敗。
[0427]具體地,步驟144包括:上位機(jī)接收卡片返回的收條;當(dāng)接收到的是加載收條時,上位機(jī)對加載收條進(jìn)行驗證,若驗證通過,則判定加載操作成功,若驗證未通過,則判定加載操作失敗,當(dāng)接收到的是安裝收條時,上位機(jī)對安裝收條進(jìn)行驗證,若驗證通過,則判定安裝操作成功,若驗證未通過,則判定安裝操作失敗,當(dāng)接收到的是刪除收條時,上位機(jī)對刪除收條進(jìn)行驗證,若驗證通過,則判定刪除操作成功,若驗證未通過,則判定刪除操作失敗,當(dāng)接收到的是引渡收條時,上位機(jī)對引渡收條進(jìn)行驗證,若驗證通過,則判定引渡操作成功,若驗證未通過,則判定引渡操作失?。?br> [0428]本實施例中,上位機(jī)根據(jù)接收到卡片返回的收條之前向卡片發(fā)送的指令的類型來確定收條的類型,若接收到卡片返回的收條之前向卡片發(fā)送的是加載命令,則確定接收到的收條為加載收條,若接收到卡片返回的收條之前向卡片發(fā)送的是安裝命令,則確定接收到的收條為安裝收條,若接收到的卡片返回的收條之前向卡片發(fā)送的是刪除命令,則確定接收到的收條是刪除收條,若接收到的卡片返回的收條之前向卡片發(fā)送的是引渡命令,則確定接收到的收條是引渡收條;
[0429]上位機(jī)對加載收條進(jìn)行驗證的方法為:采用與卡片計算加載收條相同的方法計算一個收條,判斷計算得到的收條與接收到的加載收條是否一致,是則驗證通過,否則驗證未通過;
[0430]上位機(jī)對安裝收條進(jìn)行驗證的方法為:采用與卡片計算安裝收條相同的方法計算一個收條,判斷計算得到的收條與接收到的安裝收條是否一致,是則驗證通過,否則驗證未通過;
[0431]上位機(jī)對刪除收條進(jìn)行驗證的方法為:采用與卡片計算刪除收條相同的方法計算一個收條,判斷計算得到的收條與接收到的刪除收條是否一致,是則驗證通過,否則驗證未通過;
[0432]上位機(jī)對引渡收條進(jìn)行驗證的方法為:采用與卡片計算引渡收條相同的方法計算一個收條,判斷計算得到的收條與接收到的引渡收條是否一致,是則驗證通過,否則驗證未通過。
[0433]實施例2
[0434]本發(fā)明實施例2提供一種收條驗證系統(tǒng),參見圖3,所述系統(tǒng)包括卡片2和上位機(jī)
4。其中,卡片2具體包括:
[0435]存儲模塊201,用于存儲加載文件標(biāo)識、安全域標(biāo)識、安全域標(biāo)識的索引和用戶數(shù)據(jù)。
[0436]接收模塊202,用于接收上位機(jī)4發(fā)送的APDU數(shù)據(jù)。
[0437]解析模塊203,用于對接收模塊202接收到的APDU數(shù)據(jù)進(jìn)行解析,以及判斷APDU數(shù)據(jù)的類型。
[0438]第一獲取模塊204,用于當(dāng)解析模塊203判定APDU數(shù)據(jù)為預(yù)加載命令時,獲取預(yù)加載命令中的加載文件標(biāo)識和安全域標(biāo)識,將從預(yù)加載命令中獲取到的加載文件標(biāo)識存儲到存儲模塊201中,確定從預(yù)加載命令中獲取的安全域標(biāo)識在卡內(nèi)的索引,以及將確定的安全域標(biāo)識在卡內(nèi)的索引存儲到存儲模塊201中。
[0439]加載收條組織模塊205,用于當(dāng)解析模塊203判定APDU數(shù)據(jù)為加載命令時組織加載收條;
[0440]參見圖4,加載收條組織模塊205,具體包括:
[0441]第一獲取單元2051,用于獲取存儲模塊201中存儲的加載文件標(biāo)識和安全域標(biāo)識的索引;
[0442]第一查找單元2052,用于根據(jù)第一獲取單元2051獲取到的安全域標(biāo)識的索引在存儲模塊201中查找相應(yīng)的安全域標(biāo)識;
[0443]第一數(shù)據(jù)組織單元2053,用于根據(jù)第一獲取單元2051獲取到的加載文件標(biāo)識和第一查找單元2052查找到的安全域標(biāo)識組織第一數(shù)據(jù);
[0444]第二獲取單元2054,用于獲取確認(rèn)計數(shù)器的計數(shù)值,以及獲取存儲模塊201中存儲的用戶數(shù)據(jù);
[0445]加載收條數(shù)據(jù)組織單元2055,用于當(dāng)?shù)诙@取單元2054獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且第二獲取單元2054獲取到的用戶數(shù)據(jù)不為空時,根據(jù)確認(rèn)計數(shù)器的計數(shù)值、用戶數(shù)據(jù)以及第一數(shù)據(jù)組織單元2053組織得到的第一數(shù)據(jù)組織加載收條數(shù)據(jù);
[0446]第一簽名單元2056,用于對加載收條數(shù)據(jù)組織單元2055組織得到的加載收條數(shù)據(jù)進(jìn)行簽名,得到第一簽名數(shù)據(jù);
[0447]加載收條組織單元2057,用于根據(jù)第一簽名單元2056得到的第一簽名數(shù)據(jù)和加載收條數(shù)據(jù)組織單元2055組織得到的加載收條數(shù)據(jù)組織加載收條。
[0448]進(jìn)一步地,加載收條組織模塊205還包括:第一創(chuàng)建單元2058 ;
[0449]第一創(chuàng)建單元2058,用于創(chuàng)建加載命令緩沖區(qū),以及存儲加載命令到加載命令緩沖區(qū);
[0450]相應(yīng)地,第一數(shù)據(jù)組織單元2053,具體用于:
[0451]初始化加載命令緩沖區(qū)的偏移為加載偏移,更新加載偏移等于加載命令緩沖區(qū)中的加載命令的數(shù)據(jù)域的起始位置的偏移,并記錄當(dāng)前加載偏移為第一偏移;
[0452]調(diào)用預(yù)設(shè)函數(shù)將獲取到的加載文件標(biāo)識寫到加載命令緩沖區(qū)中偏移等于加載偏移加I的位置,并將預(yù)設(shè)函數(shù)的返回值寫到加載命令緩沖區(qū)中偏移等于加載偏移的位置;
[0453]更新加載偏移為其當(dāng)前值加上加載文件標(biāo)識的長度再加1,調(diào)用預(yù)設(shè)函數(shù)將查找到的安全域標(biāo)識寫到加載命令緩沖區(qū)中偏移等于加載偏移加I的位置,并將預(yù)設(shè)函數(shù)的返回值寫到加載命令緩沖區(qū)中偏移等于加載偏移的位置;
[0454]更新加載偏移的長度為其當(dāng)前值加上安全域標(biāo)識的長度再加I ;
[0455]第一數(shù)據(jù)具體為加載命令緩沖區(qū)中偏移等于第一偏移至當(dāng)前加載偏移之間的數(shù)據(jù);
[0456]加載收條數(shù)據(jù)組織單元2055,具體用于,當(dāng)?shù)诙@取單元2054獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且第二獲取單元2054獲取到的用戶數(shù)據(jù)不為空時:
[0457]記錄當(dāng)前加載偏移為第二偏移,將確認(rèn)計數(shù)器的計數(shù)值的長度寫到加載命令緩沖區(qū)中偏移等于加載偏移的位置,將確認(rèn)計數(shù)器的計數(shù)值寫到加載命令緩沖區(qū)中偏移等于加載偏移加I的位置;
[0458]更新加載偏移為其當(dāng)前值加上確認(rèn)計數(shù)器的計數(shù)值的長度再加1,將用戶數(shù)據(jù)的長度寫到加載命令緩沖區(qū)中偏移等于加載偏移的位置,將用戶數(shù)據(jù)寫到加載命令緩沖區(qū)中偏移等于加載偏移加I的位置;
[0459]更新加載偏移為其當(dāng)前值加上用戶數(shù)據(jù)的長度再加1,將第一數(shù)據(jù)寫到加載命令緩沖區(qū)中偏移等于加載偏移的位置;
[0460]更新加載偏移為其當(dāng)前值加上第一數(shù)據(jù)的長度;
[0461]加載收條數(shù)據(jù)具體為加載命令緩沖區(qū)中偏移等于第二偏移至當(dāng)前加載偏移之間的數(shù)據(jù);
[0462]加載收條組織單元2057,具體用于:
[0463]記錄當(dāng)前加載偏移為第三偏移,更新加載偏移等于第一偏移加1,將第一簽名數(shù)據(jù)的長度寫到加載命令緩沖區(qū)中偏移等于加載偏移的位置,將第一簽名數(shù)據(jù)寫到加載命令緩沖區(qū)中偏移等于加載偏移加I的位置;
[0464]更新加載偏移為其當(dāng)前值加上第一簽名數(shù)據(jù)的長度再加1,將加載收條數(shù)據(jù)寫到加載命令緩沖區(qū)中偏移等于加載偏移的位置;
[0465]更新加載偏移為其當(dāng)前值加上加載收條數(shù)據(jù)的長度,計算加載收條中數(shù)據(jù)的長度,將計算結(jié)果寫到加載命令緩沖區(qū)中偏移等于第一偏移的位置;
[0466]加載收條具體為加載命令緩沖區(qū)中偏移等于第一偏移至加載偏移之間的數(shù)據(jù)。
[0467]安裝收條組織模塊206,用于當(dāng)解析模塊203判定APDU數(shù)據(jù)為安裝命令時組織安裝收條;
[0468]參見圖5,安裝收條組織模塊206,具體包括:
[0469]第二數(shù)據(jù)組織單元2061,用于根據(jù)安裝命令中的可執(zhí)行加載文件標(biāo)識和應(yīng)用標(biāo)識組織第二數(shù)據(jù);
[0470]第三獲取單元2062,用于獲取確認(rèn)計數(shù)器的計數(shù)值,以及獲取存儲模塊201中存儲的用戶數(shù)據(jù);
[0471]安裝收條數(shù)據(jù)組織單元2063,用于當(dāng)?shù)谌@取單元2062獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且第三獲取單元2062獲取到的用戶數(shù)據(jù)不為空時,根據(jù)確認(rèn)計數(shù)器的計數(shù)值、用戶數(shù)據(jù)以及第二數(shù)據(jù)組織單元2061組織得到的第二數(shù)據(jù)組織安裝收條數(shù)據(jù);
[0472]第二簽名單元2064,用于對安裝收條數(shù)據(jù)組織單元2063組織得到的安裝收條數(shù)據(jù)進(jìn)行簽名,得到第二簽名數(shù)據(jù);
[0473]安裝收條組織單元2065,用于根據(jù)第二簽名單元2064得到的第二簽名數(shù)據(jù)和安裝收條數(shù)據(jù)組織單元2063組織得到的安裝收條數(shù)據(jù)組織安裝收條。
[0474]安裝收條組織模塊206還包括第二創(chuàng)建單元2066 ;
[0475]第二創(chuàng)建單元2066,用于創(chuàng)建安裝命令緩沖區(qū),以及存儲安裝命令到安裝命令緩沖區(qū);
[0476]相應(yīng)地,第二數(shù)據(jù)組織單元2061,具體用于:
[0477]初始化安裝命令緩沖區(qū)的偏移為安裝偏移,更新安裝偏移等于安裝命令緩沖區(qū)中的安裝命令的數(shù)據(jù)域的起始位置的偏移,并記錄當(dāng)前安裝偏移為第四偏移,讀取安裝命令緩沖區(qū)中偏移等于安裝偏移的位置的數(shù)據(jù),得到可執(zhí)行加載文件標(biāo)識的長度;
[0478]更新安裝偏移為其當(dāng)前值加1,讀取安裝命令緩沖區(qū)中從偏移等于安裝偏移的位置開始,長度等于可執(zhí)行加載文件標(biāo)識的長度的數(shù)據(jù),得到可執(zhí)行加載文件標(biāo)識;
[0479]更新安裝偏移為其當(dāng)前值加上可執(zhí)行加載文件標(biāo)識的長度,記錄當(dāng)前安裝偏移為第五偏移,讀取安裝命令緩沖區(qū)中偏移等于安裝偏移的位置的數(shù)據(jù),得到可執(zhí)行模塊標(biāo)識的長度;
[0480]更新安裝偏移為其當(dāng)前值加1,讀取安裝命令緩沖區(qū)中從偏移等于安裝偏移的位置開始,長度等于可執(zhí)行模塊標(biāo)識的長度的數(shù)據(jù),得到可執(zhí)行模塊標(biāo)識;
[0481]更新安裝偏移為其當(dāng)前值加上可執(zhí)行模塊標(biāo)識的長度,讀取安裝命令緩沖區(qū)中偏移等于安裝偏移的位置的數(shù)據(jù),得到安裝應(yīng)用標(biāo)識的長度;
[0482]更新安裝偏移為其當(dāng)前值加1,讀取安裝命令緩沖區(qū)中從偏移等于安裝偏移的位置開始,長度等于安裝應(yīng)用標(biāo)識的長度的數(shù)據(jù),得到安裝應(yīng)用標(biāo)識;
[0483]更新安裝偏移等于第五偏移,將安裝應(yīng)用標(biāo)識的長度寫到安裝命令緩沖區(qū)中偏移等于安裝偏移的位置;
[0484]更新安裝偏移為其當(dāng)前值加1,將安裝應(yīng)用標(biāo)識寫到安裝命令緩沖區(qū)中偏移等于安裝偏移的位置;
[0485]更新安裝偏移為其當(dāng)前值加上安裝應(yīng)用標(biāo)識的長度;
[0486]第二數(shù)據(jù)具體為安裝命令緩沖區(qū)中偏移等于第四偏移至安裝偏移之間的數(shù)據(jù);
[0487]安裝收條數(shù)據(jù)組織單元2063,具體用于,當(dāng)?shù)谌@取單元2062獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且第三獲取單元2062獲取到的用戶數(shù)據(jù)不為空時:
[0488]記錄當(dāng)前安裝偏移為第六偏移,將確認(rèn)計數(shù)器的計數(shù)值的長度寫到安裝命令緩沖區(qū)中偏移等于安裝偏移的位置,將確認(rèn)計數(shù)器的計數(shù)值寫到安裝命令緩沖區(qū)中偏移等于安裝偏移加I的位置;
[0489]更新安裝偏移為其當(dāng)前值加上確認(rèn)計數(shù)器的計數(shù)值的長度再加1,將用戶數(shù)據(jù)的長度寫到安裝命令緩沖區(qū)中偏移等于安裝偏移的位置,將用戶數(shù)據(jù)寫到安裝命令緩沖區(qū)中偏移等于安裝偏移加I的位置;
[0490]更新安裝偏移為其當(dāng)前值加上用戶數(shù)據(jù)的長度再加1,將第二數(shù)據(jù)寫到安裝命令緩沖區(qū)中偏移等于安裝偏移的位置;
[0491]更新安裝偏移為其當(dāng)前值加上第二數(shù)據(jù)的長度;
[0492]安裝收條數(shù)據(jù)具體為安裝命令緩沖區(qū)中偏移等于第六偏移至安裝偏移之間的數(shù)據(jù);
[0493]安裝收條組織單元2065,具體用于:
[0494]記錄當(dāng)前安裝偏移為第七偏移,更新安裝偏移等于第四偏移加1,將第二簽名數(shù)據(jù)的長度寫到安裝命令緩沖區(qū)中偏移等于安裝偏移的位置,將第二簽名數(shù)據(jù)寫到安裝命令緩沖區(qū)中偏移等于安裝偏移加I的位置;
[0495]更新安裝偏移為其當(dāng)前值加上第二簽名數(shù)據(jù)的長度再加1,將安裝收條數(shù)據(jù)寫到安裝命令緩沖區(qū)中偏移等于安裝偏移的位置;
[0496]更新安裝偏移為其當(dāng)前值加上安裝收條數(shù)據(jù)的長度,計算安裝收條中數(shù)據(jù)的長度,將計算結(jié)果寫到安裝命令緩沖區(qū)中偏移等于第四偏移的位置;
[0497]安裝收條具體為安裝命令緩沖區(qū)中偏移等于第四偏移至安裝偏移之間的數(shù)據(jù)。
[0498]刪除收條組織模塊207,用于當(dāng)解析模塊203判定APDU數(shù)據(jù)為刪除命令時組織刪除收條;
[0499]參見圖6,刪除收條組織模塊207,具體包括:
[0500]第三數(shù)據(jù)組織單元2071,用于根據(jù)刪除命令中的應(yīng)用標(biāo)識組織第三數(shù)據(jù);
[0501]第四獲取單元2072,用于獲取確認(rèn)計數(shù)器的計數(shù)值,以及獲取存儲模塊201中存儲的用戶數(shù)據(jù);
[0502]刪除收條數(shù)據(jù)組織單元2073,用于當(dāng)?shù)谒墨@取單元2072獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且第四獲取單元2072獲取到的用戶數(shù)據(jù)不為空時,根據(jù)確認(rèn)計數(shù)器的計數(shù)值、用戶數(shù)據(jù)以及第三數(shù)據(jù)組織單元2071組織得到的第三數(shù)據(jù)組織刪除收條數(shù)據(jù);
[0503]第三簽名單元2074,用于對刪除收條數(shù)據(jù)組織單元2073組織得到的刪除收條數(shù)據(jù)進(jìn)行簽名,得到第三簽名數(shù)據(jù);
[0504]刪除收條組織單元2075,用于根據(jù)第三簽名單元2074得到的第三簽名數(shù)據(jù)和刪除收條數(shù)據(jù)組織單元2073組織得到的刪除收條數(shù)據(jù)組織刪除收條。
[0505]進(jìn)一步地,刪除收條組織模塊207還包括第三創(chuàng)建單元2076 ;
[0506]第三創(chuàng)建單元2076,用于創(chuàng)建刪除命令緩沖區(qū),存儲刪除命令到刪除命令緩沖區(qū);
[0507]第三數(shù)據(jù)組織單元2071,具體用于:
[0508]初始化刪除命令緩沖區(qū)的偏移為刪除偏移,更新刪除偏移等于刪除命令緩沖區(qū)中的刪除命令的數(shù)據(jù)域的起始位置的偏移,并記錄當(dāng)前刪除偏移為第八偏移,讀取刪除命令緩沖區(qū)中偏移等于刪除偏移的位置的數(shù)據(jù),得到刪除應(yīng)用標(biāo)識的長度;
[0509]更新刪除偏移為其當(dāng)前值加1,讀取刪除命令緩沖區(qū)中從偏移等于刪除偏移的位置開始,長度等于刪除應(yīng)用標(biāo)識的長度的數(shù)據(jù),得到刪除應(yīng)用標(biāo)識;
[0510]更新刪除偏移為其當(dāng)前值加上刪除應(yīng)用標(biāo)識的長度;
[0511]第三數(shù)據(jù)具體為刪除命令緩沖區(qū)中偏移等于第八偏移至刪除偏移之間的數(shù)據(jù);
[0512]刪除收條數(shù)據(jù)組織單元2075,具體用于,當(dāng)?shù)谒墨@取單元2072獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且第四獲取單元2072獲取到的用戶數(shù)據(jù)不為空時:
[0513]記錄當(dāng)前刪除偏移為第九偏移,將確認(rèn)計數(shù)器的計數(shù)值的長度寫到刪除命令緩沖區(qū)中偏移等于刪除偏移的位置,將確認(rèn)計數(shù)器的計數(shù)值寫到刪除命令緩沖區(qū)中偏移等于刪除偏移加I的位置;
[0514]更新刪除偏移為其當(dāng)前值加上確認(rèn)計數(shù)器的計數(shù)值的長度再加1,將用戶數(shù)據(jù)的長度寫到刪除命令緩沖區(qū)中偏移等于刪除偏移的位置,將用戶數(shù)據(jù)寫到刪除命令緩沖區(qū)中偏移等于刪除偏移加I的位置;
[0515]更新刪除偏移為其當(dāng)前值加上用戶數(shù)據(jù)的長度再加1,將第三數(shù)據(jù)寫到刪除命令緩沖區(qū)中偏移等于刪除偏移的位置;
[0516]更新刪除偏移為其當(dāng)前值加上第三數(shù)據(jù)的長度;
[0517]刪除收條數(shù)據(jù)具體為刪除命令緩沖區(qū)中偏移等于第九偏移至刪除偏移之間的數(shù)據(jù);
[0518]刪除收條組織單元2075,具體用于:
[0519]記錄當(dāng)前刪除偏移為第十偏移,更新刪除偏移等于第八偏移加1,將第三簽名數(shù)據(jù)的長度寫到刪除命令緩沖區(qū)中偏移等于刪除偏移的位置,將第三簽名數(shù)據(jù)寫到刪除命令緩沖區(qū)中偏移等于刪除偏移加I的位置;
[0520]更新刪除偏移為其當(dāng)前值加上第三簽名數(shù)據(jù)的長度再加1,將刪除收條數(shù)據(jù)寫到刪除命令緩沖區(qū)中偏移等于刪除偏移的位置;
[0521]更新刪除偏移為其當(dāng)前值加上刪除收條數(shù)據(jù)的長度,計算刪除收條中數(shù)據(jù)的長度,將計算結(jié)果寫到刪除命令緩沖區(qū)中偏移等于第八偏移的位置;
[0522]刪除收條具體為刪除命令緩沖區(qū)中偏移等于第八偏移至刪除偏移之間的數(shù)據(jù)。
[0523]引渡收條組織模塊208,用于當(dāng)解析模塊203判定APDU數(shù)據(jù)為引渡命令時組織引渡收條;
[0524]參見圖7,引渡收條組織模塊208,具體包括:
[0525]第二查找單元2081,用于在存儲模塊201中查找與引渡命令中的應(yīng)用標(biāo)識相對應(yīng)的應(yīng)用的原安全域標(biāo)識;
[0526]第四數(shù)據(jù)組織單元2082,用于根據(jù)第二查找單元2081查找到的原安全域標(biāo)識,以及引渡命令中的應(yīng)用標(biāo)識和新安全域標(biāo)識,組織第四數(shù)據(jù);
[0527]第五獲取單元2083,用于獲取確認(rèn)計數(shù)器的計數(shù)值,以及獲取存儲模塊201中存儲的用戶數(shù)據(jù);
[0528]引渡收條數(shù)據(jù)組織單元2084,用于當(dāng)?shù)谖瀚@取單元2083獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且第五獲取單元2083獲取到的用戶數(shù)據(jù)不為空時,根據(jù)確認(rèn)計數(shù)器的計數(shù)值、用戶數(shù)據(jù)以及第四數(shù)據(jù)組織單元2082組織得到的第四數(shù)據(jù)組織引渡收條數(shù)據(jù);
[0529]第四簽名單元2085,用于對引渡收條數(shù)據(jù)組織單元2084組織得到的引渡收條數(shù)據(jù)進(jìn)行簽名,得到第四簽名數(shù)據(jù);
[0530]引渡收條組織單元2086,用于根據(jù)第四簽名單元2085得到的第四簽名數(shù)據(jù)和引渡收條數(shù)據(jù)組織單元2084組織得到的引渡收條數(shù)據(jù)組織引渡收條。
[0531]進(jìn)一步地,引渡收條組織模塊208還包括:第四創(chuàng)建單元2087 ;
[0532]第四創(chuàng)建單元2087,用于創(chuàng)建引渡命令緩沖區(qū),存儲引渡命令到引渡命令緩沖區(qū);
[0533]第二查找單元2081,具體用于:
[0534]初始化引渡命令緩沖區(qū)的偏移為引渡偏移,更新引渡偏移等于引渡命令緩沖區(qū)中的引渡命令的數(shù)據(jù)域的起始位置的偏移,并記錄當(dāng)前引渡偏移為第十一偏移,讀取引渡命令緩沖區(qū)中偏移等于引渡偏移的位置的數(shù)據(jù),得到新安全域標(biāo)識的長度;
[0535]更新引渡偏移為其當(dāng)前值加1,讀取引渡命令緩沖區(qū)中從偏移等于引渡偏移的位置開始,長度等于新安全域標(biāo)識的長度的數(shù)據(jù),得到新安全域標(biāo)識;
[0536]更新引渡偏移為其當(dāng)前值加上新安全域標(biāo)識的長度,讀取引渡命令緩沖區(qū)中偏移等于引渡偏移的位置的數(shù)據(jù),得到引渡應(yīng)用標(biāo)識的長度;
[0537]更新引渡偏移為其當(dāng)前值加1,讀取引渡命令緩沖區(qū)中從偏移等于引渡偏移的位置開始,長度等于引渡應(yīng)用標(biāo)識的長度的數(shù)據(jù),得到引渡應(yīng)用標(biāo)識,更新引渡偏移為其當(dāng)前值加上引渡應(yīng)用標(biāo)識的長度;
[0538]在存儲模塊中查找與引渡應(yīng)用標(biāo)識對應(yīng)的應(yīng)用的原安全域標(biāo)識;
[0539]第四數(shù)據(jù)組織單元2082,具體用于:
[0540]記錄當(dāng)前引渡偏移為第十二偏移,將原安全域標(biāo)識的長度寫到引渡命令緩沖區(qū)中偏移等于引渡偏移的位置,將原安全域標(biāo)識寫到引渡命令緩沖區(qū)中偏移等于引渡偏移加I的位置;
[0541]更新引渡偏移為其當(dāng)前值加上原安全域標(biāo)識的長度再加1,將引渡應(yīng)用標(biāo)識的長度寫到引渡命令緩沖區(qū)中偏移等于引渡偏移的位置,將引渡應(yīng)用標(biāo)識寫到引渡命令緩沖區(qū)中偏移等于引渡偏移加I的位置;
[0542]更新引渡偏移為其當(dāng)前值加上引渡應(yīng)用標(biāo)識的長度再加1,將新安全域標(biāo)識的長度寫到引渡命令緩沖區(qū)中偏移等于引渡偏移的位置,將新安全域標(biāo)識寫到引渡命令緩沖區(qū)中偏移等于引渡偏移加I的位置,更新引渡偏移為其當(dāng)前值加上新安全域標(biāo)識的長度再加I;
[0543]第四數(shù)據(jù)具體為引渡命令緩沖區(qū)中偏移等于第十二偏移至引渡偏移之間的數(shù)據(jù);
[0544]引渡收條數(shù)據(jù)組織單元2084,具體用于,當(dāng)?shù)谖瀚@取單元2083獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且第五獲取單元2083獲取到的用戶數(shù)據(jù)不為空時:
[0545]記錄當(dāng)前引渡偏移為第十三偏移,將確認(rèn)計數(shù)器的計數(shù)值的長度寫到引渡命令緩沖區(qū)中偏移等于引渡偏移的位置,將確認(rèn)計數(shù)器的計數(shù)值寫到引渡命令緩沖區(qū)中偏移等于引渡偏移加I的位置;
[0546]更新引渡偏移為其當(dāng)前值加上確認(rèn)計數(shù)器的計數(shù)值的長度再加1,將用戶數(shù)據(jù)的長度寫到引渡命令緩沖區(qū)中偏移等于引渡偏移的位置,將用戶數(shù)據(jù)寫到引渡命令緩沖區(qū)中偏移等于引渡偏移加I的位置;
[0547]更新引渡偏移為其當(dāng)前值加上用戶數(shù)據(jù)的長度再加1,將第四數(shù)據(jù)寫到引渡命令緩沖區(qū)中偏移等于引渡偏移的位置,更新引渡偏移為其當(dāng)前值加上第四數(shù)據(jù)的長度;
[0548]引渡收條數(shù)據(jù)具體為引渡命令緩沖區(qū)中偏移等于第十三偏移至引渡偏移之間的數(shù)據(jù);
[0549]引渡收條組織單元2086,具體用于:
[0550]記錄當(dāng)前引渡偏移為第十四偏移,更新引渡偏移等于第十一偏移加1,將簽名數(shù)據(jù)的長度寫到引渡命令緩沖區(qū)中偏移等于引渡偏移的位置,將簽名數(shù)據(jù)寫到引渡命令緩沖區(qū)中偏移等于引渡偏移加I的位置;
[0551]更新引渡偏移為其當(dāng)前值加上簽名數(shù)據(jù)的長度再加1,將引渡收條數(shù)據(jù)寫到引渡命令緩沖區(qū)中偏移等于引渡偏移的位置;
[0552]更新引渡偏移為其當(dāng)前值加上引渡收條數(shù)據(jù)的長度,計算引渡收條中數(shù)據(jù)的長度,將計算結(jié)果寫到引渡命令緩沖區(qū)中偏移等于第十一偏移的位置;
[0553]引渡收條具體為引渡命令緩沖區(qū)中偏移等于第十一偏移至引渡偏移之間的數(shù)據(jù)。
[0554]發(fā)送模塊209,用于向上位機(jī)4返回加載收條組織模塊205組織得到的加載收條,向上位機(jī)4返回安裝收條組織模塊206組織得到的安裝收條,向上位機(jī)4返回刪除收條組織模塊207組織得到的刪除收條,向上位機(jī)4返回引渡收條組織模塊208組織得到的引渡收條,以及向上位機(jī)4返回預(yù)設(shè)狀態(tài)碼和異常狀態(tài)碼。
[0555]更新模塊210,用于更新卡片內(nèi)的確認(rèn)計數(shù)器的計數(shù)值。
[0556]進(jìn)一步地,卡片2還可以包括第二獲取模塊211:
[0557]第二獲取模塊211,用于當(dāng)解析模塊203判定APDU數(shù)據(jù)為用戶數(shù)據(jù)命令時獲取用戶數(shù)據(jù)命令中的用戶數(shù)據(jù),存儲到存儲模塊201中。
[0558]上位機(jī)4具體包括:
[0559]通信模塊401,用于向卡片2發(fā)送APDU數(shù)據(jù),以及用于接收卡片2返回的收條;
[0560]驗證模塊402,用于對通信模塊401接收到的收條進(jìn)行驗證。
[0561]以上所述的實施例只是本發(fā)明較優(yōu)選的【具體實施方式】,本領(lǐng)域的技術(shù)人員在本發(fā)明技術(shù)方案范圍內(nèi)進(jìn)行的通常變化和替換都應(yīng)包含在本發(fā)明的保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種收條驗證系統(tǒng),包括卡片和上位機(jī),其特征在于,所述卡片包括: 存儲模塊,用于存儲加載文件標(biāo)識、安全域標(biāo)識、安全域標(biāo)識的索引和用戶數(shù)據(jù); 接收模塊,用于接收上位機(jī)發(fā)送的APDU數(shù)據(jù); 解析模塊,用于對所述接收模塊接收到的APDU數(shù)據(jù)進(jìn)行解析,以及判斷所述APDU數(shù)據(jù)的類型; 第一獲取模塊,用于當(dāng)所述解析模塊判定所述APDU數(shù)據(jù)為預(yù)加載命令時,獲取所述預(yù)加載命令中的加載文件標(biāo)識和安全域標(biāo)識,將從所述預(yù)加載命令中獲取到的加載文件標(biāo)識存儲到所述存儲模塊中,確定從所述預(yù)加載命令中獲取的安全域標(biāo)識在卡內(nèi)的索引,以及將確定的安全域標(biāo)識的索引存儲到所述存儲模塊中; 加載收條組織模塊,用于當(dāng)所述解析模塊判定所述APDU數(shù)據(jù)為加載命令時組織加載收條; 安裝收條組織模塊,用于當(dāng)所述解析模塊判定所述APDU數(shù)據(jù)為安裝命令時組織安裝收條; 刪除收條組織模塊,用于當(dāng)所述解析模塊判定所述APDU數(shù)據(jù)為刪除命令時組織刪除收條; 引渡收條組織模塊,用于當(dāng)所述解析模塊判定所述APDU數(shù)據(jù)為引渡命令時組織引渡收條; 發(fā)送模塊,用于向所述上位機(jī)返回所述加載收條組織模塊組織得到的加載收條,向所述上位機(jī)返回所述安裝收條組織模塊組織得到的安裝收條,向所述上位機(jī)返回所述刪除收條組織模塊組織得到的刪除收條,向所述上位機(jī)返回所述引渡收條組織模塊組織得到的引渡收條,以及向所述上位機(jī)返回預(yù)設(shè)狀態(tài)碼和異常狀態(tài)碼; 更新模塊,用于更新所述卡片內(nèi)的確認(rèn)計數(shù)器的計數(shù)值; 其中,所述加載收條組織模塊具體包括: 第一獲取單元,用于獲取所述存儲模塊中存儲的加載文件標(biāo)識和安全域標(biāo)識的索引;第一查找單元,用于根據(jù)所述第一獲取單元獲取到的安全域標(biāo)識的索引在所述存儲模塊中查找相應(yīng)的安全域標(biāo)識; 第一數(shù)據(jù)組織單元,用于根據(jù)所述第一獲取單元獲取到的加載文件標(biāo)識和所述第一查找單元查找到的安全域標(biāo)識組織第一數(shù)據(jù); 第二獲取單元,用于獲取所述確認(rèn)計數(shù)器的計數(shù)值,以及獲取所述存儲模塊中存儲的用戶數(shù)據(jù); 加載收條數(shù)據(jù)組織單元,用于當(dāng)所述第二獲取單元獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且所述第二獲取單元獲取到的用戶數(shù)據(jù)不為空時,根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第一數(shù)據(jù)組織單元組織得到的第一數(shù)據(jù)組織加載收條數(shù)據(jù); 第一簽名單元,用于對所述加載收條數(shù)據(jù)組織單元組織得到的加載收條數(shù)據(jù)進(jìn)行簽名,得到第一簽名數(shù)據(jù); 加載收條組織單元,用于根據(jù)所述第一簽名單元得到的第一簽名數(shù)據(jù)和所述加載收條數(shù)據(jù)組織單元組織得到的加載收條數(shù)據(jù)組織加載收條; 所述安裝收條組織模塊具體包括: 第二數(shù)據(jù)組織單元,用于根據(jù)所述安裝命令中的可執(zhí)行加載文件標(biāo)識和應(yīng)用標(biāo)識組織第二數(shù)據(jù); 第三獲取單元,用于獲取所述確認(rèn)計數(shù)器的計數(shù)值,以及獲取所述存儲模塊中存儲的用戶數(shù)據(jù); 安裝收條數(shù)據(jù)組織單元,用于當(dāng)所述第三獲取單元獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且所述第三獲取單元獲取到的用戶數(shù)據(jù)不為空時,根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第二數(shù)據(jù)組織單元組織得到的第二數(shù)據(jù)組織安裝收條數(shù)據(jù); 第二簽名單元,用于對所述安裝收條數(shù)據(jù)組織單元組織得到的安裝收條數(shù)據(jù)進(jìn)行簽名,得到第二簽名數(shù)據(jù); 安裝收條組織單元,用于根據(jù)所述第二簽名單元得到的第二簽名數(shù)據(jù)和所述安裝收條數(shù)據(jù)組織單元組織得到的安裝收條數(shù)據(jù)組織安裝收條; 所述刪除收條組織模塊具體包括: 第三數(shù)據(jù)組織單元,用于根據(jù)所述刪除命令中的應(yīng)用標(biāo)識組織第三數(shù)據(jù); 第四獲取單元,用于獲取所述確認(rèn)計數(shù)器的計數(shù)值,以及獲取所述存儲模塊中存儲的用戶數(shù)據(jù); 刪除收條數(shù)據(jù)組織單元,用于當(dāng)所述第四獲取單元獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且所述第四獲取單元獲取到的用戶數(shù)據(jù)不為空時,根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第三數(shù)據(jù)組織單元組織得到的第三數(shù)據(jù)組織刪除收條數(shù)據(jù); 第三簽名單元,用于對所述刪除收條數(shù)據(jù)組織單元組織得到的刪除收條數(shù)據(jù)進(jìn)行簽名,得到第三簽名數(shù)據(jù); 刪除收條組織單元,用于根據(jù)所述第三簽名單元得到的第三簽名數(shù)據(jù)和所述刪除收條數(shù)據(jù)組織單元組織得到的刪除收條數(shù)據(jù)組織刪除收條; 所述引渡收條組織模塊具體包括: 第二查找單元,用于在所述存儲模塊中查找與所述引渡命令中的應(yīng)用標(biāo)識相對應(yīng)的應(yīng)用的原安全域標(biāo)識; 第四數(shù)據(jù)組織單元,用于根據(jù)所述第二查找單元查找到的原安全域標(biāo)識,以及所述引渡命令中的應(yīng)用標(biāo)識和新安全域標(biāo)識,組織第四數(shù)據(jù); 第五獲取單元,用于獲取所述確認(rèn)計數(shù)器的計數(shù)值,以及獲取所述存儲模塊中存儲的用戶數(shù)據(jù); 引渡收條數(shù)據(jù)組織單元,用于當(dāng)所述第五獲取單元獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且所述第五獲取單元獲取到的用戶數(shù)據(jù)不為空時,根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第四數(shù)據(jù)組織單元組織得到的第四數(shù)據(jù)組織引渡收條數(shù)據(jù); 第四簽名單元,用于對所述引渡收條數(shù)據(jù)組織單元組織得到的引渡收條數(shù)據(jù)進(jìn)行簽名,得到第四簽名數(shù)據(jù); 引渡收條組織單元,用于根據(jù)所述第四簽名單元得到的第四簽名數(shù)據(jù)和所述引渡收條數(shù)據(jù)組織單元組織得到的引渡收條數(shù)據(jù)組織引渡收條; 所述上位機(jī)包括: 通信模塊,用于接收所述卡片返回的收條; 驗證模塊,用于對所述通信模塊接收到的收條進(jìn)行驗證。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述卡片還包括第二獲取模塊; 所述第二獲取模塊,用于當(dāng)所述解析模塊判定所述APDU數(shù)據(jù)為用戶數(shù)據(jù)命令時獲取所述用戶數(shù)據(jù)命令中的用戶數(shù)據(jù),存儲到所述存儲模塊中。
3.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述加載收條組織模塊還包括第一創(chuàng)建單元; 所述第一創(chuàng)建單元,用于創(chuàng)建加載命令緩沖區(qū),以及存儲所述加載命令到所述加載命令緩沖區(qū); 所述第一數(shù)據(jù)組織單元,具體用于:初始化所述加載命令緩沖區(qū)的偏移為加載偏移,更新所述加載偏移等于所述加載命令緩沖區(qū)中的加載命令的數(shù)據(jù)域的起始位置的偏移,并記錄當(dāng)前所述加載偏移為第一偏移;調(diào)用預(yù)設(shè)函數(shù)將獲取到的加載文件標(biāo)識寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移加I的位置,并將所述預(yù)設(shè)函數(shù)的返回值寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移的位置; 更新所述加載偏移為其當(dāng)前值加上所述加載文件標(biāo)識的長度再加1,調(diào)用所述預(yù)設(shè)函數(shù)將查找到的安全域標(biāo)識寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移加I的位置,并將所述預(yù)設(shè)函數(shù)的返回值寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移的位置;更新所述加載偏移的長度為其當(dāng)前值加上所述安全域標(biāo)識的長度再加I; 所述第一數(shù)據(jù)具體為所述加載命令緩沖區(qū)中偏移等于所述第一偏移至當(dāng)前所述加載偏移之間的數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的系統(tǒng),其特征在于,所述加載收條數(shù)據(jù)組織單元,具體用于,當(dāng)所述第二獲取單元獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且所述第二獲取單元獲取到的用戶數(shù)據(jù)不為空時: 記錄當(dāng)前所述加載偏移為第二偏移,將所述確認(rèn)計數(shù)器的計數(shù)值的長度寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移的位置,將所述確認(rèn)計數(shù)器的計數(shù)值寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移加I的位置; 更新所述加載偏移為其當(dāng)前值加上所述確認(rèn)計數(shù)器的計數(shù)值的長度再加1,將所述用戶數(shù)據(jù)的長度寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移的位置,將所述用戶數(shù)據(jù)寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移加I的位置; 更新所述加載偏移為其當(dāng)前值加上所述用戶數(shù)據(jù)的長度再加1,將所述第一數(shù)據(jù)寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移的位置; 更新所述加載偏移為其當(dāng)前值加上所述第一數(shù)據(jù)的長度; 所述加載收條數(shù)據(jù)具體為所述加載命令緩沖區(qū)中偏移等于所述第二偏移至當(dāng)前所述加載偏移之間的數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的系統(tǒng),其特征在于,所述加載收條組織單元具體用于: 記錄當(dāng)前所述加載偏移為第三偏移,更新所述加載偏移等于所述第一偏移加1,將所述第一簽名數(shù)據(jù)的長度寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移的位置,將所述第一簽名數(shù)據(jù)寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移加I的位置; 更新所述加載偏移為其當(dāng)前值加上所述第一簽名數(shù)據(jù)的長度再加1,將所述加載收條數(shù)據(jù)寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移的位置; 更新所述加載偏移為其當(dāng)前值加上所述加載收條數(shù)據(jù)的長度,計算加載收條中數(shù)據(jù)的長度,將計算結(jié)果寫到所述加載命令緩沖區(qū)中偏移等于所述第一偏移的位置; 所述加載收條具體為所述加載命令緩沖區(qū)中偏移等于所述第一偏移至所述加載偏移之間的數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述安裝收條組織模塊還包括第二創(chuàng)建單元; 所述第二創(chuàng)建單元,用于創(chuàng)建安裝命令緩沖區(qū),以及存儲所述安裝命令到所述安裝命令緩沖區(qū); 所述第二數(shù)據(jù)組織單元,具體用于: 初始化所述安裝命令緩沖區(qū)的偏移為安裝偏移,更新所述安裝偏移等于所述安裝命令緩沖區(qū)中的安裝命令的數(shù)據(jù)域的起始位置的偏移,并記錄當(dāng)前所述安裝偏移為第四偏移,讀取所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置的數(shù)據(jù),得到可執(zhí)行加載文件標(biāo)識的長度; 更新所述安裝偏移為其當(dāng)前值加1,讀取所述安裝命令緩沖區(qū)中從偏移等于所述安裝偏移的位置開始,長度等于所述可執(zhí)行加載文件標(biāo)識的長度的數(shù)據(jù),得到可執(zhí)行加載文件標(biāo)識; 更新所述安裝偏移為其當(dāng)前值加上所述可執(zhí)行加載文件標(biāo)識的長度,記錄當(dāng)前所述安裝偏移為第五偏移,讀取所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置的數(shù)據(jù),得到可執(zhí)行模塊標(biāo)識的長度; 更新所述安裝偏移為其當(dāng)前值加1,讀取所述安裝命令緩沖區(qū)中從偏移等于所述安裝偏移的位置開始,長度等于所述可執(zhí)行模塊標(biāo)識的長度的數(shù)據(jù),得到可執(zhí)行模塊標(biāo)識;更新所述安裝偏移為其當(dāng)前值加上所述可執(zhí)行模塊標(biāo)識的長度,讀取所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置的數(shù)據(jù),得到安裝應(yīng)用標(biāo)識的長度; 更新所述安裝偏移為其當(dāng)前值加1,讀取所述安裝命令緩沖區(qū)中從偏移等于所述安裝偏移的位置開始,長度等于所述安裝應(yīng)用標(biāo)識的長度的數(shù)據(jù),得到安裝應(yīng)用標(biāo)識; 更新所述安裝偏移等于第五偏移,將所述安裝應(yīng)用標(biāo)識的長度寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置; 更新所述安裝偏移為其當(dāng)前值加1,將所述安裝應(yīng)用標(biāo)識寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置; 更新所述安裝偏移為其當(dāng)前值加上所述安裝應(yīng)用標(biāo)識的長度; 所述第二數(shù)據(jù)具體為所述安裝命令緩沖區(qū)中偏移等于第四偏移至所述安裝偏移之間的數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述安裝收條數(shù)據(jù)組織單元,具體用于,當(dāng)所述第三獲取單元獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且所述第三獲取單元獲取到的用戶數(shù)據(jù)不為空時: 記錄當(dāng)前所述安裝偏移為第六偏移,將所述確認(rèn)計數(shù)器的計數(shù)值的長度寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置,將所述確認(rèn)計數(shù)器的計數(shù)值寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移加I的位置; 更新所述安裝偏移為其當(dāng)前值加上所述確認(rèn)計數(shù)器的計數(shù)值的長度再加1,將所述用戶數(shù)據(jù)的長度寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置,將所述用戶數(shù)據(jù)寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移加I的位置; 更新所述安裝偏移為其當(dāng)前值加上所述用戶數(shù)據(jù)的長度再加1,將所述第二數(shù)據(jù)寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置; 更新所述安裝偏移為其當(dāng)前值加上所述第二數(shù)據(jù)的長度; 所述安裝收條數(shù)據(jù)具體為所述安裝命令緩沖區(qū)中偏移等于第六偏移至所述安裝偏移之間的數(shù)據(jù)。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述安裝收條組織單元,具體用于: 記錄當(dāng)前所述安裝偏移為第七偏移,更新所述安裝偏移等于所述第四偏移加1,將所述第二簽名數(shù)據(jù)的長度寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置,將所述第二簽名數(shù)據(jù)寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移加I的位置; 更新所述安裝偏移為其當(dāng)前值加上所述第二簽名數(shù)據(jù)的長度再加1,將所述安裝收條數(shù)據(jù)寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置; 更新所述安裝偏移為其當(dāng)前值加上所述安裝收條數(shù)據(jù)的長度,計算安裝收條中數(shù)據(jù)的長度,將計算結(jié)果寫到所述安裝命令緩沖區(qū)中偏移等于所述第四偏移的位置; 所述安裝收條具體為所述安裝命令緩沖區(qū)中偏移等于所述第四偏移至所述安裝偏移之間的數(shù)據(jù)。
9.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述刪除收條組織模塊還包括第三創(chuàng)建單元; 所述第三創(chuàng)建單元,用于創(chuàng)建刪除命令緩沖區(qū),存儲所述刪除命令到所述刪除命令緩沖區(qū); 所述第三數(shù)據(jù)組織單元,具體用于: 初始化所述刪除命令緩沖區(qū)的偏移為刪除偏移,更新所述刪除偏移等于所述刪除命令緩沖區(qū)中的刪除命令的數(shù)據(jù)域的起始位置的偏移,并記錄當(dāng)前所述刪除偏移為第八偏移,讀取所述刪除命令緩沖區(qū)中偏移等于所述刪除偏移的位置的數(shù)據(jù),得到刪除應(yīng)用標(biāo)識的長度; 更新所述刪除偏移為其當(dāng)前值加1,讀取所述刪除命令緩沖區(qū)中從偏移等于所述刪除偏移的位置開始,長度等于所述刪除應(yīng)用標(biāo)識的長度的數(shù)據(jù),得到刪除應(yīng)用標(biāo)識; 更新所述刪除偏移為其當(dāng)前值加上所述刪除應(yīng)用標(biāo)識的長度; 所述第三數(shù)據(jù)具體為所述刪除命令緩沖區(qū)中偏移等于第八偏移至所述刪除偏移之間的數(shù)據(jù)。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述刪除收條數(shù)據(jù)組織單元,具體用于,當(dāng)所述第四獲取單元獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且所述第四獲取單元獲取到的用戶數(shù)據(jù)不為空時: 記錄當(dāng)前所述刪除偏移為第九偏移,將所述確認(rèn)計數(shù)器的計數(shù)值的長度寫到所述刪除命令緩沖區(qū)中偏移等于所述刪除偏移的位置,將所述確認(rèn)計數(shù)器的計數(shù)值寫到所述刪除命令緩沖區(qū)中偏移等于所述刪除偏移加I的位置; 更新所述刪除偏移為其當(dāng)前值加上所述確認(rèn)計數(shù)器的計數(shù)值的長度再加1,將所述用戶數(shù)據(jù)的長度寫到所述刪除命令緩沖區(qū)中偏移等于所述刪除偏移的位置,將所述用戶數(shù)據(jù)寫到所述刪除命令緩沖區(qū)中偏移等于所述刪除偏移加I的位置; 更新所述刪除偏移為其當(dāng)前值加上所述用戶數(shù)據(jù)的長度再加1,將所述第三數(shù)據(jù)寫到所述刪除命令緩沖區(qū)中偏移等于所述刪除偏移的位置; 更新所述刪除偏移為其當(dāng)前值加上所述第三數(shù)據(jù)的長度; 所述刪除收條數(shù)據(jù)具體為所述刪除命令緩沖區(qū)中偏移等于第九偏移至所述刪除偏移之間的數(shù)據(jù)。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,所述刪除收條組織單元,具體用于: 記錄當(dāng)前所述刪除偏移為第十偏移,更新所述刪除偏移等于所述第八偏移加1,將所述第三簽名數(shù)據(jù)的長度寫到所述刪除命令緩沖區(qū)中偏移等于所述刪除偏移的位置,將所述第三簽名數(shù)據(jù)寫到所述刪除命令緩沖區(qū)中偏移等于所述刪除偏移加I的位置; 更新所述刪除偏移為其當(dāng)前值加上所述第三簽名數(shù)據(jù)的長度再加1,將所述刪除收條數(shù)據(jù)寫到所述刪除命令緩沖區(qū)中偏移等于所述刪除偏移的位置; 更新所述刪除偏移為其當(dāng)前值加上所述刪除收條數(shù)據(jù)的長度,計算刪除收條中數(shù)據(jù)的長度,將計算結(jié)果寫到所述刪除命令緩沖區(qū)中偏移等于所述第八偏移的位置; 所述刪除收條具體為所述刪除命令緩沖區(qū)中偏移等于所述第八偏移至所述刪除偏移之間的數(shù)據(jù)。
12.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述引渡收條組織模塊還包括第四創(chuàng)建單元; 所述第四創(chuàng)建單元,用于創(chuàng)建引渡命令緩沖區(qū),存儲所述引渡命令到所述引渡命令緩沖區(qū); 所述第二查找單元,具體用于: 初始化所述引渡命令緩沖區(qū)的偏移為引渡偏移,更新所述引渡偏移等于所述引渡命令緩沖區(qū)中的引渡命令的數(shù)據(jù)域的起始位置的偏移,并記錄當(dāng)前所述引渡偏移為第十一偏移,讀取所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置的數(shù)據(jù),得到新安全域標(biāo)識的長度; 更新所述引渡偏移為其當(dāng)前值加1,讀取所述引渡命令緩沖區(qū)中從偏移等于所述引渡偏移的位置開始,長度等于所述新安全域標(biāo)識的長度的數(shù)據(jù),得到新安全域標(biāo)識; 更新所述引渡偏移為其當(dāng)前值加上所述新安全域標(biāo)識的長度,讀取所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置的數(shù)據(jù),得到引渡應(yīng)用標(biāo)識的長度; 更新所述引渡偏移為其當(dāng)前值加1,讀取所述引渡命令緩沖區(qū)中從偏移等于所述引渡偏移的位置開始,長度等于所述引渡應(yīng)用標(biāo)識的長度的數(shù)據(jù),得到引渡應(yīng)用標(biāo)識,更新所述引渡偏移為其當(dāng)前值加上所述引渡應(yīng)用標(biāo)識的長度; 在所述存儲模塊中查找與所述引渡應(yīng)用標(biāo)識對應(yīng)的應(yīng)用的原安全域標(biāo)識。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其特征在于,所述第四數(shù)據(jù)組織單元,具體用于: 記錄當(dāng)前所述引渡偏移為第十二偏移,將所述原安全域標(biāo)識的長度寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置,將所述原安全域標(biāo)識寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移加I的位置; 更新所述引渡偏移為其當(dāng)前值加上所述原安全域標(biāo)識的長度再加1,將所述引渡應(yīng)用標(biāo)識的長度寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置,將所述引渡應(yīng)用標(biāo)識寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移加I的位置; 更新所述引渡偏移為其當(dāng)前值加上所述引渡應(yīng)用標(biāo)識的長度再加1,將所述新安全域標(biāo)識的長度寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置,將所述新安全域標(biāo)識寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移加I的位置,更新所述引渡偏移為其當(dāng)前值加上所述新安全域標(biāo)識的長度再加I; 所述第四數(shù)據(jù)具體為所述引渡命令緩沖區(qū)中偏移等于所述第十二偏移至所述引渡偏移之間的數(shù)據(jù)。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其特征在于,所述引渡收條數(shù)據(jù)組織單元,具體用于,當(dāng)所述第五獲取單元獲取到的確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值,且所述第五獲取單元獲取到的用戶數(shù)據(jù)不為空時: 記錄當(dāng)前所述引渡偏移為第十三偏移,將所述確認(rèn)計數(shù)器的計數(shù)值的長度寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置,將所述確認(rèn)計數(shù)器的計數(shù)值寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移加I的位置; 更新所述引渡偏移為其當(dāng)前值加上所述確認(rèn)計數(shù)器的計數(shù)值的長度再加1,將所述用戶數(shù)據(jù)的長度寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置,將所述用戶數(shù)據(jù)寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移加I的位置; 更新所述引渡偏移為其當(dāng)前值加上所述用戶數(shù)據(jù)的長度再加1,將所述第四數(shù)據(jù)寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置,更新所述引渡偏移為其當(dāng)前值加上所述第四數(shù)據(jù)的長度; 所述引渡收條數(shù)據(jù)具體為所述引渡命令緩沖區(qū)中偏移等于第十三偏移至所述引渡偏移之間的數(shù)據(jù)。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其特征在于,所述引渡收條組織單元,具體用于: 記錄當(dāng)前所述引渡偏移為第十四偏移,更新所述引渡偏移等于所述第十一偏移加1,將所述簽名數(shù)據(jù)的長度寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置,將所述簽名數(shù)據(jù)寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移加I的位置; 更新所述引渡偏移為其當(dāng)前值加上所述簽名數(shù)據(jù)的長度再加1,將所述引渡收條數(shù)據(jù)寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置; 更新所述引渡偏移為其當(dāng)前值加上所述引渡收條數(shù)據(jù)的長度,計算引渡收條中數(shù)據(jù)的長度,將計算結(jié)果寫到所述引渡命令緩沖區(qū)中偏移等于所述第十一偏移的位置; 所述引渡收條具體為所述引渡命令緩沖區(qū)中偏移等于所述第十一偏移至所述引渡偏移之間的數(shù)據(jù)。
16.一種收條驗證方法,其特征在于,包括: 步驟A:卡片接收上位機(jī)發(fā)送的APDU數(shù)據(jù),解析所述APDU數(shù)據(jù),判斷所述APDU數(shù)據(jù)的類型,若為預(yù)加載命令則執(zhí)行步驟B,若為加載命令則執(zhí)行步驟C,若為安裝命令則執(zhí)行步驟D,若為刪除命令則執(zhí)行步驟E,若為引渡命令則執(zhí)行步驟F ; 步驟B:獲取所述預(yù)加載命令中的加載文件標(biāo)識和安全域標(biāo)識,存儲獲取到的加載文件標(biāo)識,確定并記錄獲取到的安全域標(biāo)識在所述卡片內(nèi)的索引,向所述上位機(jī)返回預(yù)設(shè)狀態(tài)碼; 步驟C:所述卡片獲取所述卡片內(nèi)最近存儲的加載文件標(biāo)識和安全域標(biāo)識的索引,根據(jù)所述安全域標(biāo)識的索引在所述卡片內(nèi)查找安全域標(biāo)識,根據(jù)獲取到的加載文件標(biāo)識和查找到的安全域標(biāo)識組織第一數(shù)據(jù),獲取所述卡片內(nèi)的確認(rèn)計數(shù)器的計數(shù)值和用戶數(shù)據(jù),若所述確認(rèn)計數(shù)器的計數(shù)值未達(dá)到閾值且所述用戶數(shù)據(jù)不為空,則根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第一數(shù)據(jù)組織加載收條數(shù)據(jù),對所述加載收條數(shù)據(jù)進(jìn)行簽名運算得到第一簽名數(shù)據(jù),根據(jù)所述第一簽名數(shù)據(jù)和所述加載收條數(shù)據(jù)組織加載收條,向所述上位機(jī)返回所述加載收條,并更新所述確認(rèn)計數(shù)器的計數(shù)值,執(zhí)行步驟G,否則向所述上位機(jī)返回異常狀態(tài)碼; 步驟D:所述卡片根據(jù)所述安裝命令中的可執(zhí)行加載文件標(biāo)識和應(yīng)用標(biāo)識組織第二數(shù)據(jù),獲取所述卡片內(nèi)的確認(rèn)計數(shù)器的計數(shù)值和用戶數(shù)據(jù),若所述確認(rèn)計數(shù)器的計數(shù)值未達(dá)到所述閾值且所述用戶數(shù)據(jù)不為空,則根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第二數(shù)據(jù)組織安裝收條數(shù)據(jù),對所述安裝收條數(shù)據(jù)進(jìn)行簽名運算得到第二簽名數(shù)據(jù),根據(jù)所述第二簽名數(shù)據(jù)和所述安裝收條數(shù)據(jù)組織安裝收條,向所述上位機(jī)返回所述安裝收條,并更新所述確認(rèn)計數(shù)器的計數(shù)值,執(zhí)行步驟G,否則向所述上位機(jī)返回異常狀態(tài)碼; 步驟E:所述卡片根據(jù)所述刪除命令中的應(yīng)用標(biāo)識組織第三數(shù)據(jù),獲取所述卡片內(nèi)的確認(rèn)計數(shù)器的計數(shù)值和用戶數(shù)據(jù),若所述確認(rèn)計數(shù)器的計數(shù)值未達(dá)到所述閾值且所述用戶數(shù)據(jù)不為空,則根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第三數(shù)據(jù)組織刪除收條數(shù)據(jù),對所述刪除收條數(shù)據(jù)進(jìn)行簽名運算得到第三簽名數(shù)據(jù),根據(jù)所述第三簽名數(shù)據(jù)和所述刪除收條數(shù)據(jù)組織刪除收條,向所述上位機(jī)返回所述刪除收條,并更新所述確認(rèn)計數(shù)器的計數(shù)值,執(zhí)行步驟G,否則向所述上位機(jī)返回異常狀態(tài)碼; 步驟F:所述卡片根據(jù)所述引渡命令中的應(yīng)用標(biāo)識查找所述卡片內(nèi)與所述應(yīng)用標(biāo)識對應(yīng)的應(yīng)用的原安全域標(biāo)識,根據(jù)查找到的原安全域標(biāo)識以及所述引渡命令中的應(yīng)用標(biāo)識和新安全域標(biāo)識組織第四數(shù)據(jù),獲取所述卡片內(nèi)的確認(rèn)計數(shù)器的計數(shù)值和用戶數(shù)據(jù),若所述確認(rèn)計數(shù)器的計數(shù)值未達(dá)到所述閾值且所述用戶數(shù)據(jù)不為空,則根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第四數(shù)據(jù)組織引渡收條數(shù)據(jù),對所述引渡收條數(shù)據(jù)進(jìn)行簽名運算得到第四簽名數(shù)據(jù),根據(jù)所述第四簽名數(shù)據(jù)和所述引渡收條數(shù)據(jù)組織引渡收條,向所述上位機(jī)返回所述引渡收條,并更新所述確認(rèn)計數(shù)器的計數(shù)值,執(zhí)行步驟G,否則向所述上位機(jī)返回異常狀態(tài)碼; 步驟G:所述上位機(jī)接收所述卡片返回的收條,對接收到的收條進(jìn)行驗證,若驗證通過,則判定相應(yīng)地卡片內(nèi)容管理操作執(zhí)行成功,若驗證失敗,則判定相應(yīng)地卡片內(nèi)容管理操作執(zhí)行失敗。
17.根據(jù)權(quán)利要求16所述的方法,其特征在于,所述步驟A中還包括:若所述APDU數(shù)據(jù)為用戶數(shù)據(jù)命令則獲取所述命令中的用戶數(shù)據(jù)并存儲,向所述上位機(jī)返回所述預(yù)設(shè)狀態(tài)碼。
18.根據(jù)權(quán)利要求16所述的方法,其特征在于,所述卡片判斷出所述APDU數(shù)據(jù)為加載命令時還包括:所述卡片創(chuàng)建加載命令緩沖區(qū),存儲所述加載命令到所述加載命令緩沖區(qū); 所述卡片根據(jù)獲取到的加載文件標(biāo)識和查找到的安全域標(biāo)識組織第一數(shù)據(jù),具體包括: 步驟al:所述卡片初始化所述加載命令緩沖區(qū)的偏移為加載偏移,更新所述加載偏移等于所述加載命令緩沖區(qū)中的加載命令的數(shù)據(jù)域的起始位置的偏移,并記錄當(dāng)前所述加載偏移為第一偏移; 步驟a2:所述卡片調(diào)用預(yù)設(shè)函數(shù)將獲取到的加載文件標(biāo)識寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移加I的位置,并將所述預(yù)設(shè)函數(shù)的返回值寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移的位置; 步驟a3:所述卡片更新所述加載偏移為其當(dāng)前值加上所述加載文件標(biāo)識的長度再加1,調(diào)用所述預(yù)設(shè)函數(shù)將查找到的安全域標(biāo)識寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移加I的位置,并將所述預(yù)設(shè)函數(shù)的返回值寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移的位置; 步驟a4:所述卡片更新所述加載偏移為其當(dāng)前值加上所述安全域標(biāo)識的長度再加I ; 所述第一數(shù)據(jù)具體為所述加載命令緩沖區(qū)中偏移等于所述第一偏移至當(dāng)前所述加載偏移之間的數(shù)據(jù)。
19.根據(jù)權(quán)利要求18所述的方法,其特征在于,所述卡片根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第一數(shù)據(jù)組織加載收條數(shù)據(jù),具體包括: 步驟bl:所述卡片記錄當(dāng)前所述加載偏移為第二偏移,將所述確認(rèn)計數(shù)器的計數(shù)值的長度寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移的位置,將所述確認(rèn)計數(shù)器的計數(shù)值寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移加I的位置; 步驟b2:所述卡片更新所述加載偏移為其當(dāng)前值加上所述確認(rèn)計數(shù)器的計數(shù)值的長度再加1,將所述用戶數(shù)據(jù)的長度寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移的位置,將所述用戶數(shù)據(jù)寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移加I的位置; 步驟b3:所述卡片更新所述加載偏移為其當(dāng)前值加上所述用戶數(shù)據(jù)的長度再加1,將所述第一數(shù)據(jù)寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移的位置; 步驟b4:所述卡片更新所述加載偏移為其當(dāng)前值加上所述第一數(shù)據(jù)的長度; 所述加載收條數(shù)據(jù)具體為所述加載命令緩沖區(qū)中偏移等于所述第二偏移至當(dāng)前所述加載偏移之間的數(shù)據(jù)。
20.根據(jù)權(quán)利要求19所述的方法,其特征在于,所述卡片根據(jù)所述第一簽名數(shù)據(jù)和所述加載收條數(shù)據(jù)組織加載收條,具體包括: 步驟Cl:所述卡片記錄當(dāng)前所述加載偏移為第三偏移,更新所述加載偏移等于所述第一偏移加1,將所述第一簽名數(shù)據(jù)的長度寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移的位置,將所述第一簽名數(shù)據(jù)寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移加I的位置; 步驟c2:所述卡片更新所述加載偏移為其當(dāng)前值加上所述第一簽名數(shù)據(jù)的長度再加1,將所述加載收條數(shù)據(jù)寫到所述加載命令緩沖區(qū)中偏移等于所述加載偏移的位置; 步驟c3:所述卡片更新所述加載偏移為其當(dāng)前值加上所述加載收條數(shù)據(jù)的長度,計算加載收條中數(shù)據(jù)的長度,將計算結(jié)果寫到所述加載命令緩沖區(qū)中偏移等于所述第一偏移的位置; 所述加載收條具體為所述加載命令緩沖區(qū)中偏移等于所述第一偏移至所述加載偏移之間的數(shù)據(jù)。
21.根據(jù)權(quán)利要求16所述的方法,其特征在于,所述卡片判斷出所述APDU數(shù)據(jù)為安裝命令時還包括:所述卡片創(chuàng)建安裝命令緩沖區(qū),存儲所述安裝命令到所述安裝命令緩沖區(qū); 所述卡片根據(jù)所述安裝命令中的可執(zhí)行加載文件標(biāo)識和應(yīng)用標(biāo)識組織第二數(shù)據(jù),具體包括: 步驟dl:所述卡片初始化所述安裝命令緩沖區(qū)的偏移為安裝偏移,更新所述安裝偏移等于所述安裝命令緩沖區(qū)中的安裝命令的數(shù)據(jù)域的起始位置的偏移,并記錄當(dāng)前所述安裝偏移為第四偏移,讀取所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置的數(shù)據(jù),得到可執(zhí)行加載文件標(biāo)識的長度; 步驟d2:所述卡片更新所述安裝偏移為其當(dāng)前值加1,讀取所述安裝命令緩沖區(qū)中從偏移等于所述安裝偏移的位置開始,長度等于所述可執(zhí)行加載文件標(biāo)識的長度的數(shù)據(jù),得到可執(zhí)行加載文件標(biāo)識; 步驟d3:所述卡片更新所述安裝偏移為其當(dāng)前值加上所述可執(zhí)行加載文件標(biāo)識的長度,記錄當(dāng)前所述安裝偏移為第五偏移,讀取所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置的數(shù)據(jù),得到可執(zhí)行模塊標(biāo)識的長度; 步驟d4:所述卡片更新所述安裝偏移為其當(dāng)前值加1,讀取所述安裝命令緩沖區(qū)中從偏移等于所述安裝偏移的位置開始,長度等于所述可執(zhí)行模塊標(biāo)識的長度的數(shù)據(jù),得到可執(zhí)行模塊標(biāo)識; 步驟d5:所述卡片更新所述安裝偏移為其當(dāng)前值加上所述可執(zhí)行模塊標(biāo)識的長度,讀取所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置的數(shù)據(jù),得到安裝應(yīng)用標(biāo)識的長度; 步驟d6:所述卡片更新所述安裝偏移為其當(dāng)前值加1,讀取所述安裝命令緩沖區(qū)中從偏移等于所述安裝偏移的位置開始,長度等于所述安裝應(yīng)用標(biāo)識的長度的數(shù)據(jù),得到安裝應(yīng)用標(biāo)識; 步驟d7:所述卡片更新所述安裝偏移等于第五偏移,將所述安裝應(yīng)用標(biāo)識的長度寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置; 步驟d8:所述卡片更新所述安裝偏移為其當(dāng)前值加1,將所述安裝應(yīng)用標(biāo)識寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置; 步驟d9:所述卡片更新所述安裝偏移為其當(dāng)前值加上所述安裝應(yīng)用標(biāo)識的長度;所述第二數(shù)據(jù)具體為所述安裝命令緩沖區(qū)中偏移等于第四偏移至所述安裝偏移之間的數(shù)據(jù)。
22.根據(jù)權(quán)利要求21所述的方法,其特征在于,所述卡片根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第二數(shù)據(jù)組織安裝收條數(shù)據(jù),具體包括: 步驟el:所述卡片記錄當(dāng)前所述安裝偏移為第六偏移,將所述確認(rèn)計數(shù)器的計數(shù)值的長度寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置,將所述確認(rèn)計數(shù)器的計數(shù)值寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移加I的位置; 步驟e2:所述卡片更新所述安裝偏移為其當(dāng)前值加上所述確認(rèn)計數(shù)器的計數(shù)值的長度再加1,將所述用戶數(shù)據(jù)的長度寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置,將所述用戶數(shù)據(jù)寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移加I的位置; 步驟e3:所述卡片更新所述安裝偏移為其當(dāng)前值加上所述用戶數(shù)據(jù)的長度再加1,將所述第二數(shù)據(jù)寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置; 步驟e4:所述卡片更新所述安裝偏移為其當(dāng)前值加上所述第二數(shù)據(jù)的長度; 所述安裝收條數(shù)據(jù)具體為所述安裝命令緩沖區(qū)中偏移等于第六偏移至所述安裝偏移之間的數(shù)據(jù)。
23.根據(jù)權(quán)利要求22所述的方法,其特征在于,所述卡片根據(jù)所述第二簽名數(shù)據(jù)和所述安裝收條數(shù)據(jù)組織安裝收條,具體包括: 步驟fl:所述卡片記錄當(dāng)前所述安裝偏移為第七偏移,更新所述安裝偏移等于所述第四偏移加1,將所述第二簽名數(shù)據(jù)的長度寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置,將所述第二簽名數(shù)據(jù)寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移加I的位置; 步驟f2:所述卡片更新所述安裝偏移為其當(dāng)前值加上所述第二簽名數(shù)據(jù)的長度再加1,將所述安裝收條數(shù)據(jù)寫到所述安裝命令緩沖區(qū)中偏移等于所述安裝偏移的位置; 步驟f3:所述卡片更新所述安裝偏移為其當(dāng)前值加上所述安裝收條數(shù)據(jù)的長度,計算安裝收條中數(shù)據(jù)的長度,將計算結(jié)果寫到所述安裝命令緩沖區(qū)中偏移等于所述第四偏移的位置; 所述安裝收條具體為所述安裝命令緩沖區(qū)中偏移等于所述第四偏移至所述安裝偏移之間的數(shù)據(jù)。
24.根據(jù)權(quán)利要求16所述的方法,其特征在于,所述卡片判斷出所述APDU數(shù)據(jù)為刪除命令時還包括:所述卡片創(chuàng)建刪除命令緩沖區(qū),存儲所述刪除命令到所述刪除命令緩沖區(qū); 所述卡片根據(jù)所述刪除命令中的應(yīng)用標(biāo)識組織第三數(shù)據(jù),具體包括: 步驟gl:所述卡片初始化所述刪除命令緩沖區(qū)的偏移為刪除偏移,更新所述刪除偏移等于所述刪除命令緩沖區(qū)中的刪除命令的數(shù)據(jù)域的起始位置的偏移,并記錄當(dāng)前所述刪除偏移為第八偏移,讀取所述刪除命令緩沖區(qū)中偏移等于所述刪除偏移的位置的數(shù)據(jù),得到刪除應(yīng)用標(biāo)識的長度; 步驟g2:所述卡片更新所述刪除偏移為其當(dāng)前值加1,讀取所述刪除命令緩沖區(qū)中從偏移等于所述刪除偏移的位置開始,長度等于所述刪除應(yīng)用標(biāo)識的長度的數(shù)據(jù),得到刪除應(yīng)用標(biāo)識; 步驟g3:所述卡片更新所述刪除偏移為其當(dāng)前值加上所述刪除應(yīng)用標(biāo)識的長度;所述第三數(shù)據(jù)具體為所述刪除命令緩沖區(qū)中偏移等于第八偏移至所述刪除偏移之間的數(shù)據(jù)。
25.根據(jù)權(quán)利要求24所述的方法,其特征在于,所述卡片根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第三數(shù)據(jù)組織刪除收條數(shù)據(jù),具體包括: 步驟h1:所述卡片記錄當(dāng)前所述刪除偏移為第九偏移,將所述確認(rèn)計數(shù)器的計數(shù)值的長度寫到所述刪除命令緩沖區(qū)中偏移等于所述刪除偏移的位置,將所述確認(rèn)計數(shù)器的計數(shù)值寫到所述刪除命令緩沖區(qū)中偏移等于所述刪除偏移加I的位置; 步驟h2:所述卡片更新所述刪除偏移為其當(dāng)前值加上所述確認(rèn)計數(shù)器的計數(shù)值的長度再加1,將所述用戶數(shù)據(jù)的長度寫到所述刪除命令緩沖區(qū)中偏移等于所述刪除偏移的位置,將所述用戶數(shù)據(jù)寫到所述刪除命令緩沖區(qū)中偏移等于所述刪除偏移加I的位置; 步驟h3:所述卡片更新所述刪除偏移為其當(dāng)前值加上所述用戶數(shù)據(jù)的長度再加1,將所述第三數(shù)據(jù)寫到所述刪除命令緩沖區(qū)中偏移等于所述刪除偏移的位置; 步驟h4:所述卡片更新所述刪除偏移為其當(dāng)前值加上所述第三數(shù)據(jù)的長度; 所述刪除收條數(shù)據(jù)具體為所述刪除命令緩沖區(qū)中偏移等于第九偏移至所述刪除偏移之間的數(shù)據(jù)。
26.根據(jù)權(quán)利要求25所述的方法,其特征在于,所述卡片根據(jù)所述第三簽名數(shù)據(jù)和所述刪除收條數(shù)據(jù)組織刪除收條,具體包括: 步驟il:所述卡片記錄當(dāng)前所述刪除偏移為第十偏移,更新所述刪除偏移等于所述第八偏移加1,將所述第三簽名數(shù)據(jù)的長度寫到所述刪除命令緩沖區(qū)中偏移等于所述刪除偏移的位置,將所述第三簽名數(shù)據(jù)寫到所述刪除命令緩沖區(qū)中偏移等于所述刪除偏移加I的位置; 步驟i2:所述卡片更新所述刪除偏移為其當(dāng)前值加上所述第三簽名數(shù)據(jù)的長度再加1,將所述刪除收條數(shù)據(jù)寫到所述刪除命令緩沖區(qū)中偏移等于所述刪除偏移的位置; 步驟i3:所述卡片更新所述刪除偏移為其當(dāng)前值加上所述刪除收條數(shù)據(jù)的長度,計算刪除收條中數(shù)據(jù)的長度,將計算結(jié)果寫到所述刪除命令緩沖區(qū)中偏移等于所述第八偏移的位置; 所述刪除收條具體為所述刪除命令緩沖區(qū)中偏移等于第八偏移至所述刪除偏移之間的數(shù)據(jù)。
27.根據(jù)權(quán)利要求16所述的方法,其特征在于,所述卡片判斷出所述APDU數(shù)據(jù)為引渡命令時還包括:所述卡片創(chuàng)建引渡命令緩沖區(qū),存儲所述引渡命令到所述引渡命令緩沖區(qū); 所述獲取原安全域標(biāo)識具體包括: 步驟jl:所述卡片初始化所述引渡命令緩沖區(qū)的偏移為引渡偏移,更新所述引渡偏移等于所述引渡命令緩沖區(qū)中的引渡命令的數(shù)據(jù)域的起始位置的偏移,并記錄當(dāng)前所述引渡偏移為第十一偏移,讀取所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置的數(shù)據(jù),得到新安全域標(biāo)識的長度; 步驟j2:所述卡片更新所述引渡偏移為其當(dāng)前值加1,讀取所述引渡命令緩沖區(qū)中從偏移等于所述引渡偏移的位置開始,長度等于所述新安全域標(biāo)識的長度的數(shù)據(jù),得到新安全域標(biāo)識;步驟j3:所述卡片更新所述引渡偏移為其當(dāng)前值加上所述新安全域標(biāo)識的長度,讀取所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置的數(shù)據(jù),得到引渡應(yīng)用標(biāo)識的長度;步驟j4:所述卡片更新所述引渡偏移為其當(dāng)前值加1,讀取所述引渡命令緩沖區(qū)中從偏移等于所述引渡偏移的位置開始,長度等于所述引渡應(yīng)用標(biāo)識的長度的數(shù)據(jù),得到引渡應(yīng)用標(biāo)識,更新所述引渡偏移為其當(dāng)前值加上所述引渡應(yīng)用標(biāo)識的長度; 步驟j5:所述卡片在所述卡片內(nèi)查找與所述引渡應(yīng)用標(biāo)識對應(yīng)的應(yīng)用的原安全域標(biāo)識。
28.根據(jù)權(quán)利要求27所述的方法,其特征在于, 所述卡片根據(jù)查找到的原安全域標(biāo)識以及所述引渡命令中的應(yīng)用標(biāo)識和新安全域標(biāo)識組織第四數(shù)據(jù),具體包括: 步驟kl:所述卡片記錄當(dāng)前所述引渡偏移為第十二偏移,將所述原安全域標(biāo)識的長度寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置,將所述原安全域標(biāo)識寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移加I的位置; 步驟k2:所述卡片更新所述引渡偏移為其當(dāng)前值加上所述原安全域標(biāo)識的長度再加1,將所述引渡應(yīng)用標(biāo)識的長度寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置,將所述引渡應(yīng)用標(biāo)識寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移加I的位置; 步驟k3:所述卡片更新所述引渡偏移為其當(dāng)前值加上所述引渡應(yīng)用標(biāo)識的長度再加1,將所述新安全域標(biāo)識的長度寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置,將所述新安全域標(biāo)識寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移加I的位置,更新所述引渡偏移為其當(dāng)前值加上所述新安全域標(biāo)識的長度再加I ; 所述第四數(shù)據(jù)具體為所述引渡命令緩沖區(qū)中偏移等于所述第十二偏移至所述引渡偏移之間的數(shù)據(jù)。
29.根據(jù)權(quán)利要求28所述的方法,其特征在于,所述卡片根據(jù)所述確認(rèn)計數(shù)器的計數(shù)值、所述用戶數(shù)據(jù)以及所述第四數(shù)據(jù)組織引渡收條數(shù)據(jù),具體包括: 步驟11:所述卡片記錄當(dāng)前所述引渡偏移為第十三偏移,將所述確認(rèn)計數(shù)器的計數(shù)值的長度寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置,將所述確認(rèn)計數(shù)器的計數(shù)值寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移加I的位置; 步驟12:所述卡片更新所述引渡偏移為其當(dāng)前值加上所述確認(rèn)計數(shù)器的計數(shù)值的長度再加1,將所述用戶數(shù)據(jù)的長度寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置,將所述用戶數(shù)據(jù)寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移加I的位置; 步驟13:所述卡片更新所述引渡偏移為其當(dāng)前值加上所述用戶數(shù)據(jù)的長度再加1,將所述第四數(shù)據(jù)寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置,更新所述引渡偏移為其當(dāng)前值加上所述第四數(shù)據(jù)的長度; 所述引渡收條數(shù)據(jù)具體為所述引渡命令緩沖區(qū)中偏移等于第十三偏移至所述引渡偏移之間的數(shù)據(jù)。
30.根據(jù)權(quán)利要求29所述的方法,其特征在于,所述卡片根據(jù)所述第四簽名數(shù)據(jù)和所述引渡收條數(shù)據(jù)組織引渡收條,具體包括: 步驟ml:所述卡片記錄當(dāng)前所述引渡偏移為第十四偏移,更新所述引渡偏移等于所述第十一偏移加1,將所述簽名數(shù)據(jù)的長度寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置,將所述簽名數(shù)據(jù)寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移加I的位置; 步驟m2:所述卡片更新所述引渡偏移為其當(dāng)前值加上所述簽名數(shù)據(jù)的長度再加1,將所述引渡收條數(shù)據(jù)寫到所述引渡命令緩沖區(qū)中偏移等于所述引渡偏移的位置; 步驟m3:所述卡片更新所述引渡偏移為其當(dāng)前值加上所述引渡收條數(shù)據(jù)的長度,計算引渡收條中數(shù)據(jù)的長度,將計算結(jié)果寫到所述引渡命令緩沖區(qū)中偏移等于所述第十一偏移的位置; 所述引渡收條具體為所述引渡命令緩沖區(qū)中偏移等于所述第十一偏移至所述引渡偏移之間的數(shù)據(jù)。
【文檔編號】G06F21/62GK104182699SQ201410421373
【公開日】2014年12月3日 申請日期:2014年8月25日 優(yōu)先權(quán)日:2014年8月25日
【發(fā)明者】陸舟, 于華章 申請人:飛天誠信科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1