JavaCardの世界 by moznion
https://gyazo.com/0fa24c974db4d9941ca2096dd1302a85
JavaCardはfloatを扱えない
charも扱えない
byteは扱える
文字列はbyte
JavaCardとは
smart cardの中の一種
intelligent smart card
Application protocol data units
comand APDU
respons APDU
Universal integrated circuit card
JavaCard ver1は存在が不明
今3.xぐらい
GCされるかどうかはカード側の実装次第
サンドボックス
applet間でobjectを共有する事もできる、場合もある
電池が切れてもインスタンス変数はEEPROMに保存される
電源が切れてもインスタンス変数は生きてる
でもインスタンス変数を使いすぎると、お客さんのSIMコードが壊れる
RAMは8byte
まじかよshokai.icon
取得できないと例外がthrowされる
ライフサイクル
initialization phase
製造者情報とかを書き込む
personalization phase
アプリを書く人がよく使うのはこっち
JavaCard Applet
card上のアプリケーションの事
ブラウザに埋め込まれるアレの事ではない
環境
intが使えたり使えなかったりする
java card 3.0かつclassicではない場合に使える
shortでやる
インスタンス変数はEEPROMに保存される
trangent arrayとか使うとROMに保存できる
Eclipse
javacard pluginがある唯一のIDE
JDK1.6を使う
Appletの動作
install
register
select
process
deselect
というライフサイクルがある
public static void installは必須
private final static byte SELECT_INS = (byte)0xA4;は世界標準
public void process(APDU apdu)
ISO7816.***みたいなexceptionや定数がある
プログラムをカードに書き込む
鍵が手に入らない
個人の趣味の範囲では手に入らない
AIDも必要
RIDとPIXの集合体?
趣味の範囲では手に入らない
JavaCardを買う
AliexpressやAmazonで売ってる
仕事ではGemaltoやIDEMIAから買う
JavaCardではforループが使える!
アプリケーション
SIMカード内アプリ
identification
githubでjavacard.frameworkで検索すると6000ファイルぐらいhitする
smartcardがなんでjavaで書かれるようになったのか?
javaがセキュリティに気を使っている部分もあってウケたのかも?わからん
eSIMでもJavaCard動く
エミュレーションではなくJavaCardそのものが動いている
selectとdeselectを、applet側がやる
明示的にやる
OSレイヤーがappletを良い感じにやってくれる世界観ではない