2016/01/10

[nfc]PC/SCを試す (7)

予告通り、Verifyだ。

IC運転免許証の仕様書にあるアクセス方法と、一般的なISO/IEC 7816のアクセス方法に違いがあるかどうかは、比較対象がなくてわからない。
今のところ、以下の順でAPIを使えば動いている。

  1. BeginTransaction
  2. Transmit
  3. EndTransaction

こう書くと、データベースへのアクセスみたいですな。


で、IC運転免許証に対するVerifyだが、使い道は2種類ある。
実際に暗号の認証を行うのと、残り思考可能回数を取得するのとだ。

暗証番号は、実際にアクセスして、間違ったら残り試行可能回数が減る、という作りになっている。
免許証は最大3回まで残り試行可能回数があるので、3回間違えばアクセスできなくなる。
アクセスできなくなった状態を「閉塞状態」と呼ぶようだ。

いきなり書込んで失敗する勇気は私にはないので、まずは回数の取得を行った。
PC/SCのコマンドの実行結果というか、ISO/IEC 7816コマンドの実行結果というかは、SW1=0x90、SW2=0x00が返ってくるのだが、回数の取得の時はSW1=0x63が返ってくる。
0x63の意味は「不揮発性メモリの状態は、変化している」ということなのだが・・・まさか回数取得だけで不揮発性メモリの内容までは変化しないよな?

やってみたが・・・残り試行回数は変化しなかった。
よかったよかった。
今のところ、3回がずっと取得できている。
1回くらい間違えたパスワードを設定して「2」になるのを確認したい気もするが、ちょっと怖い。

それと、3回失敗したら閉塞状態になるのはわかったが、2回失敗して3回目に成功したら思考可能回数は3に戻るのかもわからん。
もしそうなら、他の人が作ったIC運転免許証を読むアプリでアクセスすれば済むのだけど。

 

あと試せるのはREAD BINARYなのだが、もしかしたらMF直下のEF01は読むことができるのかな?
次回はそれを試そう。