Repository Overview

The hacl-packages repository is a mono repository for all HACL packages and bindings. The top level holds the HACL C library that is based on the output of HACL*.

Source Code

The C source code lives in the src directory for most platforms.

The source code for MSVC can be found in src/msvc.

The includes can be found in the corresponding include directories (include and include/msvc).

Vale is considered an external dependency and therefore lives in its own directory vale --- sources in vale/src and headers in vale/include.

Tests

Tests are found in the tests folder and are written in modern C++ rather than C.

Karamel

The KaRaMeL dependency is found in karamel and holds only headers that are used by the HACL C source code.

CPU Features

A tool for basic CPU feature detection can be found in cpu-features. This is only used for tests and will probably be removed from this repository in future.

Tools

The build is driven by the mach script and the CMakeLists.txt. They rely on the contents of the tools folder (general tools for managing the repository and building in Python), as well as the config folder (platform detection and build configuration helper).

Docker

Docker tools for extracting the source code from HACL* are found in docker.

Docs

The docs folder contains this book you're reading right now.

Bindings

The language bindings are in sub folders.

Rust

The Rust bindings can be found in the rust folder. See the Rust chapter for more details on the build and structure.

OCaml

The OCaml bindings can be found in the ocaml folder. See the OCaml chapter for more details on the build and structure.