需要帮助调试Javacard

时间:2018-12-06 16:32:18

标签: debugging javacard apdu

我只是想看看我是否能在这方面得到一些帮助,我只用了两周的时间就开始使用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);
    }

BTW im使用JCOP J3A081卡和马丁提供的gppro / antbuilder进行构建/安装

卡片上的回复:

  

A >> T = 1(4 + 0000)B0120000 A <<(0000 + 2)(89ms)6901   SCardDisconnect(“ Identiv SCR3500 A Contact Reader”,true)

我的另一种理论是,我实际上收到了我的异常抛出加一个值,但我没有发现这种可能性,但我真的不确定哈哈

1 个答案:

答案 0 :(得分:-1)

更改不同捕获线的值,以使它们都不同,并且我不确定我的理论是正确的。这是我的例外,通过更改短值(即6900、6800、6700),我设法发现了哪一部分给我带来了麻烦!