Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

Java card "No precise diagnosis"

957e6704-ce0a-4b4e-8e59-a980fece4a22Aug 3 2015 — edited Aug 3 2015

why the program stopped on the line rsaCipherNoPad.init(parameter[0], Cipher.MODE_ENCRYPT);?

the code is as follows.



public class dh extends Applet {

private final static byte INS_SECRET = (byte)0x01;

private final static byte INS_SET = (byte)0x02;

private static Key parameter[];

private static Cipher rsaCipherNoPad;

private static byte[] secret;

short l=0x80;

   private static byte[] privatea = new byte[] {

(byte) 0x01, (byte) 0xCD, (byte) 0x4A, (byte) 0x70, (byte) 0xFF, (byte) 0xDC, (byte) 0x3D, (byte) 0x42,

  (byte) 0xC8, (byte) 0x62, (byte) 0xFD, (byte) 0x5E, (byte) 0x3D, (byte) 0x78, (byte) 0x1E, (byte) 0xB6,

  (byte) 0xDE, (byte) 0x97, (byte) 0x67, (byte) 0x7B, (byte) 0x4F, (byte) 0xF6, (byte) 0x13, (byte) 0x19,

  (byte) 0x24, (byte) 0x2E, (byte) 0x14, (byte) 0x99, (byte) 0xB5, (byte) 0xCD, (byte) 0x19, (byte) 0x08,

  (byte) 0xA9, (byte) 0xB5, (byte) 0x42, (byte) 0x21, (byte) 0x13, (byte) 0x5D, (byte) 0x1E, (byte) 0xDB,

  (byte) 0xAD, (byte) 0x78, (byte) 0x7A, (byte) 0x5C, (byte) 0xE3, (byte) 0x75, (byte) 0x86, (byte) 0xCF,

  (byte) 0xE8, (byte) 0x6A, (byte) 0x61, (byte) 0xC4, (byte) 0x78, (byte) 0x18, (byte) 0x71, (byte) 0x57,

  (byte) 0x26, (byte) 0x7C, (byte) 0x97, (byte) 0xB4, (byte) 0x0A, (byte) 0x7F, (byte) 0x27, (byte) 0x27,

  (byte) 0xB9, (byte) 0xB9, (byte) 0x2F, (byte) 0xAC, (byte) 0xEC, (byte) 0x26, (byte) 0x7C, (byte) 0xC0,

  (byte) 0x1C, (byte) 0x88, (byte) 0x3F, (byte) 0xA3, (byte) 0x78, (byte) 0x3B, (byte) 0xA0, (byte) 0x7D,

  (byte) 0xC0, (byte) 0x90, (byte) 0xEE, (byte) 0x04, (byte) 0x99, (byte) 0xC9, (byte) 0xCE, (byte) 0x88,

  (byte) 0xC6, (byte) 0x84, (byte) 0xC8, (byte) 0x74, (byte) 0x0F, (byte) 0xEB, (byte) 0x84, (byte) 0xF4,

  (byte) 0x49, (byte) 0xB0, (byte) 0xF5, (byte) 0x44, (byte) 0xC1, (byte) 0x74, (byte) 0x77, (byte) 0x16,

  (byte) 0x46, (byte) 0xBD, (byte) 0xB7, (byte) 0xA3, (byte) 0x0B, (byte) 0x0E, (byte) 0x3A, (byte) 0xB5,

  (byte) 0x6C, (byte) 0x65, (byte) 0x5F, (byte) 0x0E, (byte) 0x83, (byte) 0xA9, (byte) 0x8A, (byte) 0x4B,

  (byte) 0xA9, (byte) 0x9E, (byte) 0xB9, (byte) 0xF1, (byte) 0x0B, (byte) 0x0C, (byte) 0x0F, (byte) 0xBF};

 

