LibNat20 0.0.1
|
Libnat20 is a free standing DICE library implementing the protocols for OpenDICE, the TCG DICE Attestation Architecture, and the TCG DICE Layering architecture.
It is aimed at restricted runtime environments as can be found in secure elements, boot loaders and operating system kernels.
The core library is written in C11 for ease of integration in a variety of code bases. The code base shall be compliant with MISRA C++ 2023 and must be accepted by a C++17 compiler. The core library delegates memory allocation to the user and can operate entirely without heap allocation if necessary. The core library also delegates cryptographic operations to the user by means of an interface that users are expected to provide. A reference implementation of this interface based on boring ssl is provided and can be compiled optionally.
The project is licensed under Apache 2 license and contributers are expected to sign a CLA before contributions can be considered. Please read CONTRIBUTING.md carefully for details on the CLA and code style.
This library uses cmake as primary build system. And it is set up to generate a compile_commands.json
for the benefit of clangd
based IDE extensions.
The preferred development platform is a linux distribution such as Ubuntu or similar. The core library can be build with minimal dependencies:
For generating the documentation doxygen and the graphviz package need to be installed.
By default only the core library is built.
This package also provides a reference implementation of the crypto interface define in include/crypto.h
based on boringssl. To enable building the reference implementation use the NAT20_WITH_CRYPTO_BSSL
variable:
To enable the test suite set the cmake variable NAT20_WITH_TESTS
to ON
, then build and run the test suite as follows:
Libnat20 uses doxygen for the generation of the API documentation. To enable the documentation target nat20_docs
set the cmake variable NAT20_WITH_DOCS
to ON
, then build the documentation as follows:
Open the documentation by pointing your browser to html/index.html
in your build directory.
The API references is generated from the main branch using doxygen and deployed as LibNat20 Github Pages.