Too many passwords to remember? Use KeePassNFC to make your password management super easy.

KeePassNFC is a free open source implementation of the KeePass Password Safe for Android,which helps you to manage your passwords in a secure way.

Please see this article to know how to use KeePassNFC step by step.

Send a random number to host

JavaCard Applet Development Related Questions and Answers.
Marcat
Posts: 5
Joined: Wed Dec 21, 2016 11:50 pm
Points: 70
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: 196
Joined: Mon May 18, 2015 3:09 am
Points: 1261
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: 96
Joined: Wed Aug 19, 2015 1:56 am
Points: 432
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: Baidu [Spider] and 1 guest

JavaCard OS : Disclaimer