公式ドキュメント
- Development Kit Tools User Guide
- Developer Kit Simulator User Guide
https://docs.oracle.com/en/java/javacard/3.2/jctug/introduction.html
https://docs.oracle.com/en/java/javacard/3.2/jcdksu/introduction.html
実行環境
OS:Windows11
ターミナル:コマンドプロンプト
ダウンロード
- Java Development Kit (JDK)
JDK17をダウンロードする
- Java Card Development Kit Tools
バージョン25.0をダウンロードする
- Java Card Development Kit Simulator
バージョン25.0をダウンロードする
ダウンロードしたzipファイルは解凍して任意のフォルダに置く
※ フォルダ名にスペースを入れるとエラーが出る
パスの設定
システム環境変数を設定する
JAVA_HOME=path/to/jdk-17
JC_HOME_TOOLS=path/to/Java Card Development Kit Tools
JC_HOME_SIMULATOR=path/to/Java Card Development Kit Simulator
シミュレータの設定
以下のコマンドでシミュレータの初期設定を行う
java -jar %JC_HOME_SIMULATOR%\tools\Configurator.jar -binary %JC_HOME_SIMULATOR%\runtime\bin\jcsw.exe -SCP-keyset 10 1111111111111111111111111111111111111111111111111111111111111111 2222222222222222222222222222222222222222222222222222222222222222 3333333333333333333333333333333333333333333333333333333333333333 -global-pin 01020304050f 03
各パラメータは以下を参考
プロジェクトの準備
プロジェクト用のディレクトリを作成
mkdir MyProject && cd MyProject
アプレットフォルダとクライアントフォルダを作成
mkdir applet client
MyProject配下にclient.config.propertiesを作成する
パラメータはシミュレータ初期設定時に設定したものを使う
A000000151000000_scp03enc_10=1111111111111111111111111111111111111111111111111111111111111111
A000000151000000_scp03mac_10=2222222222222222222222222222222222222222222222222222222222222222
A000000151000000_scp03dek_10=3333333333333333333333333333333333333333333333333333333333333333
アプレットの作成
アプレットフォルダに移動
cd applet
アプレット用のパッケージフォルダを作成
以下は一例
mkdir src\com\github\family36\javacard\myapplet
アプレットのjavaファイルをsrc\com\github\family36\javacard\myapplet配下に作成し、コードを記入する
package com.github.family36.javacard.myapplet;
...
javaファイルをコンパイルしてクラスファイルを作成する
このコマンドはappletディレクトリで実行する
"%JAVA_HOME%\bin\javac.exe" -g -d .\bin --release 10 -cp "%JC_HOME_TOOLS%\lib\api_classic-3.2.0.jar;%JC_HOME_TOOLS%\lib\api_classic_annotations-3.2.0.jar" src\com\github\family36\javacard\myapplet\MyApplet.java
CAPファイル変換用の設定ファイルを作成する
mkdir configurations && cd configurations
configurations配下にMyApplet.confを作成する
以下は一例
-i
-classdir ../bin
-applet 0xA0:0x00:0x00:0x00:0x62:0x03:0x01:0x0C:0x01:0x01 com.github.family36.javacard.myapplet.MyApplet
-out CAP JCA EXP
-d ../deliverables/MyApplet
-debug
-target 3.2.0
com.github.family36.javacard.myapplet
0xA0:0x00:0x00:0x00:0x62:0x03:0x01:0x0C:0x01 1.0
クラスファイルをCAPファイルに変換する
このコマンドはconfigurationsディレクトリで実行する
"%JC_HOME_TOOLS%\bin\converter.bat" -config MyApplet.conf
クライアントファイルの作成
クライアントフォルダに移動
cd ../../client
mkdir src\com\github\family36\javacard\myapplet
クライアントのjavaファイルをsrc\com\github\family36\javacard\myapplet配下に作成し、コードを記入する
package com.github.family36.javacard.myapplet;
...
javaファイルをコンパイルしてクラスファイルを作成する
このコマンドはclientディレクトリで実行する
set EXT_MODULEPATH=%JC_HOME_SIMULATOR%\client\AMService;%JC_HOME_SIMULATOR%\client\COMService
"%JAVA_HOME%\bin\javac" -d .\bin --release 10 -cp "%JC_HOME_SIMULATOR%\client\AMService\amservice.jar;%JC_HOME_SIMULATOR%\client\COMService\socketprovider.jar" --module-path %EXT_MODULEPATH% --add-modules ALL-MODULE-PATH src\com\github\family36\javacard\myapplet\AMSMyAppletClient.java
シミュレーションの実行
新しいコマンドプロンプトを立ち上げ、シミュレータを起動
"%JC_HOME_SIMULATOR%\runtime\bin\jcsw.exe"
クライアントコードを実行する
set ARGS_CLIENT=-cap=absolute_path\to\MyApplet.cap -props=..\client.config.properties
"%JAVA_HOME%\bin\java" -cp "bin;%JC_HOME_SIMULATOR%\client\AMService\amservice.jar;%JC_HOME_SIMULATOR%\client\COMService\socketprovider.jar" --module-path %EXT_MODULEPATH% --add-modules ALL-MODULE-PATH com.github.family36.javacard.myapplet.AMSMyAppletClient %ARGS_CLIENT%