51
votes

I am writing an app for BlackBerry that utilizes a BlackBerry smartcard reader. There is not much documentation on the subject, so I'd really like if someone could give me starting examples.

Basically, there is one RSA private key on the card plus a certificate (for paired public key). I would like to be able to encrypt/decrypt data and also sign it as well. The final goal would be to establish an mutual-authenticated SSL connection using client certificate contained on the smartcard.

Here is the code I managed to come up with so far:

SmartCardReader btReader = null;
SmartCardReader[] readers = SmartCardReaderFactory.getInstalledReaders();
for (int i = 0; i < readers.length; i++) {
    SmartCardReader reader = readers[i];
    if (reader.getType().equalsIgnoreCase("bluetooth")) {
        btReader = reader;
        break;
    }
}

SmartCardReaderSession readerSession = reader.openSession();
CryptoSmartCard card = (CryptoSmartCard) readerSession.getSmartCard();
RSACryptoToken token = (RSACryptoToken) card.getCryptoToken("RSA");

This token looks promising - has some nice methods, but with "cryptic" arguments. What to do next?

2
Have you seen this guide? : Cryptographic Smart Card Driver Development Guideuser784540
Could you explain more clearly what you want that code to do, and how it's failing?Robert Martin
Has there been any development on this? I feel like you probably figured it out after more than a year and a half. I could be wrong, but if you did, post your answer and take this off the unanswered list.Jon Egeland

2 Answers

0
votes

You have to implement SmartCardSession methods, also implement RSACryptoToken methods. With SmartCardSession methods you will be able to communicate with smart card, and with RSACryptoToken methods, you will be able to perform crypto operations. You have to read also about APDU protocol.