"Keep It Simple, Secure" a small interface for key exchange and symmetric ciphering. Made for multi-backend.
Use this library with caution, as overall security depends not only on the backend implementation but also on how you exchange and protect cryptographic keys.
Here is the list of available backend implementations :
- LibSodium
You can see usage example in the main.cpp for the LibSodium implementation.
Here is a class diagram of the two interfaces of this project :

There is two interfaces KeyExchangeInterface and SymmetricCipherInterface.
You can use these in you program and choose one of the implementation.
unique_ptr<KeyExchangeInterface> kX = make_unique<KeyExchangeSodium>();
unique_ptr<SymmetricCipherInterface> symCipher = make_unique<SymmetricCipherSodium>(kX->getSharedSecret());This let you the opportunity to change the backend later.
Contributions are welcome.
Feel free to improve this project by implementing a new backend, updating the existing one, or adding new interfaces if you find them useful.