Revision ac9a361cf5fee69c5bf94c6113339a7f51c8b59d authored by Aymeric Fromherz on 20 September 2018, 14:37:54 UTC, committed by Aymeric Fromherz on 20 September 2018, 14:37:54 UTC
1 parent 9527a75
Raw File
README.md
# HACL* SNAPSHOTS

This directory contains several code snapshots of C code extracted from HACL*.

These snapshots can be removed and regenerated from the top-level makefile using
`make extract-new` (assuming you have correctly installed F* and KreMLin).


## Directory structure

This directory contains:

- `hacl-c`

  Reference snapshot code for HACL*. Includes the following primitives:
  - Symmetric ciphers: ChaCha20, Salsa20
  - MAC: Poly1305
  - Hash: SHA-256, SHA-384, SHA-512
  - Signature: Ed25519
  - ECDH: Curve25519
  - NaCl API: SecretBox, Box, Sign
  - TLS API: IETF ChaCha20Poly1305 AEAD

  The code in hacl-c has been selectively picked from the make targets `snapshot-gcc`
  or `snapshot-gcc-unrolled` to provide best performance.
  
  To build the library, execute `make libhacl.co` or `make libhacl32.so` (on 32-bit systems).
  To test the library, execute `make unit-tests` or `make unit-tests32`, which
  runs the tests in `../test/test-files/unit-tests.c`.

- `hacl-c-compcert`

  HACL* snapshot extracted for the [CompCert C compiler](www.http://compcert.inria.fr/).
  Same primitives as listed above. Loops have been unrolled up to 10 iterations.

- `hacl-c-experimental`

  Experimental (unverified) HACL* code, to be verified and ported to the main `hacl-c` snapshot.

- `kremlib`

  A cached version of the KreMLin C libraries, including platform-specific endianness libraries, 
  and a compiled C version of the F* verified UInt128 library. Note that except for FStar.h other files
  are unverified hence are trusted code.

- `ecc-star`

  Legacy OCaml code for [A Verified Extensible Library of Elliptic Curves](http://ieeexplore.ieee.org/document/7536383/).
back to top