   private static byte[] p = new byte [] {

  (byte) 0xDC, (byte) 0xB5, (byte) 0x54, (byte) 0xDF, (byte) 0x8C, (byte) 0x69, (byte) 0x31, (byte) 0xE8,

  (byte) 0x65, (byte) 0xC1, (byte) 0xB5, (byte) 0x88, (byte) 0x27, (byte) 0x3D, (byte) 0x80, (byte) 0xA2,

  (byte) 0xD8, (byte) 0x7A, (byte) 0xB5, (byte) 0x39, (byte) 0xC5, (byte) 0xE4, (byte) 0xA0, (byte) 0x74,

  (byte) 0xB4, (byte) 0x02, (byte) 0x49, (byte) 0xFF, (byte) 0x65, (byte) 0x5A, (byte) 0x9A, (byte) 0xB8,

  (byte) 0x30, (byte) 0x63, (byte) 0x3B, (byte) 0x45, (byte) 0x7C, (byte) 0x4C, (byte) 0xF8, (byte) 0x85,

  (byte) 0xE3, (byte) 0x1C, (byte) 0xD7, (byte) 0x9F, (byte) 0x81, (byte) 0x14, (byte) 0x8C, (byte) 0x8A,

  (byte) 0x68, (byte) 0xD1, (byte) 0xDB, (byte) 0xFC, (byte) 0x2F, (byte) 0x7B, (byte) 0x70, (byte) 0xED,

  (byte) 0x55, (byte) 0xC0, (byte) 0x38, (byte) 0x7C, (byte) 0x23, (byte) 0xA0, (byte) 0x47, (byte) 0x9A,

  (byte) 0x95, (byte) 0x72, (byte) 0xE8, (byte) 0xA6, (byte) 0x71, (byte) 0x4F, (byte) 0x41, (byte) 0x8A,

  (byte) 0x6B, (byte) 0xF9, (byte) 0xB0, (byte) 0x0E, (byte) 0xC5, (byte) 0xBC, (byte) 0x4D, (byte) 0xEF,

  (byte) 0x25, (byte) 0x5A, (byte) 0x94, (byte) 0x85, (byte) 0x05, (byte) 0x8A, (byte) 0x42, (byte) 0x71,

  (byte) 0x00, (byte) 0x8B, (byte) 0xA6, (byte) 0x94, (byte) 0xAA, (byte) 0x62, (byte) 0xCC, (byte) 0x18,

  (byte) 0x38, (byte) 0x5E, (byte) 0xF9, (byte) 0xD7, (byte) 0xB6, (byte) 0xE8, (byte) 0x33, (byte) 0xA7,

  (byte) 0x08, (byte) 0x8A, (byte) 0xC8, (byte) 0x17, (byte) 0xAA, (byte) 0x1F, (byte) 0x9B, (byte) 0x93,

  (byte) 0xA8, (byte) 0x6B, (byte) 0x98, (byte) 0x3E, (byte) 0xAB, (byte) 0x73, (byte) 0xC1, (byte) 0x58,

  (byte) 0x84, (byte) 0xE7, (byte) 0x33, (byte) 0x66, (byte) 0x56, (byte) 0x59, (byte) 0xCA, (byte) 0x7D};

 

