PS MIR kernel certification for SoftPOS

In February, we published news that our new JoinCORE kernel had successfully passed certification in NSPK. Now we are happy to announce that we have successfully completed SoftPOS kernel certification.

Testing also has two stages: self-testing and transferring the stand to the NSPK. This testing was much easier to pass as we had already gone through some of the tests in the past and the difficulty could only be represented by specific SoftPOS tests. But we handled them and want to tell you a little bit about it.

We divided the testing process into two stages:

  • Testing on a PC.
  • Testing on an Android device.

If you're wondering why, the answer is quite simple - it's all because the Android app build process is not very fast, and rebuilding the app every couple of minutes only slows down the testing process.

At first, in order to test on a PC, we used a USB card reader of the ACR122U model, but unfortunately it turned out to be very unstable in operation, although it was possible to pass some of the tests on it.

The backup option, which helped us a lot, was a virtual card reader using the vsmartcard and PS/SC. With their help we were able to pass all the tests, including tests for tearing, which is very capricious.

For those who decide to go it alone this is not an easy path, give a little hint. Selecting the right timings for communicating with the card is the key to success.

On the whole, looking at the tests from the outside, passing them is not a very big problem. The main challenge, as it seems to us, is not in the software part, but in the hardware. To be even more specific, it's in the operation of the NFC module.

Working with the card for normal tests, in general, goes without much trouble. However, when passing the tests with tearing, the proverbial mumbo-jumbo begins. The main problem when passing such tests is the fact that not all models of phones work with it correctly, and there are very big problems with the stability of the work itself.

In general, we had to try several phones to choose the best one. In the table below you can see how we tested several phones from different vendors, but in general the NSPC platform has a list of recommended models.

It is also worth mentioning the fact that when passing a very large group of tests, the phone quite noticeably heats up. Because of this, a small pause must be added to the application code. 20-30 seconds, every ~100 tests will be enough for the NFC module to work more stably.

As a result of the certification, we found only a couple of bugs, which we fixed fairly quickly, although we expected that there would be much more.

And finally, we'd like to say a few flattering words about our payment kernel, JoinCORE. In addition to being portable to many architectures, it also has a modular architecture that allows us to do the development-testing phases very quickly. It is because of these features that we completed testing and certification fairly quickly.

If you're interested in learning more about our kernel and its architecture, we recommend reading our article about the JoinCORE L2 payment kernel.