當前位置:編程學習大全網 - 源碼下載 - PCSC驅動問題?

PCSC驅動問題?

pcsc驅動開發

以下內容是翻譯國外網站上的:

如果想完全了解pcsc協議,可以去PC/SC Workgroup網站上下載協議看.該網站包括了大量pcsc主題方面的信息 也可以去啃MSDN , 也可發現相關文檔. DDK中也包含了壹些smartcard例子,留給有信心有毅力的壹定要寫出pcsc驅動的人.這可不是壹件輕松的事,pcsc驅動有它自己的內部構造(pcsc驅動會與smclib連續),很多地方比較晦澀難懂,非驅動老手,還要多從各種可能的地方獲取信息。當然ddk是開發驅動壹個不錯的出發點。

把pcsc協議搬到這裏來講,個人認為並不是什麽好辦法,這裏主要講講對pcsc的理解來讓讀者入門。

例子中的pcsc驅動不是壹個服務讀卡器和智能卡的全功能的pcsc驅動,如大家所知,驅動安裝以後,系統就能識別pcsc讀卡器,應用程序就可以通過微軟的smartcard組件來訪問智能卡。現在流行的usbkey(國外習慣叫usbtoken或usb dongle)是壹種安全認證的設備,集成了讀卡器和卡片,上層應用利用pcsc框架調用微軟的csp進行數字簽名,身份認證等功能。 如果不走pcsc架構,這些功能的開發可以說壹點不比開發驅動容易。

pcsc架構有幾個層次:

ICC - integrated circuit cards; 卡片

IFD - interface device (讀卡器);

IFD handler - handler of interface device (簡單的說就是驅動);

Resource Manager - service, 管理和控制應用程序所有對任何讀卡器中智能卡訪問. 比如多個應用程序同時對壹張卡操作,那麽Resource Manager會對請求進行管理排隊,從而保證系統和設備不會打架。

Service Providers - 如cryptographic (CSP) and noncryptographic(SCSP) service providers 這部分通常是建立的基於智能卡的應用服務。用戶的智能卡能當作什麽用途,就是在這裏實現的。這部分要由用戶自行開發。

pcsc驅動屏蔽了設備和其他壹些通訊協議方面的事情,這樣不管妳的讀卡器是串口,並口,usb口,不管妳的通訊協議是怎麽定義的。用戶要對妳的智能卡進行開發,都只需調用windows提供的pcsc函數,而不需管底層的實現細節。把設備和應用開發劃分成了兩個獨立的模塊。這兩塊都用windows的pcsc函數進行接口。這樣只要符合pcsc協議的設備,都可以拿來為妳所用,而妳開發的軟件,無需任何修改也可以應用到許多不同廠商的設備上。

如果妳的pcsc驅動滿足某些條件,那麽妳可以開發出很奇特的設備,比如usbkey(把讀卡器和卡固定地做在壹起),然後讓系統識別它為插入卡的讀卡器。那麽usbkey可以替代讀卡器+卡模式完成windows的域登錄等。開發usbkey的成本比開發讀卡器加卡的成本要低得多。可能只有三分之壹不到。當然,我也承認目前這方面的爭論很大,但是我們面對爭論的辦法,只是讓研究繼續……

生產usbkey比較大的廠家國內有華大,握奇,明華,海泰等,國外有aladdin,rainbow等。

小結:無論對於usbkey或者讀卡器來說PC/SC驅動是非常重要的部分。 希望這個例子能夠對那些對pcsc驅動有興趣的人有所幫助。

基本上比較正確。但是在98系統下,PCSC架構的驅動有硬傷,98智能卡補丁中的SCRM不支持讀卡器的即插即用,即使設備本身是PNP的。所以在98系統可以考慮只使用USB驅動。

卡商壹般在驅動以上會封裝壹層設備API層,本層通過SCRM訪問驅動,或者直接和通過USB驅動訪問設備。設備API層上面再封裝壹層應用API層,封裝了7816指令,對上層的應用屏蔽了7816指令的細節。再往上就是CSP,當然也可能在CSP和應用API層之間加上P11層,以實現CSP和P11的無縫連接和互用。

例子中最重要的函數是SendSmdReader().此函數應當在外部硬件(卡上或usbkey)上執行。為了模擬虛擬卡片的插拔動作,我建立了壹個額外的線程WORKER thread (function VdVendorIOCTL),還用函數IoCreateSynchronizationEvent建立了壹個事件 SC_INSERT_REMOVE。 用戶應用程序(ins_rem.exe) 觸發這個事件和驅動模擬卡片插拔。第二個應用程序 (sc_mon.exe) 報告虛擬卡片目前的狀態。並且也可以用工具軟件PCSCInf.exe等來檢測卡片狀態。

此驅動支持系統事件日誌SYSTEM EVENT LOG, 保存相應的狀態信息和錯誤信息。所有的信息都可以用系統標準的事件查看器查看。

復位應答數據、用二進制文件來模擬卡片上內存的文件,都保存在驅動源碼中。能通過註冊表對它很容易地修改和設置。虛擬讀卡器的名稱是"COMRAD 000001 0"

PC/SC driver測試工具:

1. TAPDUDemoCard from Vizvary Istvan

此工具用來與虛擬的智能卡通訊,無需寫壹行代碼,通訊是雙向模式的。

2. APDU command test from Vizvary Istvan;

和第壹個工具很相似。

3.PCSC Info from ZeitControl cardsystems GmbH;

工具,用來測試任何pcsc兼容讀卡器,它能控制讀卡器中卡的狀態,並報告當前卡狀態

虛擬讀卡器能用在win2k的域登錄上。智能卡登錄是win2k的壹項非常棒的功能特性。在妳的智能卡或usbkey中存放證書,這樣登錄時系統會檢查妳的證書,認可方能登錄。此例中,當虛擬智能卡拔出和系統鎖定pc機時,虛擬讀卡器才向資源管理器報告。

首先,把lock_pc。reg文件導入註冊表,激活win2k登錄設置。即"請 CTRL+ALT+DEL登錄", 參數 "Winlogon\scremoveoption" 能被置 "1"或 "2", 意味著 "卡拔出時鎖定計算機" 和"卡拔除時註銷當前用戶". 如果驅動正確安裝,妳就能看到域登錄窗口彈出來. 請用ins_rem工具模擬虛擬卡片的插拔動作.

  • 上一篇:淘寶開超級推薦會不會影響自然搜索
  • 下一篇:GPRS心跳間隔有什麽用
  • copyright 2024編程學習大全網