diff --git a/README.md b/README.md index 6e5522d..2b1457e 100644 --- a/README.md +++ b/README.md @@ -6,41 +6,37 @@ Frank Denis took the source and made it far more portable in the libsodium library. The enacl project is somewhat misnamed, as it uses libsodium as the underlying driver. -## INSTALL/Requirements: +## INSTALL/Requirements -* Erlang/OTP above 17.3. This library *needs* the dirty scheduler - implementation from 17.3 and onwards. The library relies on dirty - scheduler support in order to handle long-running cryptography jobs, - by moving them off the main Erlang scheduler and letting the dirty - schedulers handle the work. This keeps the Erlang VM responsive while - doing large amounts of cryptographic processing. -* Is tested with Erlang 22.3. Erlang version 21 *may* work, but that isn't - the current testing target. +* New-ish Erlang installation. Tested back to version 22.3, but version 21 *may* + work as well. * *Requires* the libsodium library, and has been tested with version 1.0.18. Lower versions might work, or they might fail to compile, - due to missing functionality. - *Note:* If installing on systems which cuts packages into - subpackages, make sure you also get the "-dev" package containing - the header files necessary in order to compile software linking to - libsodium. + due to missing functionality. In particular, this means your libsodium installation + must be fairly recent as well. + +*Note:* If installing on systems which cuts packages into +subpackages, make sure you also get the "-dev" package containing +the header files necessary in order to compile software linking to +libsodium. To build the software execute: - make + make or - rebar compile + rebar compile To build and run licensed eqc test execute: - make eqc_run + make eqc_run To build and run eqc-mini version of test execute: - make eqc_mini_run + make eqc_mini_run -## Features: +## Features * Complete NaCl library, implementing all default functionality. * Implements a large set of additional functionality from libsodium. @@ -62,21 +58,17 @@ In addition, I would like to thank Steve Vinoski, Rickard Green, and Sverker Eriksson for providing the Dirty Scheduler API in the first place. -# USING: +## Usage -In general, consult the libsodium documentation at - - https://download.libsodium.org/doc/ +In general, consult the libsodium documentation at [Libsodium documentation](https://download.libsodium.org/doc/) The original NaCl documentation is nowadays largely superceded by the -libsodium documentation, but it is still worth a visit - - https://nacl.cr.yp.to +libsodium documentation, but it is still worth a visit [NaCl website](https://nacl.cr.yp.to) but also note that our interface has full Edoc documentation, generated by executing - rebar3 doc + rebar3 doc ## Hints @@ -134,11 +126,11 @@ However, their correct use is still needed in order to be secure: a foreign system as an oracle in order to learn the structure of a string, breaking the cryptograhic system in the process. -# Versions +## Versions See CHANGELOG.md -# Overview +## Overview The NaCl cryptographic library provides a number of different cryptographic primitives. In the following, we split up the different @@ -200,7 +192,7 @@ This implements cryptography where there is a shared secret key between parties. * *String comparison:* Implements guaranteed constant-time string comparisons to protect against timing attacks. -# Rationale +## Rationale Doing crypto right in Erlang is not that easy. For one, the crypto system has to be rather fast, which rules out Erlang as the main @@ -252,7 +244,7 @@ perhaps being able to switch faster. There are plans to rerun these tests on OSX and Illumos as well, in order to investigate the numbers on more platforms. -# Testing +## Testing Every primitive has been stress-tested through the use of Erlang QuickCheck with both *positive* and *negative* testing. This has been @@ -279,11 +271,8 @@ sure we have no memory leaks as they will show themselves under the extensive QuickCheck test cases we run. It has been verified there are no leaks in the code. -# Notes +## Notes [0] Other people have worked on bits and pieces of NaCl. These are -just the 3 main authors. Please see the page - - http://nacl.cr.yp.to - +just the 3 main authors. Please see the page [NaCl](http://nacl.cr.yp.to) for the full list of authors.