# Algorithm implementations used by the `hashlib` module.

This code comes from the
[HACL\*](https://github.com/hacl-star/hacl-star/) project.

HACL\* is a cryptographic library that has been formally verified for memory
safety, functional correctness, and secret independence.

## Updating HACL*

Use the [refresh.sh](refresh.sh) script in this directory to pull in a new
upstream code version.  The upstream git hash used for the most recent code
pull is recorded in the script.  Modify the script as needed to bring in more
if changes are needed based on upstream code refactoring.

Never manually edit HACL\* files. Always add transformation shell code to the
`refresh.sh` script to perform any necessary edits. If there are serious code
changes needed, work with the upstream repository.

## Local files

* [python_hacl_namespaces.h](python_hacl_namespaces.h)
* [README.md](README.md)
* [refresh.sh](refresh.sh)

## ACKS

* Jonathan Protzenko aka [@msprotz on Github](https://github.com/msprotz)
contributed our HACL\* based builtin code.
