We are very excited to introduce our new product -JC10M128C java card.

JC10M128C card has 128KB EEPROM memory and supports many common algorithms. There are also Promotions in our online store for this new product.

For more details, please check this page.

Send a random number to host

JavaCard Applet Development Related Questions and Answers.
Marcat
Posts: 3
Joined: Wed Dec 21, 2016 11:50 pm
Points: 44
Contact:

Send a random number to host

Postby Marcat » Wed Jan 11, 2017 10:56 pm

I want to send a random number to a host. Now my problem is how to create APDU answer. anyone can help?

Code: Select all


    private void sendChallenge(APDU apdu){

    byte[] apduBuffer = apdu.getBuffer();
    apdu.setOutgoing();

    try {
     
      SecureRandom prng = SecureRandom.getInstance("SHA1PRNG");
      String randomNum = new Integer( prng.nextInt() ).toString();
      byte[] randomBytes = randomNum.getBytes();
     
   /* I want to send the number here */

    }
    catch ( NoSuchAlgorithmException ex ) {
      System.err.println(ex);
    }

    }
   

User avatar
mabel
Posts: 169
Joined: Mon May 18, 2015 3:09 am
Points: 1017
Contact:

Re: Send a random number to host

Postby mabel » Thu Jan 12, 2017 3:53 am

Sample code for you

Code: Select all


   short le = apdu.setOutgoing();
   if (le < (short)2) ISOException.throwIt( ISO7816.SW_WRONG_LENGTH );
   apdu.setOutgoingLength( (short)3 );
 

   buffer[0] = (byte)1; buffer[1] = (byte)2; buffer[3] = (byte)3;
   apdu.sendBytes ( (short)0 , (short)3 );


Tarantino
Posts: 81
Joined: Wed Aug 19, 2015 1:56 am
Points: 316
Contact:

Re: Send a random number to host

Postby Tarantino » Thu Jan 12, 2017 5:39 am

It seems that the code you posted is J2SE-code, not JavaCard code.
For Java Card, you can only use the classes defined in JavaCard 2.1 specification.

Example:

Code: Select all


    byte[] apduBuffer = apdu.getBuffer();
   
    RandomData random = RandomData.getInstance(RandomData.ALG_SECURE_RANDOM); 
    random.setSeed(randomArray,(short)0,(short)32);
    random.generateData(randomArray,(short)0, (short)32);
   
    Util.arrayCopy(randomArray,(short)0,apduBuffer,(short)0,(short)32);
   
    apdu.setOutgoingAndSend((short)0, (short)32);

The greatest glory in living lies not in never falling, but in rising every time we fall.--Nelson Mandela


Return to “Questions & Answers”

Who is online

Users browsing this forum: Google [Bot] and 1 guest

JavaCard OS : Disclaimer