0

Javaカードを使用してスマートカードにデータを書き込む方法を教えてもらえますか? 私はJavaカード2.2を使用しているこのコードを持っています

private void writeName(APDU apdu) throws ISOException
{ 
    apdu.setIncomingAndReceive();
    byte[] apduBuffer = apdu.getBuffer();

    byte j = (byte)apduBuffer[4];

    userName = new byte[j];
    for (byte i=0; i<j; i++)
    {
        userName[(byte)i] = (byte)apduBuffer[5+i];
    }
}
4

1 に答える 1

1

アプレットの開発に JCOP プラグインを使用している場合、各パッケージの bin/ ディレクトリに .CAP ファイルがあります。次に、依存関係の順に各パッケージをインストールする必要があります。アプリケーションがパッケージ A、B、および C で構成され、アプレットが C パッケージであるとします。B は A をインポートし、C は B をインポートします。

パッケージをインストールする必要がある順序は、A、B、C です。JCOP を使用すると、これは次の方法で実現できます。

cm> install <pkgAID> package.cap

3 つのパッケージに対してこれを行ったら、アプレットをインストールする必要があります。これは、次の方法で実現できます。

cm> install -q <install params> <pkgAID> <AppletAID> packageC.cap

これを行うと、アプレットが SELECTABLE 状態になります。JCOP シェル コンソールは次のようになります。

Card Manager AID   :  A000000003000000
Card Manager state :  SECURED

    Application:  SELECTABLE (--------) A00000008710015553
    Application:  SELECTABLE (--------) "2PAY.SYS.DDF01"
    Application:  SELECTABLE (--------) A0004D6946617265
    Application:  SELECTABLE (--------) A0000000041010  

そして、「モジュール」(ライブラリ) であるすべてのパッケージは、次のように表示されます。

    Load File  :      LOADED (--------) A0000002994E6F53
     Module    :                        A0000002994E6F53656C656374
    Load File  :      LOADED (--------) A0000002990410  
     Module    :                        A00000029904101045

SELECTABLE 状態のすべてのアプレットを選択して操作できるようになりました。A00000008710015553 のアプレットにデータを送信する場合は、最初にそれを選択する必要があります。相互作用は次のようになります。

cm>  /select A00000008710015553
 => 00 A4 04 00 09 A0 00 00 00 87 10 01 55 53 00       ............US.
 (5273 usec)
 <= 90 00                                              ..
Status: No Error

これで、send コマンドを使用して上記のアプレットにデータを送信できます。

cm>  /send 00200000043131313100
 => 00 20 00 00 04 31 31 31 31 00                      . ...1111.
 (34423 usec)
 <= 90 00                                              ..
Status: No Error

これらはすべて標準の GP コマンドです。GP 準拠のカードを使用していると仮定しました。あなたはそれについて何も言及していません。

個人的には、JC ランタイム環境と JC VM がどのように機能するか、さらに詳しく調べる前に API との関係と GP 仕様について少し読む必要があると感じています。

于 2011-11-27T06:53:45.580 に答える