Open Source NPNT Implementation


Hi all,
An open source implementation for lightweight NPNT library that can be packaged with autopilot systems has been kickstarted. For ease of development I have written test suite which uses OpenSSL library for cryptography. The library is being written in a way so as to replace with other lightweight cryptography libraries like WolfCrypt.
I plan to integrate the library with Ardupilot flight stack as soon as I have covered No permission No takeoff part. I intend to implement logging mechanism as well afterwards.

Currently the library is able to successfully verify the sample permission artefact. I am looking to be able to populate the permission structure to be passed onto autopilot. That should be done soon. I have separately tested wolfcrypt working on Ardupilot. I will be carrying out the integration of libnpnt into ardupilot after I have successfully populated the flight parameter structure from xml.

I will posting updates to this thread. Also any interested testers and developers are welcome to contribute.

The project can be found here

Steps to compile:

This process is tested working on macos system. Please let me know if you hit any issues in this thread

Siddharth Purohit

Permission Artefact Verification on RFM using X509Certificate OpenSSL

This is great! What are your thoughts on naming it as an ‘RFM Implementation’ instead of NPNT Implementation?

The reason being, it’s actually implementing the trusted environment of the RFM. And NPNT/Flight Logs/etc can be considered as ‘applications’ within that RFM.

SHA1 or SHA256 for Permission Artefact digest

Where does one get the Digital Sky public key from?


Hi @sid @sidbh,
I would like to take the libnpnt framework forward. I was trying out the new PA with libnpnt. The previous one was using SHA1 and I think it has been updated to SHA256.

The verification works perfectly fine with preious PA but with the update PA I get an error. I have updated the init update and final calls of SHA to SHA256.

Also, if you can specifically tell me the message which goes into SHA1_update(). The current code is using the information stored in element.


I had a confusion related to RFM. I read the whole digital sky manual and DGCA guidelines. Is it a piece of code used for registering and acquiring permissions/ hardware which connects with Flight controllers or OBCs for permission approval/ a combination of both?


Dose there have a json PA as per Technical Specifications ?

The PA is in json file now, but all the test and code is still in xml format.


Yes, the permission artefact is now being generated in JSON.


Any plan to sync to json format ?


Or can you provide a demo fils containing a public/private key and cert and a json PA ?


Hello, Our company is base in Pune. We are looking for freelancer who can help us with the implementation of NPNT for firmware with pixhawk. If interested please contact me on [email protected] for further details.


@sidbh how do i add openssl into ardupilot source code and make it compile together?


In my company I am also working on Ardupilot source code. upltil now I have ported mbedtls library on ardupilot wich I am using to genarate RSA2048 key pair itself on Ardupilot board. I also have done lots of other custumization of NPNT compatiblity.


@sidbh @siddharthbharatpuroh
i tried to compile the your code using below steps in Ubuntu 14.0 but got some errors
Steps to compile:

*** install openssl-dev library**
*** git clone **
*** cd libnpnt/test**
*** make**
*** ./build/test_ifaces**
can you please give the guidelines to run it in Ubuntu or Windows 10
Thank You