




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
STM32F101xxSTM32F103xx的智能卡應STM32F101xxSTM32F103xx的智能卡應用筆STM32F101xxSTM32F103xx簡口的實現(xiàn)。該固件和硬件包的目的是提供相應的資源,使用戶使用USART模塊的智能卡模式,這個固件接口包括支持ISO7816-3/4規(guī)范的庫文件,同時提供基于ST的STM3210B-EVAL和術(shù)語小容量產(chǎn)品是指閃存存儲器容量在16K至32K字節(jié)之間的STM32F101xx、STM32F102xx和中容量產(chǎn)品是指閃存存儲器容量在64K至128K字節(jié)之間的STM32F101xx、STM32F102xxSTM32F103xx微控制器。在ST的STM3210B-EVAL評估板上集成的即為中容STM32F101xxSTM32F103xx的智能卡使目144445688899STM32F101xxSTM32F103xx的智能卡使目14444568889923ISO7816:協(xié)議介ISO7816-2——引腳分4ISO7816-3——電信號和傳輸協(xié)復位應答5ISO7816-4——智能卡命T0ISO7816-4安全6如何向智能卡發(fā)送APDU7 STM32F101xxSTM32F103xx的智能卡STM32F101xxSTM32F103xx的智能卡使 81智能簡智能卡接口是在USART模塊的智能卡模式下開發(fā)的。關(guān)于USART寄存器的描述,請參閱1智能簡智能卡接口是在USART模塊的智能卡模式下開發(fā)的。關(guān)于USART寄存器的描述,請參閱8位數(shù)據(jù)位加上奇偶校0.5或1.5位停止軟件中不處理ISO7816-3中定義的反向信號傳輸約定,反轉(zhuǎn)數(shù)據(jù)和最高有效位優(yōu)先的情況外部接表Smartcard_RST(智能卡復位)、Smartcard_3/5V(3V或5V)、(管理VCC)及caF信號(智能卡檢測信號)由軟件控制O的端口實現(xiàn)。為了使數(shù)據(jù)信號以正確的驅(qū)動連接到智能卡I引腳,應當把USART_X端口的PI位編程為復用開漏輸出模式,為把時鐘發(fā)生器連接到cCK的引腳,_K端口的GPIO位應配置為復用推挽輸出模式。協(xié)O3標準為異步協(xié)議定義了時間基準單位,稱作ETU(etarye,它與輸入至智能卡的時鐘頻率有關(guān)。一個EU的長度是一個位時間。USAT接收器和發(fā)送器在內(nèi)部通過xW信號相連接。必須將T模塊設(shè)置為智能卡模式,才能實現(xiàn)從xx向智能卡傳輸數(shù)據(jù)。圖ISO7816-3異步STM32F10xxx引任意GPIO任意GPIO任意GPIO智能卡智能卡時鐘發(fā)生智能卡時鐘發(fā)生器為與之相連的智能卡提供時鐘信號。智能卡使用這個時鐘產(chǎn)生在智能卡與智能卡接口操作要求,在卡上的U運行代碼時可以調(diào)整時鐘速率,這樣可以改變通訊的波特率,或者可以提升智能卡的性能。在13標準中詳細描述了,協(xié)商時鐘速率和改變時鐘速率的協(xié)議。2智能卡讀卡器的硬表STM32F10xxx與智能卡間的連STM3210B-2智能卡讀卡器的硬表STM32F10xxx與智能卡間的連STM3210B-STM3210E-C3:C7:C2:C1:3V或5V:推挽圖圖ISO7816:協(xié)議介3ISO7816:協(xié)議介簡“ISO7816:識別卡——帶有觸點的集成電路卡”提供了把相對簡單的,容易被偽造、偷盜、丟失的普通識別卡轉(zhuǎn)變成一個防篡改的智能集成電路卡(IntergratedcircuitcardICC)的規(guī)范,人們一般稱之為智能卡。ISO7816包括至少6個經(jīng)審核的部分和一些有待審核的新增部分,如下:●●●●●ISO7816:協(xié)議介3ISO7816:協(xié)議介簡“ISO7816:識別卡——帶有觸點的集成電路卡”提供了把相對簡單的,容易被偽造、偷盜、丟失的普通識別卡轉(zhuǎn)變成一個防篡改的智能集成電路卡(IntergratedcircuitcardICC)的規(guī)范,人們一般稱之為智能卡。ISO7816包括至少6個經(jīng)審核的部分和一些有待審核的新增部分,如下:●●●●●●ISO7816-2——引腳分ISO7816-2規(guī)定一個ICC,有8個電器觸點,它們位于智能卡表面的標準位置,分別是C1至圖表引功VCC5V或者地輸入/輸出ISO7816-3——電信號和傳輸協(xié)4ISO7816-3——ISO7816-3——電信號和傳輸協(xié)4ISO7816-3——電信號和傳03開始研究智能卡“智能”方面的規(guī)范。該標準描述了智能卡和讀卡器之間的關(guān)系,其中智能卡作為從設(shè)備,讀卡器作為主設(shè)備。通訊的基礎(chǔ)是,讀卡器通過觸點給智能卡發(fā)送信號,然后智能卡作出回應,如此不斷循環(huán)交互。圖智能卡上電啟動和復當把智能卡插入到讀卡器時,不能對任何觸點提供供電。因為如果把電源提供給了錯誤的觸點,卡上的芯片可能被嚴重損壞,這種情形很可能發(fā)生在觸點已經(jīng)上電的情況下去插智能卡。觸點保持無電狀態(tài),直到邊沿檢測器檢測到智能卡的觸點在(讀卡器的)當讀卡器發(fā)現(xiàn)智能卡已經(jīng)正確地插入,就會給智能卡提供電源,智能卡首先進入的是空閑狀態(tài),如圖4所示,然后讀卡器通過ST線向智能卡發(fā)送一個復位信號。當電源觸點V)的V電壓進入穩(wěn)定的工作狀態(tài)時,智能卡進入空閑狀態(tài)。盡管有些微處理器芯片的I/O狀態(tài)工作在V電壓下,也總是先提供V電壓。讀卡器的/O觸點設(shè)置成接收模式,同時提供穩(wěn)定的時鐘L)。ISO7816-3——電信號和傳輸ISO7816-3——電信號和傳輸協(xié)此時復位信號線處于低電平狀態(tài)。在讀卡器開始有效的復位過程之前,復位線應保持至少40,000個CLK周期的低電平狀態(tài),然后再設(shè)置為高電圖(1)t340000(2)智能卡必須在RST變高之后的400個時鐘周期至40000個時鐘周期之間送出ATR數(shù)據(jù)傳在讀卡器和智能卡之間進行數(shù)據(jù)傳輸,需要通過兩個觸點引線的協(xié)商:K和I/O。I/O引線根據(jù)它相對于D的電壓,在每個由K定義的單位時間內(nèi)傳送一個比特的信息??梢杂肰或電壓來表示邏輯’,實際操作中,這由智能卡傳送給讀卡器的ATR中的“初始字符”也被稱作S所決定。在IO引線上每傳送0個比特代表一個字節(jié)的信息;最先的是“起始位”,最后一位是偶校驗位。/O信號線可以用高電平H)也可以用低電平)來表示一個比特位,S字符為LLHH表示’L表示’。TS符號為LHH時,表示智能卡使用“正向約定”,即表示,表示’。反向約定和正向約定同樣也控制在智能卡和讀卡器之間傳輸?shù)拿總€字節(jié)的比特順序。在正向約定下,起始位后的第一個比特是字節(jié)的最低位,然后依次是高次序位。在反向約定下,起始位后的第一個比特是字節(jié)的最高位,然后依次是低次序位。每個傳輸?shù)淖止?jié)必須使用偶校驗;這意味著字節(jié)中包括校驗位在內(nèi),必須有偶數(shù)個。I/O信號線是一個半雙工通道,這表示,智能卡或者讀卡器可以在同一個通道上傳輸數(shù)據(jù),但是兩者不能同時傳輸。所以作為啟動順序的一部分,讀卡器和智能卡都進入接收狀態(tài),偵聽IO信號線。在開始復位操作時,讀卡器處于接收狀態(tài),而智能卡必須進入發(fā)送狀態(tài),并發(fā)送ATR至讀卡器。從此之后,通道兩端在發(fā)送和接收兩個狀態(tài)之間互相交替。在半雙工通道中,沒有一種可靠的方法,使得任何一方可以異步地從發(fā)送狀態(tài)改變到接收狀態(tài),或者從接收狀態(tài)轉(zhuǎn)到發(fā)送狀態(tài)。如果需要這種改變,那么要改變的一方需要進入接收狀態(tài),使得正在進行的操作過程超時;然后讀卡器一方總是會嘗試重新進入發(fā)送狀態(tài),來重新建立一個認可的操作序列。LK和I/O信號線支持寬范圍的不同數(shù)據(jù)傳輸速度。速度由智能卡定義,并且通過ATR中的可選項字符傳送給讀卡器。傳輸速度在IO信號線上通過一個比特時間設(shè)定,這個時間決定了在I/O上采樣,去讀取一個比特以及每個后序比特時的時間間隔。這個時間定義為一個基本時間單元),它建立在幾個因數(shù)之間的線性關(guān)系基礎(chǔ)上。需要注意的是,TS字符在ETU定義產(chǎn)生之前已經(jīng)由智能卡返回給讀卡器。在傳送ATR序列過程中,ETU總是被指定為U3/K頻ISO7816-3——電信號和傳輸協(xié)復位應答一旦讀卡器發(fā)送T信號至智能卡,智能卡必須在接受到ST信號后的00個KISO7816-3——電信號和傳輸協(xié)復位應答一旦讀卡器發(fā)送T信號至智能卡,智能卡必須在接受到ST信號后的00個K周期內(nèi)回復ATR的第一個字符。智能卡可能會因為某些原因不回復R,其中最可能的原因是智能卡沒有正確地插入讀卡器(如上下顛倒)什么情況,只要ATR沒有在預計的時間內(nèi)返回,讀卡器就應該發(fā)送一個序列關(guān)閉智能卡,即讀卡器置、和I/信號線為低,并且降低V線至狀態(tài)即小于0.4V。ATR是一串在成功的啟動序列后,從智能卡返回至讀卡器的字符序列。ISO/ICE7816-3中定TAiTBiTCiTDi:可選的接口字符歷史相關(guān)字符用來指明智能卡制造商或者提供商。這些字符通常用來傳遞智能卡的類型、型號和具體應用范圍。這樣,歷史相關(guān)字符提供了一種機制,在這種機制下,系統(tǒng)能夠自動檢測插入的智能卡的應用范圍(在系統(tǒng)內(nèi)),并且相應地初始化其他操作(或軟件)。檢測字符提供了一個檢查ATATR的結(jié)構(gòu)在下表中詳細給出。正如上面討論的,初始化S字符用來建立讀卡器和智能卡之間的比特信號、比特次序約定。T0字符用來標識接下來的接口字符或者歷史相關(guān)字符是否存在。接口字符用來給出IO通道特性,包括智能卡和讀卡器交換命令(讀卡器至智能卡)和響應(智能卡至讀卡器)過程中使用的協(xié)議。如果存在歷史相關(guān)字符,它被用來向讀卡器傳遞有關(guān)智能卡制造商的具體信息,然后再傳送給讀卡器的應用系統(tǒng)。目前還沒有一個確定的標準,用于定義歷史相關(guān)字符中的內(nèi)容。ATR序列的總長度被限制在33個字節(jié)以內(nèi),并且遵循以下格表字符描全局的,編碼編碼Y2和全局的,編碼編碼Y3和TAi,Tbi和TCi是專用編碼Yi+1和(最多15個字符5ISO7816-4——智能5ISO7816-4——智能起連接層的協(xié)議,就可以定義應用層的協(xié)議了。ISO7816-4定義了兩個這樣的應用層協(xié)議:ISO7816-4定義了一個支持應用協(xié)議APIT0協(xié)T0協(xié)議是一個面向字節(jié)的協(xié)議,規(guī)定了字符在讀卡器和智能卡之間傳輸?shù)姆绞?,還規(guī)定了通過奇偶效驗位來處理每個字節(jié)上的錯誤,如果接收數(shù)據(jù)的奇偶位與發(fā)送數(shù)據(jù)的不符,表示傳輸發(fā)生了錯誤。當檢驗到奇偶效驗出錯時,0協(xié)議要求必須重傳該字節(jié);接收方在檢驗到錯誤時,通過保持IO線為低電平通知發(fā)送方重傳(沒有錯誤時則保持高電平)。當發(fā)送端檢驗到這個低電平后,它將會重新發(fā)送沒有被正確接收的字節(jié)。讀卡器和智能卡數(shù)據(jù)交換結(jié)構(gòu)是傳輸協(xié)議數(shù)據(jù)單元(TPDU)。它包括兩個獨●●●●●P3:與[CLA,INS]命令相關(guān)的參數(shù),說明智能卡與讀卡器間數(shù)據(jù)交換的字節(jié)CLA用于指明所使用命令的命令集。表5列出了一些命令集對應的CLA數(shù)值表CLA命令集CLA指定了命令所在的類,INS字節(jié)指出該類中的具體命令。表6列出了ISO7816-4標準中用于CLA0B0hD0h表ISO7816-4INS參數(shù)1和2定義在鏈路層,但卻取決于應用層的具體命令。它們提供各種應用層命令的控制和地址參數(shù)。例如,在選擇文件命令中,1用于指出文件如何被訪問(通過標識、名字、路徑等),2提供了更加詳細的說明,如選擇哪一個文件。3定義了IS具體命令執(zhí)行期間傳送的字節(jié)數(shù)量。數(shù)據(jù)移動通常是以卡為中心的,也就是說,流出是指數(shù)據(jù)從卡輸送到讀卡器,流入是指數(shù)據(jù)從讀卡器輸送到卡上的?!瘛馎CK:指表ISO7816-4INS參數(shù)1和2定義在鏈路層,但卻取決于應用層的具體命令。它們提供各種應用層命令的控制和地址參數(shù)。例如,在選擇文件命令中,1用于指出文件如何被訪問(通過標識、名字、路徑等),2提供了更加詳細的說明,如選擇哪一個文件。3定義了IS具體命令執(zhí)行期間傳送的字節(jié)數(shù)量。數(shù)據(jù)移動通常是以卡為中心的,也就是說,流出是指數(shù)據(jù)從卡輸送到讀卡器,流入是指數(shù)據(jù)從讀卡器輸送到卡上的?!瘛馎CK:指出卡收到了[CLA,INS]SW1:當前命令的狀態(tài)響應SW2:(可選的)也是傳送到讀卡器的狀態(tài)●●K字節(jié)是來自命令U中S字節(jié)的重復。如果響應沒有在規(guī)定時間到達讀卡器,讀卡器將會發(fā)出一個T序列來重啟在讀卡器和卡之間的協(xié)議。若讀卡器從卡接收到一個以上的L字節(jié),就可以避免這種情況。1通知讀卡器請求的命令結(jié)果。在應用層的協(xié)議中,定義了W1允許的取值。某些命令需要卡發(fā)送數(shù)據(jù)給讀卡器,此時,卡通過回送2,要求讀卡器執(zhí)行ss應用層協(xié)ISO7816-4標準涉及應用軟件的兩部分功能INSINS圖ISO7816-4中定義的APDU結(jié)構(gòu)與T0協(xié)議中使用的TPDU結(jié)構(gòu)非常類似。事實上,當圖ISO7816-4中定義的APDU結(jié)構(gòu)與T0協(xié)議中使用的TPDU結(jié)構(gòu)非常類似。事實上,當T0協(xié)議傳ISO7816-4ISO7816-4應用層協(xié)議有兩種消息:命令APDU(從讀卡器發(fā)送到智能卡)和響應APDU(從智能卡圖命令APDU命令APDU包括頭和主體(見上圖)。命令頭包括A、IS、1和2域。如同T0協(xié)議,A和IS指出了應用的分類和命令。1和2用來詳細說明具體命令,并由每一條A,IS]命令給出具體定義。APDU主體的長度是可變的,它可以作為命令的一部分傳送數(shù)據(jù)到卡的APDU處理器上,也可以用于傳達一個從卡到讀卡器的響應。c域指出了作為命令的一部分,傳送到卡上的字節(jié)數(shù),即數(shù)據(jù)域的長度。數(shù)據(jù)域包括必須要傳送到卡上的信息,它們是APDU處理器執(zhí)行APD的命令所需要的數(shù)據(jù)。域說明了在響應D中,需要返回到讀卡器的字節(jié)數(shù)量。APDU的主體以四種形式存在情況1:沒有數(shù)據(jù)發(fā)送或從卡上接收,所以APDU只包括命令頭●●●●圖響應APDU響應DU的結(jié)構(gòu)比命令APU的結(jié)構(gòu)簡單的多。它包括主體和尾部。主體可以為空也可以包括圖響應APDU響應DU的結(jié)構(gòu)比命令APU的結(jié)構(gòu)簡單的多。它包括主體和尾部。主體可以為空也可以包括一個數(shù)據(jù)域——決定于具體命令。數(shù)據(jù)域的長度由相應的命令DU的e域決定。尾部包括兩個狀態(tài)信息域,分別為S1和S2。這些域返回狀態(tài)碼,一個字節(jié)用來說明錯誤種類,另一個字節(jié)用來說明具體的命令狀態(tài)或錯誤標志。文件系統(tǒng)主文件目錄文件基本文件在每一個智能卡上都有一個主文件,它同時也是文件系統(tǒng)的根。一個主文件可以包括目錄文件或基本文件。保留給主文件的標識符是0。目錄文件本質(zhì)上是基本文件的容器(或目錄),一個F可以包括零個或更多個基本文件。目錄文件把智能卡分為基本文件集合的有序結(jié)構(gòu)。必須要為目錄文件或主文件包含的目錄文件分配一個唯一的文件標識——這樣每一個文件都可以有一個唯一的訪問路徑。目錄文件同樣可以通過名字來訪問1到6個字節(jié)長)。命名規(guī)則可以查看O5。基本文件是層次目錄的葉子結(jié)點,包含實際的數(shù)據(jù)。在目錄文件中通過5位的標識符來標識基本文件。文件系統(tǒng)的層次結(jié)構(gòu)見圖9智能卡文件系統(tǒng)結(jié)構(gòu)圖.●透明文件實質(zhì)上是一個字符串,它是一個非結(jié)構(gòu)化的二進制文件。因此在數(shù)據(jù)讀出或?qū)懭脒@類文件時,要求提供一個相對文件起始的字節(jié)偏移量指針。另外,透明文件的讀寫命令需要包含讀出或?qū)懭胛募淖址拈L度。固定的或可變長度的文件包含一些由序號數(shù)字標識的記錄。在固定長度記錄的文件中,所有的記錄包括相同數(shù)目的字節(jié);相反,可變長度記錄的文件包含長度可以變化的記錄。因此,對可變長度記錄文件的讀寫訪問需要更多的時間,在文件系統(tǒng)的管理中也需要更多時間。透明文件實質(zhì)上是一個字符串,它是一個非結(jié)構(gòu)化的二進制文件。因此在數(shù)據(jù)讀出或?qū)懭脒@類文件時,要求提供一個相對文件起始的字節(jié)偏移量指針。另外,透明文件的讀寫命令需要包含讀出或?qū)懭胛募淖址拈L度。固定的或可變長度的文件包含一些由序號數(shù)字標識的記錄。在固定長度記錄的文件中,所有的記錄包括相同數(shù)目的字節(jié);相反,可變長度記錄的文件包含長度可以變化的記錄。因此,對可變長度記錄文件的讀寫訪問需要更多的時間,在文件系統(tǒng)的管理中也需要更多時間。ISO7816-4下面將簡單討論一下ISO7816-4中定義的幾個用于選擇、讀取、寫入文件的函數(shù)選擇文這個命令建立一個指向智能卡文件系統(tǒng)中指定文件的指針。任一文件處理操作都需要這個指針。對智能卡文件系統(tǒng)的訪問不是多線程的,但可以在任意時刻同時定義幾個文件的指針。這是通過管理通道命令完成的,這個命令在讀卡器端的應用層和卡之間建立了多個邏輯通道。這允許處于不同狀態(tài)的卡上文件同時被讀卡器的應用層訪問。文件的標識可以有以下幾種方式:短的讀二進寫二進更新二進刪除二進讀記●●●寫記●●●寫記添加記更新記這個命令用于寫一個記錄到基于記錄的卡上的EF中,和更新二進制命令一樣,老的記錄被刪除,新的記錄寫入EF中。獲得數(shù)放入數(shù)安全在智能卡上的文件系統(tǒng)中,每一個部件都有其對應的訪問屬性列表。這個訪問屬性保證了只有經(jīng)授權(quán)的主體(程序或人員)求讀卡器提供一個預先定義的個人標識號碼PI);或者也可以是更加復雜的,例如需要讀卡器。驗這個命令是由讀卡器端應用層發(fā)送到卡上的安全系統(tǒng),目的是使卡確信讀卡器知道保存在卡上的密碼,該密碼的作用是限制訪問保存在卡上的敏感信息。這種密碼式的信息,與特定的文件或文件層次結(jié)構(gòu)的一些或全部相關(guān)聯(lián)。如果驗證命令失敗,即讀卡器提供了一個錯誤的密碼,將會向讀卡器返回一個錯誤。內(nèi)部鑒這個命令允許卡通過證明和讀卡器共享密鑰來向讀卡器鑒別自己。讀卡器應用層軟件首先生成一個隨機數(shù)并且用卡和讀卡器都知道的一些算法加密。這就形成了一個對卡的查證,卡然后用共享的(存在卡中)外部鑒這個命令和獲得詢問命令一起使用,讓讀卡器應用層軟件向卡鑒別自己。讀卡器收到來自卡上的詢問數(shù)據(jù)一個隨機數(shù)并用它和先前用獲得詢問命令生成的隨機數(shù)比較;如果比較匹配,卡就確認了讀卡器應用層的身份。獲得詢獲得詢管理通管理通道命令是讀卡器應用層用來打開和關(guān)閉在它與卡之間的邏輯通信通道的。最初,卡通過完成ATR序列和讀卡器應用層建立應用層協(xié)議,從而打開一個基本通信通道。管理通道命令可以利用這個通道來打開或關(guān)閉額外的邏輯通道。封這個命令支持使用T0協(xié)議的安全信息。該命令把某個需要加密的命令APDU合并到封裝命令APDU的數(shù)據(jù)段,隨后卡上的APDU處理器可以取出并執(zhí)行這個命獲得響與前面的命令一樣,獲得響應命令允許使用T0協(xié)議來傳送PU。T0協(xié)議不支持U的第4種類型,即:不能發(fā)送一組數(shù)據(jù)到卡上,然后返回一組數(shù)據(jù)。所以在使用0協(xié)議時,較早的命令回送一個響應,指出卡將有更多數(shù)據(jù)等待發(fā)送。獲得響應命令用于讀取這些數(shù)據(jù)。6文件組表函表SC_Handler表SCState通知用戶智能卡的狀態(tài),允許用戶關(guān)閉智能卡。它的取值在下表中定6文件組表函表SC_Handler表SCState通知用戶智能卡的狀態(tài),允許用戶關(guān)閉智能卡。它的取值在下表中定沒有電源提供該給智能卡(VC=);TF0xx智能卡接口關(guān)閉。沒有時鐘提供給智能卡。voidSC_Handler(SC_State*SCState,SC_ADPU_Commands*SC_ADPU,SC_ADPU_Responce*SC_Response)輸入?yún)?shù)SCState:指向一個包含智能卡狀態(tài)的SC_State枚舉類型的指輸入?yún)?shù)SC_ADPU:指向一個將被初始化的SC_ADPU_Commands結(jié)構(gòu)體的指輸入?yún)?shù)SC_Response:指向一個將被初始化的SC_ADPU_Responce結(jié)構(gòu)體的指無無無無smartcard.h,圖SC_ADPU_Commands結(jié)構(gòu)體在文件smartcard.h中定義如下typedef{圖SC_ADPU_Commands結(jié)構(gòu)體在文件smartcard.h中定義如下typedef{SC_BodyBody;}指明ADPU命令頭。它是SC_Header類型,在smartcard.h中定typedef{}在這個狀態(tài)下,智能卡RST引腳(引腳2)被置低(RST=0)。VCC=5V提供給智能卡CLK提供給智能卡。開始復位響應(ATR)過程。讀卡器等待來自智能卡的ATR如果沒有接收到響應,讀卡器強制復位引腳T為高(RST=1),并且保持它為高直到接收到復位響應。指明[CLA,INS]命令使用的參數(shù)指明ADPU命令主體,這是指明[CLA,INS]命令使用的參數(shù)指明ADPU命令主體,這是SC_Body類型,在smartcard.h中定typedef{●●期望返回的數(shù)據(jù)長度}●指明作為[CLA,INS]命令執(zhí)行的一部分,傳送到卡上的數(shù)據(jù)字節(jié)數(shù)指明作為[CLA,INS]命令執(zhí)行的一部分,從卡上返回的數(shù)據(jù)字節(jié)數(shù)指明ADPU命令響應。它是SC_ADPU_Response類型,在smartcard.h中定義typedef{●●●Data[LCmax]*從卡上返回的數(shù)據(jù)/*命令處理狀態(tài)/*命令處理參數(shù)}●●●例子/*選擇主(根)文件MF*/SC_ADPU.Header.CLA=SC_CLA;SC_ADPU.Header.INSSC_SELECT_FILE;SC_ADPU.Header.P1=0x00;SC_ADPU.Header.P2=0x00;SC_ADPU.Body.LC=0x02;for(i=0;i<SC_ADPU.Body.LC;i++)SC_ADPU.Body.Data[i]=MasterRoot[i];while(i<SC_ADPU.Body.Data[i++]=0;SC_ADPU.Body.LE=0;表例子/*打開卡電源*/表例子表例子void無無無無無表例子/*打開卡電源*/表例子表例子void無無無無無無無無無NewState:智能卡電源的新狀態(tài)這個參數(shù)可以是ENABLE或DISABLE無無無無/*重新向智能卡發(fā)送字節(jié)*/表例子/*TA1*/如何向智能卡發(fā)送APDU下面將詳細介紹關(guān)于如何使用SC_Handler(函數(shù)向智能卡發(fā)送ADPU命令,如何得到卡發(fā)回的/*重新向智能卡發(fā)送字節(jié)*/表例子/*TA1*/如何向智能卡發(fā)送APDU下面將詳細介紹關(guān)于如何使用SC_Handler(函數(shù)向智能卡發(fā)送ADPU命令,如何得到卡發(fā)回的=SC_ADPU.Header.INS=SC_ADPU.Header.P1=0x00;SC_ADPU.Header.P2=SC_ADPU.Body.LC=SCState=SC_ADPU.Header.INS=SC_ADPU.Header.P1=0x00;SC_ADPU.Header.P2=0x00;SC_ADPU.Body.LC=0x02;for(i=0;i<SC_ADPU.Body.LC;i++)SC_ADPU.Body.Data[i]=FileName[i];while(i<LCmax)SC_ADPU.Body.Data[i++]=0;SC_ADPU.Body.LE=●●●void無無無必須在剛剛完成ATR序列后調(diào)無SC_ADPU.Header.CLA=SC_CLA;SC_ADPU.Header.INS=SC_GETRESPONSE;SC_ADPU.Header.P1=0x00;SC_ADPU.Header.P2=0x00;SC_ADPU.Body.LC=0x00;SC_ADPU.Header.CLA=SC_CLA;SC_ADPU.Header.INS=SC_GETRESPONSE;SC_ADPU.Header.P1=0x00;SC_ADPU.Header.P2=0x00;SC_ADPU.Body.LC=0x00;i=0;while(i<LCmax)SC_ADPU.Body.Data[i++]=0;SC_ADPU.Body.LE=SC_Responce.SW2;SC_Handler(&SCState,&SC_ADPU,&SC_Responce);SCState:當前的智能卡狀態(tài)SC_Response->Data:返回給SC_GET_RESPONSE命令的智能卡響應數(shù)據(jù)●●●SC_ADPU.Header.CLA=SC_CLA;SC_ADPU.Header.INS=SC_READ_BINARY;SC_ADPU.Header.P1=OFFSET_MSB;SC_ADPU.Header.P2=OFFSET_LSB;SC_ADPU.Body.LC=0x00;while(i<LCmax)SC_ADPU.Body.Data[i++]=0;SC_ADPU.Body.LE=OFFSET_LSB:數(shù)據(jù)偏移量的低字節(jié)●●●●●●=SC_ADPU.Header.INS=SC_ADPU.Header.P1=0x00;SC_ADPU.Header.P2=SC_ADPU.Body.LC=for(i=0;i<SC_ADPU.Body.LC;i++)SC_ADPU.Body.Data[i]=FileParameters[i];while(i<LCmax)SC_ADPU.Body.Data[i++]=0;SC_ADPU.Body.LE=SC_Handler(&SCState,&SC_ADPU,&SC_Responce);●●●SC_ADPU.Header.CLA=SC_CLA;SC_ADPU.Header.INS=SC_UPDATE_BINARY;SC_ADPU.Header.P1=OFFSET_MSB;SC_ADPU.Header.P2=OFFSET_LSB;SC_ADPU.Body.LC=LENGTH;while(i<{SC_ADPU.Header.CLA=SC_CLA;SC_ADPU.Header.INS=SC_UPDATE_BINARY;SC_ADPU.Header.P1=OFFSET_MSB;SC_ADPU.Header.P2=OFFSET_LSB;SC_ADPU.Body.LC=LENGTH;while(i<{}SC_ADPU.Body.LE=OFFSET_LSB:數(shù)據(jù)偏移量的低字節(jié)●●●●●● SC_ADPU.Header.INS=SC_ADPU.Header.P1=0x00;SC_ADPU.Header.P2=0x00;SC_ADPU.Body.LC=0x08;for(i=0;i<SC_ADPU.Body.LC;i++)SC_ADPU.Body.Data[i]=CHV1[i];while(i<LCmax)SC_ADPU.Body.Data[i++]=0;SC_ADPU.Body.LE=SC_Response->SW1和SC_Response->SW2:返回給SC_VERIFY命令的智能卡響應●●●奇偶錯誤管在0協(xié)議中,通過觀察每個字節(jié)的奇偶位來實現(xiàn)錯誤處理。如果實際的奇偶位與傳送數(shù)據(jù)的奇偶位不相符,那么一定產(chǎn)生了一個錯誤;若檢測到一個奇偶錯誤,接受端將發(fā)出要求重傳的信號。這是通過保持O線為低(通常IO線在傳輸一個字節(jié)前被設(shè)置為高)來實現(xiàn)。當傳送端探測到這個信號,它會重發(fā)沒有被正確接收的字節(jié)。從智能卡向讀卡器發(fā)送從讀卡器向智能卡發(fā)送反之亦然,若智能卡通過拉低I/線來通知發(fā)生了奇偶錯誤,STM3Fxxx的錯誤。智能卡庫中的yrHn)函數(shù)用于檢查是否發(fā)生了奇偶錯誤,若有錯誤發(fā)生則對錯誤進行處理。當調(diào)用當調(diào)用SC_ParityErrorHandler函數(shù)時,若檢測到錯誤將重發(fā)字將在停止位期間拉低I/O線。若發(fā)生了幀錯誤,對應的IRQ事件將調(diào)用SC_ParityErrorHandler()7智能卡接口這個例子實現(xiàn)了對與ISO7816-3/4標
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 疾病預防控制與社區(qū)健康促進計劃考核試卷
- 燈具銷售渠道拓展考核試卷
- 電子旅行充電寶考核試卷
- 電容器在能量儲存系統(tǒng)中的應用考核試卷
- 海洋油氣開采環(huán)境保護與節(jié)能減排技術(shù)考核試卷
- 衛(wèi)生陶瓷行業(yè)智能生產(chǎn)技術(shù)應用考核試卷
- 煤炭批發(fā)企業(yè)戰(zhàn)略規(guī)劃考核試卷
- 中華護理學科技獎
- 《宇宙的未來》課件-1
- 2025年新疆維吾爾自治區(qū)烏魯木齊市天山區(qū)校聯(lián)考中考一模語文試題(含答案)
- 急性心衰護理個案
- 企業(yè)管理箴言解讀
- 《籃球:運球急停急起、體能大比拼》教案
- 2023靜脈治療護理技術(shù)操作標準解讀
- 《標準施工招標文件》(2007年版)
- 說課大賽作品財務會計-說課
- 【企業(yè)會計信息化存在的問題及對策研究-以A銷售公司為例6000字(論文)】
- 幼兒園中班語言《青蛙小弟睡午覺》微課件
- 道路豎曲線任意樁號高程自動計算表
- (新版)學生軍訓理論知識考試題庫(含答案)
- AFC系統(tǒng)介紹教學課件
評論
0/150
提交評論