Exams finally over!

Friday I had my last exam ever (Cryptography), this was my third try to pass this exam (pfff…) and this time I decided to study really hard for it as it’s actually a really interesting subject and I wanted it to be over finally… Turned out to go very well, grade: 10/10 🙂

Only my thesis is left now, hopefully I’ll finish that one day in the not so far future 😉


Using NFC phone as ISO14443 card reader

In order to finally get something working for my thesis I decided to move from NFCIP communication to Bluetooth for now. So far that seems to work much better, except the connection time.

It’s rather easy to write a Java app running on a normal PC (the host) using the BlueCove stack to communicate with the phone and write a MIDlet that acts as a middle man between a contactless ISO14443 card and the host. I did this to test the Bluetooth communication and it seems to work 🙂

For now I created a BTChannel class that implements the javax.smartcardio.CardChannel API so it’s easy to modify existing applications that use the Java Smart Card API to use the Bluetooth link. On the phone I created a small MIDlet that acts as a Bluetooth server and waits for a connection from a client. As soon as you keep a card close to the phone it sends the APDU received over Bluetooth from the host to the smart card and relays the results back to the host.


Maybe I can find some time to finish this and turn it into a TerminalFactory provider where all bluetooth devices in the vicinity with the “relay” MIDlet running are seen as card readers.

Bluetooth, Java and Linux

For my thesis I’m having serious problems with the Nokia NFCIP functionality so I was looking to get the communication working over Bluetooth. The basic requirements are simple, make it possible to send and receive byte arrays of (in principle) unlimited size.

I’m programming the phone and the host application (running on a normal PC with Linux) in Java (see JSR-82), so I was looking for a Bluetooth Java stack that works with Linux’ Bluetooth stack (BlueZ).

I found the Bluecove project which supports a number of Bluetooth stacks as backend. The project is free software and cross platform so perfect for this project.

It’s however a bit tricky to get this to work as it needs to build some “native” code for the system you want to use it on. After some playing around I managed to get it to compile from source as I didn’t want to use the pre compiled binaries.

It got a bit out of hand and decided to create an RPM package for it as it will be more useful for other people as well. Preliminary discussion about it here and an early version of the SPEC file and the source RPM package.

The Fedora package review request can be found here.