ubuntu/Mac系統智慧卡操作全攻略2--Java Card之旅

鄒德強發表於2012-09-20

上一個攻略講到怎麼打通linux到讀卡器的訪問,以及實現最底層的APDU收發。現在讓我們進階一下,進入JavaCard的環境:

關於在ubuntu上搭建JavaCard開發環境,參閱我之前的部落格--http://blog.csdn.net/caesarzou/article/details/7534493 , 本文主要講一下JavaCard的應用下載環境:GP相關的工具。

上一篇文章的環境是ubuntu 11.10在12.04下ant已經升級,不再支援jre1.5。所以先做小小修正

1. 在~/.bashrc中刪除JAVA_HOME的定義,使用預設的JRE: OpenJDK icetea

2. 修改~/javacard/samples/build_samples.xml中的編譯任務javac,增加屬性:fork="true" executable="/usr/lib/jvm/java-1.5.0-sun" 或者增加 target="1.5" 來使用sun的1.5jdk編譯或者使用當前的jdk編譯1.5版本的位元組碼。

3. 之前描述了JCOP 3.1.1b eclipse外掛在ubuntu上的安裝,但只支援了虛擬卡片。我們現在已經打通了PCSC,現在就讓這個外掛來操作實卡。

#首先開啟eclipse,我們發現debug configuration部分的PCSC部分是灰的,不能選擇讀卡器。

#來到外掛的目錄

cd /usr/lib/eclipse/plugins/com.ibm.bluez.jcop.eclipse_3.1.1.b/

ls

#我們可以看到作業系統的支援目錄

cd os/linux/x86

ls

#可以看到外掛在linux下pcsc介面的動態庫檔案libjpcsc.so,為啥沒起效呢? 我們來分析一下

ldd libjpcsc.so

可以看到此動態庫依賴的一個動態庫找不到了:libpcsclite.so.0

#是不是很眼熟。沒錯,這正式pcsclite的庫。連結失敗可能是因為libjpcsc.so編譯的時候連結的pcsclite的庫版本和當前系統的版本不符。

#我們安裝的pcsclite的庫是gnu的,所以來到目錄

cd /usr/lib/i386-linux-gnu

ls libpcsclite*

#可以找到系統的pcsclite庫檔案:libpcsclite.so (隨著版本不同可能會有變化,具體參考 libpcsclite.la中的libtools的描述)

sudo ln -P libpcsclite.so ../libpcsclite.so.0

#為此庫檔案建立一個硬連結,再次檢查 libjpcsc.so 可以看到連結成功了。

#重新開啟eclipse,開啟debug configurations, 建立一個Java Card Application的配置,可以看到Card Reader一欄已經啟用,選擇讀卡器,配置好ISD和Key,點Debug。

熟悉的JCShell開啟了!

GlobalPlatform自己的開源專案GPShell也有for linux的版本,但是down下來之後編譯總是失敗,有搞定的同學可以指點一下。

anyway,javacard開發和下載的主要環境已經搭好。做JavaCard Applet的同學可以從windows上搬家過來了。 開發COS的同學,還需要搞定gcc交叉編譯~~~我正努力嘗試中,希望相應的攻略儘快出來。


相關文章