
This is not like the `crypto` subsystem, where a runner is needed to keep the crypto system up and running. Rather, we can run without an application runner.
Erlang bindings for NaCl
This library provides bindings for the NaCl cryptographic library for Erlang. Several such libraries exist, but this one is a re-write with a number of different requirements, and foci:
- Erlang/OTP 17.3. This library needs the newest dirty scheduler implementation.
- Uses the libsodium sources. This is a deliberate choice, since it is easy to implement.
- Does not provide anything but the original NaCl code base. This is also a deliberate choice so we are not in a situation where we can't jump to a newer version of the library later at some point.
- Tests created by aggressive use of Erlang QuickCheck.
This package draws heavy inspiration from "erlang-nacl" by Tony Garnock-Jones.
Rationale
Doing crypto right in Erlang is not that easy. The obvious way to handle this is by the use of NIF implementations, but most C code will run to its conclusion once set off for processing. This is a major problem for a system which needs to keep its latency safe. The solution taken by this library is to use the new Dirty Scheduler API of Erlang in order to provide a safe way to handle the long-running cryptographic processing. It keeps the cryptographic primitives on the dirty schedulers and thus it avoids the major problem.