Hardware wallet light - client side development update

In the last couple of weeks, we developed a test android app, to be able to start testing the interaction with smartcards via NFC without waiting to implement everything in status-go and status-react, and also to test the UX without the overhead of other frameworks and other running parts of the app.

The first thing we added was the applet installer to prove we are able to initialise the card from an android app, and then some performance tests that send all the APDU commands to interact with our applet.

Smart cards are difficult to debug, and NFC connection is flaky, and in our case we need a strong connection for several seconds because we run long processes like installing the applet or deriving a key.

The goal of this app are:

  • being able to test compatibility with different cards and find possible bugs or problems. (for example we found that one specific card can be blocked if it loses the NFC connection before a specific command ends)
  • playing with different mobile devices to design the best UX, especially finding the way to keep the card attached to the phone depending on the NFC position.
  • writing unit tests for each APDU command we need, so that they can easily translated to go without the need to debug again all the commands.

There’s an apk linked in the README file of the project, feel free to ask me if you want to try it with your android phone and smart card.