Page 1 of 1

ECC implementation: 6F 00 during installation

Posted: Wed Aug 26, 2015 5:12 am
by lostsiwonlw
I am using ECC to implement the signing function.

Code: Select all

package ECCtest;

import javacard.framework.*;
import javacard.security.*;
import javacardx.crypto.*;

public class ECCtest extends Applet
{
private byte[] PLAINTEXT ;
private ECPrivateKey objECDSAPriKey=null;   
private ECPublicKey objECDSAPubKey=null;   
private KeyPair objECDSAKeyPair=null;       
private Signature objECDSASign=null;       

final static short BAS =  0;

public static void install(byte[] bArray, short bOffset, byte bLength)
{
  new ECCtest(bArray, bOffset, bLength);
}

private ECCtest(byte bArray[], short bOffset, byte bLength)
 {
  PLAINTEXT = new byte[0x100] ;
  Util.arrayFillNonAtomic(PLAINTEXT,  BAS, (short)0x100, (byte)0);

  objECDSAKeyPair= new KeyPair(KeyPair.ALG_EC_FP, KeyBuilder.LENGTH_EC_FP_192);         

  objECDSASign = Signature.getInstance(Signature.ALG_ECDSA_SHA, false);

  register();
}

public void process(APDU apdu)
{
  byte buf[] = apdu.getBuffer();
 
  switch(buf[1])
   {
      case (byte)0xA4:
              break;

      case (byte)0x46:
           objECDSAKeyPair.genKeyPair();
           objECDSAPriKey = (ECPrivateKey)objECDSAKeyPair.getPrivate();
           objECDSAPubKey = (ECPublicKey)objECDSAKeyPair.getPublic();
           break;

  case (byte)0x2E:
           short Le = apdu.setOutgoing();
           short sSignLen=0 ;
          objECDSASign.init(objECDSAPriKey, Signature.MODE_SIGN);

          sSignLen = objECDSASign.sign(PLAINTEXT, BAS, Le, buf, BAS);

         apdu.setOutgoingLength(sSignLen);
         apdu.sendBytes(BAS, sSignLen);
          break;
  default:
  ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
  }

  return;
}

}


But when I install my applet,I encounter error code: 6F 00.
I don't know what's wrong with my code.
In addition, I am told that my card supports ECC, but I'm not sure if it really supports ECC.
How can I check it?

Re: ECC implementation: 6F 00 during installation

Posted: Thu Aug 27, 2015 3:01 am
by UNKNwYSHSA
1 First, the statement:

Code: Select all

PLAINTEXT = new byte[0x100]; 

Is there enouth NVM free for the applet?
2 If you comments code line:

Code: Select all

    objECDSAKeyPair= new KeyPair(KeyPair.ALG_EC_FP, KeyBuilder.LENGTH_EC_FP_192);         
    objECDSASign = Signature.getInstance(Signature.ALG_ECDSA_SHA, false);

and the applet install no problem, then the ECC support of your card may had problem, you need to confirm this.