Нужна помощь Отладка Javacard - PullRequest
       19

Нужна помощь Отладка Javacard

0 голосов
/ 06 декабря 2018

просто хочу посмотреть, смогу ли я получить какую-то помощь по этому вопросу, у меня всего две недели работы с javacard, и давайте скажем, что это весело!хаха, но серьезно.Вот кусок кода, который я вызываю в моей функции, это очень просто, у меня есть немного случайно сгенерированных данных, и я зашифровываю один из массивов в apdu для отправки в ответ, другие команды работают так же хорошо, как memметод, но тот постоянно терпит неудачу.

 private void initi(APDU apdu){

            byte[] buf = apdu.getBuffer();

          cdataoffset = (short)buf[ISO7816.OFFSET_CDATA];
          len = Util.getShort(buf, cdataoffset);


        try{
            rd.generateData(tempbuf, (short) 0, (short) 32);
            rd.generateData(serial, (short) 0, (short) 16);
            rd.generateData(salt, (short) 0, (short) 6);
         }
         catch(CryptoException e){
         ISOException.throwIt((short)(0x6900 | e.getReason()));
         }

        try{
         privKey.setKey(tempbuf, (short) 0);
         }
         catch(ArrayIndexOutOfBoundsException e){}
         catch(NullPointerException e){}

         try{
        cipherPriv.init(privKey, Cipher.MODE_ENCRYPT);
        }
         catch(CryptoException e){
         ISOException.throwIt((short)(0x6900 | e.getReason()));

         }

        try{
          cipherPriv.doFinal(serial, (short) 0, (short) 30, buf, cdataoffset);
        }
        catch(CryptoException e){
        ISOException.throwIt((short)(0x6900 | e.getReason()));

        }

        apdu.setOutgoingAndSend((short) 0, len);




  private void mem(APDU apdu){

    byte[] buf = apdu.getBuffer();

    short availableNVM = JCSystem.getAvailableMemory(JCSystem.MEMORY_TYPE_PERSISTENT);

    short availableVM = JCSystem.getAvailableMemory(JCSystem.MEMORY_TYPE_TRANSIENT_DESELECT);

    Util.setShort(buf, (short) 0, availableNVM);

    Util.setShort(buf, (short) 2, availableVM);

    apdu.setOutgoingAndSend((short) 0, (short) 4);
    }

Кстати, я использую карту JCOP J3A081 и gppro / antbuilder от martin для сборки / установки

ответ от карты:

A >> T = 1 (4 + 0000) B0120000 A << (0000 + 2) (89 мс) 6901 SCardDisconnect («Identiv SCR3500 A Contact Reader», true) </p>

Моя другая теория заключается в том, что я на самом деле получаю свой исключительный бросок плюс значение, но я не нахожу это вероятным, но я действительно не уверен, ха-ха

1 Ответ

0 голосов
/ 06 декабря 2018

Измените значения различных уловов, чтобы они все были разными, и БАМ моя теория, в которой я не был уверен, была верна.это мои исключения, и при изменении коротких значений (т.е. 6900, 6800, 6700) мне удалось определить, какой раздел доставлял мне проблемы!

...