2017-01-06 3 views
3

Java Card上にアプレット/パッケージを表示しようとしています。これは私にxxデータバイトを与えるステータスを0x6310にした後、JavaCardからさらにデータを取得する方法は?

 
00 C0 00 00 xx 

:返しますステータスワード0x61xxを命じるので、私はxxバイトをGET応答コマンドを送信

 
80 F2 E0 00 02 4F 00 00 

:私は、リストを取得するには、次のAPDUコマンドを使用しますステータスワード0x6310( "利用可能なデータの詳細")。ステータスワードに示されているように、さらにデータを受け取るために次に送信すべきものは何ですか?

APDUトレース:

 
[SEND] 80 F2 E0 00 02 4F 00 00 
[RECEIVE] 61 F2 
[SEND] 00 C0 00 00 F2 
[RECEIVE] <F2 bytes of data> 63 10 
[SEND] ??? 
+1

多分、すべてのバイトを受信しなかったでしょうか?カードはより少ないバイトを返すかもしれません、Neは応答データの*最大*量です。一度に成功しない場合は、もう一度お試しください。 **いくつかのAPDUのトレースは素晴らしいでしょう**。 –

+0

[SEND] 80 F2 E0 00 02 4F 00 00 [RECEIVE] 61 F2 [SEND] 00 C0 00 00 F2 [RECEIVE] F2 DATAと結果のバイト数63 10 [SEND] ?? –

+0

F2命令はどこで定義されていますか?クラスバイト80はプロプライエタリなコマンドを示していますので、ISO 7816はあまり役に立ちません。 –

答えて

1

は、あなたの質問に示したコマンド/応答シーケンスとあなたがアプレット/パッケージをリストアップしているという事実を見て、私は、これはのGlobalPlatformカード管理についてであることを前提とします。

使用しているコマンド(INS = 0xF2)は、GET STATUSコマンドです。 P1 = 0xE0は、発行者のセキュリティドメイン、セキュリティドメインを含むアプリケーション、および実行可能ファイルの一覧を表示することを示します。 P2 = 0x00は、最初またはすべてのオカレンスを取得する(つまり、検索を開始する)ことを示します。

次に、コマンドに応答して0xF2データバイトを取得します。ステータスワード '6310'は、GPカード仕様によって定義され、より多くのデータが利用可能であることを示します。したがって、エラーなし( '9000')のステータス・ワードを受け取るまで、GET STATUSコマンドを繰り返す必要があります。 '6310'警告条件の後にGET STATUSコマンドを繰り返すには、次のオカレンスを取得することを示すためにP2を0x01に変更する必要があります。したがって、ステータスワード '6310'の受信に応じて、次のコマンドを発行します。

 
80 F2 E0 01 02 4F 00 00 
関連する問題