   private static byte[] publicB = new byte [] {

  (byte) 0x8E, (byte) 0xBC, (byte) 0x44, (byte) 0x57, (byte) 0xEA, (byte) 0xBB, (byte) 0xEF, (byte) 0x83,

  (byte) 0x65, (byte) 0xD6, (byte) 0xEF, (byte) 0x83, (byte) 0x9A, (byte) 0x1A, (byte) 0x36, (byte) 0x72,

  (byte) 0x44, (byte) 0x94, (byte) 0x86, (byte) 0xB2, (byte) 0x77, (byte) 0x9E, (byte) 0xF8, (byte) 0x8E,

  (byte) 0xB0, (byte) 0x19, (byte) 0x8A, (byte) 0xDD, (byte) 0xC6, (byte) 0x4A, (byte) 0x09, (byte) 0x6B,

  (byte) 0x0A, (byte) 0xFC, (byte) 0x3C, (byte) 0x26, (byte) 0x4D, (byte) 0x64, (byte) 0xED, (byte) 0xFD,

  (byte) 0xF5, (byte) 0x43, (byte) 0xC0, (byte) 0x3B, (byte) 0xAE, (byte) 0xC7, (byte) 0xED, (byte) 0x5D,

  (byte) 0x58, (byte) 0xC2, (byte) 0xF2, (byte) 0xA1, (byte) 0x4B, (byte) 0x63, (byte) 0xBB, (byte) 0x5D,

  (byte) 0x28, (byte) 0x0E, (byte) 0x62, (byte) 0xFE, (byte) 0xCA, (byte) 0xC0, (byte) 0xA6, (byte) 0xDD,

  (byte) 0xF2, (byte) 0x55, (byte) 0xCE, (byte) 0xB9, (byte) 0x2A, (byte) 0xB5, (byte) 0x1C, (byte) 0x0D,

  (byte) 0xB6, (byte) 0x72, (byte) 0xA2, (byte) 0x51, (byte) 0x68, (byte) 0x93, (byte) 0x4F, (byte) 0x86,

  (byte) 0x7B, (byte) 0x95, (byte) 0x55, (byte) 0x2A, (byte) 0x18, (byte) 0x9A, (byte) 0x32, (byte) 0x44,

  (byte) 0x4A, (byte) 0xF8, (byte) 0x90, (byte) 0xB7, (byte) 0x75, (byte) 0x09, (byte) 0xED, (byte) 0x92,

  (byte) 0xEC, (byte) 0x5A, (byte) 0x81, (byte) 0xA7, (byte) 0xD7, (byte) 0x87, (byte) 0xF5, (byte) 0xF5,

  (byte) 0x51, (byte) 0xB3, (byte) 0x7E, (byte) 0xB2, (byte) 0xFA, (byte) 0x3A, (byte) 0x49, (byte) 0xC7,

  (byte) 0x78, (byte) 0x7B, (byte) 0x5F, (byte) 0x61, (byte) 0x35, (byte) 0x27, (byte) 0x64, (byte) 0x9C,

  (byte) 0x15, (byte) 0x1C, (byte) 0x17, (byte) 0x86, (byte) 0x84, (byte) 0x17, (byte) 0xE9, (byte) 0xCA};

   public dh()

 

  parameter=new Key[1];

  rsaCipherNoPad = Cipher.getInstance(Cipher.ALG_RSA_NOPAD, false);

  secret = new byte [128];

 

   public static void install(byte[] bArray, short bOffset, byte bLength) {

// GP-compliant JavaCard applet registration

new DH.dh().register(bArray, (short) (bOffset + 1), bArray[bOffset]);

 

public void process(APDU apdu) {

// Good practice: Return 9000 on SELECT

if (selectingApplet()) {

return;

 

byte[] buf = apdu.getBuffer();

switch (buf[ISO7816.OFFSET_INS]) {

case (byte) 0x00:

break;

case INS_SET:

 

parameter[0]=KeyBuilder.buildKey(KeyBuilder.TYPE_RSA_PRIVATE , (short) 1024, false);

((RSAPrivateKey)parameter[0]).setModulus(p, (short) 0, l);

((RSAPrivateKey)parameter[0]).setExponent(privatea, (short) 0, l);

break;

 

case INS_SECRET:

 

rsaCipherNoPad.init(parameter[0], Cipher.MODE_ENCRYPT);

rsaCipherNoPad.doFinal(publicB,(short) 0, l , secret, (short) 0);

break;

 

default:

// good practice: If you don't know the INStruction, say so:

ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);


Thank you so much!

Comments

Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Aug 31 2015
Added on Aug 3 2015
0 comments
1,014 views