国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

JavaCard開發(fā)教程之消息模型

2019-11-18 14:28:53
字體:
供稿:網(wǎng)友

  圖1中說明的消息傳遞模型是所有java Card通信的基礎(chǔ)。它的核心就是應(yīng)用程序協(xié)議數(shù)據(jù)單元(APDU),CAD和Java Card框架之間交換的一個邏輯數(shù)據(jù)包。JavaCard框架接收任何CAD發(fā)送進來的APDU命令并且傳送到相應(yīng)的小應(yīng)用程序中。小應(yīng)用程序處理APDU命令,然后返回一個響應(yīng)APDU。那些APDU遵守國際標準規(guī)格ISO/IEC 7816 - 3和7816 - 4。

JavaCard開發(fā)教程之消息模型(圖一)
  圖1使用消息傳遞模型通訊

  讀卡器和卡之間的通信通常基于下面兩種連接協(xié)議的一種,面向字節(jié)的T = 0,或者面向數(shù)據(jù)塊的T = 1。還可能會用到被稱為T = USB和T = RF的替換協(xié)議。JCRE APDU類向應(yīng)用程序隱藏了一些協(xié)議細節(jié),但不是全部,因為T = 0協(xié)議相當?shù)膹?fù)雜。

  ⒈APDU命令

  一個APDU命令的結(jié)構(gòu)由它的第一個字節(jié)的值控制,大部分情況下看上去如下所示:

JavaCard開發(fā)教程之消息模型(圖二)
圖2、APDU命令

  一個APDU命令有一個必須有的頭和一個可選的體,包含:

  · CLA(1字節(jié)):這個必要的字段識別指令的一個特定應(yīng)用程序類。有效的CLA值在ISO 7816 - 4規(guī)范中定義:

表格1、ISO 7816 CLA值

CLA 值指令類0x0n, 0x1nISO 7816 - 4卡指令,比如文件存取和安全操作20 to 0x7F保留0x8n or 0x9n你可以用作你的特定的應(yīng)用程序指令的ISO/IEC 7816 - 4格式,根據(jù)標準解釋' X '0xAn特定的應(yīng)用程序或者供給商的指令B0 to CF你可以用作特定應(yīng)用程序的ISO/IEC 7816 - 4格式D0 to FE特定的應(yīng)用程序或者供給商的指令FF保留給協(xié)議類型選擇
  · 理論上,你可以使用所有的CLA值0x80或者更高值來用于特定應(yīng)用程序指令,但是在許多現(xiàn)在的Java Card實現(xiàn)中,只有黑體顯示的是實際認可的。

  · INS(1字節(jié)):這個必需的字段指明CLA字段中標示的指令類中的一個特定指令。ISO 7816 - 4標準指定用于訪問卡上的數(shù)據(jù)的基本指令,當它根據(jù)在像標準中定義的卡上的文件系統(tǒng)那樣結(jié)構(gòu)化的時候。附加功能已經(jīng)在這個標準中的其它地方說明,其中一些是安全功能。表2中是一個ISO 7816指令的列表。只有當使用一個相應(yīng)的CLA字節(jié)值時,你才可以根據(jù)標準定義你自己的特定應(yīng)用程序的INS值,。

  表格2、當 CLA = 0x時的ISO 7816 - 4 INS值

