2017-03-29 4 views
-1

私はACR39T-A3スマートカードリーダーをUSB経由でAndroidデバイスに接続しています。APDUケース2応答が短すぎます

まず、このようにAPDUケース2コマンドを送信します。

   int offset = 0; 
       List<byte[]> dataList = new ArrayList<>(8); 

      while (true) { 



        if (!responseString.contains("90 00")) { 
         break; 
        } 


        dataList.add(progress[0].response); 




    int offsetStartInt = 0x7F & (offset >> 8); 
    int offsetEndInt = offset & 0xFF ; 

    //SmartcardOS 
    //T1 
    byte[] apdu = new byte[]{ 
      (byte) 0x00, //CLA 
      (byte) 0xB0, //INS 
      (byte) offsetStartInt, //P1 
      (byte) offsetEndInt, //P2 
      (byte) 0xff, //LE 

    }; 

    transmitApdu(apdu); 
    offset += 256; 

    } 

スマートカードから証明書を取得しようとしています。 証明書は256より大きいので、複数送信する必要があります。 しかし、レスポンスとして、私は証明書の代わりに90 00を得るだけです。

誰も私を助けることができますか?私はどのようにオフセットで動作するのか分かりません。

+0

ありがとうございました。ありがとうございました – user2270079

+0

それは働いてから、私は答えに私のコメントを変更しました。 – guidot

答えて

1

私はあなたのAPIを認識しませんが(と私の意見ではresponseStringはやや魔法のように書かれていますが)、原則としてそれはうまくいくはずです。

あなたが0xFFとしてLEを指定しているので、私はあなたのEFはまだ書かれていなかった場合のみ255

によって相殺インクリメントする代わりに、または

  • ゼロにLEを設定する

    • のいずれかをお勧めしますまったく何枚かのカードは何も返さないかもしれません90 00.

  • 関連する問題