Design goals

This document summarizes the design aspects of the crypto-native project.

Take only what you need.

One of the most important aspects was that the crypto-native is not a complex library with many dependencies but a collection of thin layers around well defined standards.

The project is divided in many independent sub-projects so that you can choose only the parts you need.

Simple API

The programming interface had to be designed as simple as possible, trying to hide the tedious low level operations (such as memory allocations) firstly for the sake of easier understanding and usage, secondly in order to avoid needless complexity.

As a result of this approach users can dialog with low level libraries in a "natural" java-like way, forgetting about the complexity the c-style calls. However when maximum performance is needed users can interact directly with JNA forgetting about wrappers.

Component model

Here is a map to find a way out of the maze of the 7 project that compose crypto-native [img/components.png] Diagram of components