INS 值命令描述0EErase Binary20Verify70Manage Channel82External Authenticate84Get Challenge88Internal AuthenticateA4 Select FileB0Read BinaryB2Read Record(s)C0Get ResponseC2EnvelopeCAGet DataD0Write BinaryD2 Write RecordD6Update BinaryDAPut DataDC Update RecordE2 Append Record


  · P1(1字節(jié)):這個必需的字段定義指令參數(shù)1。你可以使用這個字段來檢驗INS字段,或者用于輸入數(shù)據(jù)。

  · P2(1字節(jié)):這個必需的字段定義指令參數(shù)⒉你可以使用這個字段來檢驗INS字段,或者用于輸入數(shù)據(jù)。

  · Lc(1字節(jié)):這個可選的字段是命令的數(shù)據(jù)字段的字節(jié)數(shù)。

  · 數(shù)據(jù)字段(可變的,字節(jié)Lc數(shù)):這個可選的字段保存命令數(shù)據(jù)。

  · Le(1字節(jié)):這個可選的字段指定在期望響應(yīng)的數(shù)據(jù)字段中的極限字節(jié)數(shù)。

  取決于命令數(shù)據(jù)的存在與否以及相應(yīng)是否必須,命令A(yù)PDU有四種變化。只有在你使用協(xié)議T = 0時,你才需要關(guān)心這些變化:

JavaCard開發(fā)教程之消息模型(圖三)

點擊查看大圖

圖3、APDU命令的四個可能的結(jié)構(gòu)

  一個典型的應(yīng)用程序?qū)⒁圆煌慕Y(jié)構(gòu)方式使用不同的APDU命令。

  2、響應(yīng)APDU

  響應(yīng)APDU的格式很簡單的:

JavaCard開發(fā)教程之消息模型(圖四)
圖4、響應(yīng)APDU

  和一個APDU命令相似,響應(yīng)APDU有可選擇的和必要的字段:

  · 數(shù)據(jù)字段(可變長度,由APDU命令中的Le確定):這個可選擇的字段包含小應(yīng)用程序返回的數(shù)據(jù)。

  · SW1(1字節(jié)):這個必要的字段是狀態(tài)字1。

  · SW2(1字節(jié)):這個必要的字段是狀態(tài)字2。

  這些狀態(tài)字的值在ISO 7816 - 4規(guī)范中定義:

JavaCard開發(fā)教程之消息模型(圖五)
圖5、響應(yīng)狀態(tài)碼

  Java Card框架應(yīng)用編程接口中的ISO7816 Java接口定義了許多常數(shù)來幫助規(guī)范返回錯誤代碼。

  3、過程APDU

  每當有一個進入的APDU用于所選擇的小應(yīng)用程序,JCRE就調(diào)用小應(yīng)用程序的PRocess ()方法,把進入的APDU作為一個參數(shù)傳送。這個小應(yīng)用程序必須解析APDU命令,處理數(shù)據(jù)、生成一個響應(yīng)APDU,然后把控制權(quán)返回給JCRE。

  RMI(JCRMI)通訊模型

  第二種通信模型依靠J2SE RMI分布式對象模型的一個子集。

  在RMI模型中,一個服務(wù)器應(yīng)用程序創(chuàng)建并生成可訪問的遠程對象,并且一個客戶應(yīng)用程序獲得到遠程對象的遠程引用,然后調(diào)用它們的遠程方法。在JCRMI中,Java Card小應(yīng)用程序是服務(wù)器,而主應(yīng)用程序是客戶端。

  JCRMI由類RMIService提供到擴展程序包javacardx.rmi中。JCRMI消息被封裝到傳入RMIService方法的APDU對象中,換句話說,JCRMI提供了一個基于APDU消息傳遞模型的分布式對象模型機制,通過這個機制服務(wù)器和客戶端通信,往返傳送方法信息、參數(shù)和返回值。



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 新建县| 北票市| 郧西县| 谢通门县| 海口市| 普定县| 苍溪县| 新沂市| 万载县| 芦山县| 团风县| 太仓市| 凤凰县| 华池县| 托克托县| 连州市| 五常市| 宁津县| 昌乐县| 原阳县| 永新县| 石阡县| 建宁县| 弋阳县| 双桥区| 广丰县| 尼玛县| 武功县| 东源县| 石楼县| 西安市| 武城县| 巴南区| 房产| 郸城县| 甘泉县| 麻栗坡县| 巍山| 什邡市| 新民市| 秦安县|