Our Online Store have the new products: RFID antenna board. Currently it can work with JC10M24R and JCOP4 card chips.
Compared with normal cards, the antenna board module has a smaller size and fixed holes, which is easy to integrate in the IOT(Internet Of Things) project.

Send a random number to host

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

Send a random number to host

Post by 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: 237
Joined: Mon May 18, 2015 3:09 am
Points :1705
Contact:

Re: Send a random number to host

Post by 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: 101
Joined: Wed Aug 19, 2015 1:56 am
Points :478
Contact:

Re: Send a random number to host

Post by 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

Post Reply Previous topicNext topic

Who is online

Users browsing this forum: No registered users and 18 guests

JavaCard OS : Disclaimer