Sodium is a new, easy-to-use software library for encryption, decryption, signatures, password hashing and more. It is a portable, cross-compilable, installable, packageable fork of NaCl, with a compatible API, and an extended API to improve usability even further.
Its goal is to provide all of the core operations needed to build higher-level cryptographic tools. Sodium supports a variety of compilers and operating systems, including Windows (with MingW or Visual Studio, x86 and x64), iOS, Android, as well as Javascript and Webassembly.
Installing libsodium Software Library for Encryption
Sodium is a shared library with a machine-independent set of headers, so that it can easily be used by 3rd party projects. The library is built using autotools, making it easy to package. Installation is trivial, and both compilation and testing can take advantage of multiple CPU cores.
Download a tarball of libsodium, preferably the latest stable version, then follow the ritual:
1 2 3 |
./configure make && make check sudo make install |
Since different files are compiled for different CPU classes, and to prevent unwanted optimizations, avoiding link-time optimization (LTO) is recommended. On Linux, if the process hangs at the make check
step, your system PRG may not have been properly seeded. Please refer to the notes in the “Usage” section for ways to address this.
Using libsodium Encryption Library
A project using libsodium should include the sodium.h
header. Including individual headers is neither required nor recommended.
The sodium_init()
function should then be called before any other function. It is safe to call sodium_init()
multiple times, or from different threads; it will immediately return 1 without doing anything if the library had already been initialized.
1 2 3 4 5 6 7 8 9 |
#include <sodium.h> int main(void) { if (sodium_init() < 0) { /* panic! the library couldn't be initialized, it is not safe to use */ } return 0; } |
Something related is:
– Wycheproof – Test Crypto Libraries Against Known Attacks
You can download libsodium here:
Or you can read more here.