Module Hacl_star.Hacl

type bytes = SharedDefs.CBytes.t

bytes is ultimately an alias for Stdlib.Bytes.t, the type of buffers currently used throughout the library

AEAD

Chacha20-Poly1305

Different implementations of Chacha20-Poly1305. A multiplexing interface is also available.

module Chacha20_Poly1305_32 : SharedDefs.Chacha20_Poly1305

Portable C implementation of Chacha20-Poly1305 that runs on any 32-bit platform

module Chacha20_Poly1305_128 : SharedDefs.Chacha20_Poly1305

128-bit vectorized C implementation of Chacha20-Poly1305 that runs on platforms with 128-bit vector support

module Chacha20_Poly1305_256 : SharedDefs.Chacha20_Poly1305

256-bit vectorized C implementation of Chacha20-Poly1305 that runs on platforms with 256-bit vector support

ECDH, EdDSA, and ECDSA

Curve25519

Different implementations of ECDH using Curve25519. A multiplexing interface is also available.

module Curve25519_51 : SharedDefs.Curve25519

Portable C implementation that is optimized for use on 64-bit platforms that support 128-bit arithmetic, will still compile and execute on 32-bit platforms

module Curve25519_64 : SharedDefs.Curve25519

Hybrid C/assembly implementation: the field arithmetic functions are in Intel assembly (generated by Vale) and rely on the Intel ADX and BMI2 instruction sets; the elliptic curve functions and the main API are in portable C

Ed25519

EdDSA using Curve25519

module Ed25519 : SharedDefs.EdDSA

Portable implementation

P-256

module P256 : sig ... end

ECDSA and ECDH functions using P-256

Hashing

SHA-2

Portable C implementations of SHA-2. Multiplexing interfaces for SHA-224 and SHA-256 are also available.

module SHA2_224 : SharedDefs.HashFunction

Direct hashing with SHA-224

module SHA2_256 : SharedDefs.HashFunction

Direct hashing with SHA-256

module SHA2_384 : SharedDefs.HashFunction

Direct hashing with SHA-384

module SHA2_512 : SharedDefs.HashFunction

Direct hashing with SHA-512

SHA-3

Portable C implementations of SHA-3

module SHA3_224 : SharedDefs.HashFunction

Direct hashing with SHA3-224

module SHA3_256 : SharedDefs.HashFunction

Direct hashing with SHA3-256

module SHA3_384 : SharedDefs.HashFunction

Direct hashing with SHA3-384

module SHA3_512 : SharedDefs.HashFunction

Direct hashing with SHA3-512

module Keccak : sig ... end

SHAKE-128, SHAKE-256, and the general Keccak function

BLAKE2

The BLAKE2 hash function has 2 variants:

  • BLAKE2b, optimised for 64-bit architectures
  • BLAKE2s, optimised for 8- to 32-bit architectures
module Blake2b_32 : SharedDefs.Blake2

Portable BLAKE2b implementation

module Blake2b_256 : SharedDefs.Blake2

Vectorized BLAKE2b implementation, requiring 256-bit vector support

module Blake2s_32 : SharedDefs.Blake2

Portable BLAKE2s implementation

module Blake2s_128 : SharedDefs.Blake2

Vectorized BLAKE2s implementation, requiring 128-bit vector support

Legacy (deprecated)

Legacy algorithms, which are not suitable for cryptographic applications.

module MD5 : SharedDefs.HashFunction

Direct hashing with MD5

module SHA1 : SharedDefs.HashFunction

Direct hashing with SHA-1

MACs

Message authentication codes

Multiplexing interfaces for these algorithms are also available.

HMAC

module HMAC_SHA2_256 : SharedDefs.MAC

Portable C implementation of HMAC-SHA-256

module HMAC_SHA2_384 : SharedDefs.MAC

Portable C implementation of HMAC-SHA-384

module HMAC_SHA2_512 : SharedDefs.MAC

Portable C implementation of HMAC-SHA-512

module HMAC_BLAKE2b : SharedDefs.MAC

Portable C implementation of HMAC-BLAKE2b

module HMAC_BLAKE2s : SharedDefs.MAC

Portable C implementation of HMAC-BLAKE2s

Poly1305

module Poly1305_32 : SharedDefs.MAC

Portable C implementation of Poly1305

module Poly1305_128 : SharedDefs.MAC

Vectorized C implementation of Poly1305 that runs on platforms with 128-bit vector support

module Poly1305_256 : SharedDefs.MAC

Vectorized C implementation of Poly1305 that runs on platforms with 256-bit vector support

NaCl

module NaCl : sig ... end

Box (public-key authenticated encryption) and Secretbox (secret-key authenticated encryption)

Key derivation

HKDF

HMAC-based key derivation function

Portable implementations of HKDF. Agile and multiplexing interfaces are also available.

module HKDF_SHA2_256 : SharedDefs.HKDF

Portable C implementation of HKDF using SHA2-256

module HKDF_SHA2_512 : SharedDefs.HKDF

Portable C implementation of HKDF using SHA2-512

module HKDF_BLAKE2b : SharedDefs.HKDF

Portable C implementation of HKDF using BLAKE2b

module HKDF_BLAKE2s : SharedDefs.HKDF

Portable C implementation of HKDF using BLAKE2s

Randomness (not verified)

module RandomBuffer : sig ... end

A randomness function implemented with platform-dependent code for Unix and Windows