Chrome Extension: 使用 Native Messaging 的方式串接讀卡機
前提
由於需用 NFC 登入系統
評估後使用新錼 CL-2100R 來實作
構想是用 Chrome Extension 串接讀卡機可快速登入系統
因 NPAPI 已經被淘汰了
所以用 Native Messaging 來開發
網路上有關 winscard.dll 跟 native messaging 的資料不多
一開始一直被誤導
以為可以直接呼叫 winscard.dll
今天看到這篇文章才晃然大悟
直接在 path 中帶入 winscard.dll 是 NPAPI 的做法
(因為直接 call .dll 不安全,所以才捨棄 NPAPI 的啊 XD)
如何在 Mac 上測試是否有抓到讀卡機
可以輸入以下指令
如果有出現讀卡機的型號就代表有抓到
$ pcsctest
MUSCLE PC/SC Lite Test Program
Testing SCardEstablishContext : Command successful.
Testing SCardGetStatusChange
Please insert a working reader :(我在這邊就卡住了)
如何執行 Chrome Extension
這邊不講解要如何載入開發的程式
只提該怎麼把 Chrome Extension 程式呼叫出來
可在 Chrome 網址列輸入 chrome://apps
就會出現安裝好的 Extension
如果沒出現請確認 Extensions 頁面有開啟該程式
註
winscard.dll 是 Microsoft Windows 內建的動態連結函式庫
基本上讀卡機都是用 winscard.dll 來提供服務
Linux/Mac 上則是使用 PC/SC lite
通常讀卡機廠商都不是自己寫 driver 都用公版程式
Mac 上早在 10.9 版以後就不支援了(10.8 還支援)
我用過兩個牌子都一樣
問過讀卡機廠商也是不了了之
所以目前要在 Mac 上面支援是有困難的(目前的 Mac 版本是 10.14)
Comments
* 將 /usr/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents/Info.plist 改名為 Info.plist-bak
* 將本安裝程式內/Mac 目錄下所附的 Info.plist 複製到路徑 /usr/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents
* 重新開機
* 開啟一個終端機 輸入 pcsctest來測試