6 releases

Uses new Rust 2021

0.0.11 Feb 24, 2022
0.0.10 Jul 9, 2021
0.0.9 May 19, 2021
0.0.8 Mar 9, 2021
0.0.4 Nov 17, 2020

#297 in Cryptography

Download history 61/week @ 2022-08-13 32/week @ 2022-08-20 82/week @ 2022-08-27 138/week @ 2022-09-03 307/week @ 2022-09-10 238/week @ 2022-09-17 163/week @ 2022-09-24 263/week @ 2022-10-01 817/week @ 2022-10-08 1222/week @ 2022-10-15 2508/week @ 2022-10-22 1204/week @ 2022-10-29 961/week @ 2022-11-05 1510/week @ 2022-11-12 2113/week @ 2022-11-19 1250/week @ 2022-11-26

6,190 downloads per month
Used in 4 crates (2 directly)

MPL-2.0 license

47MB
1M SLoC

C 493K SLoC // 0.1% comments GNU Style Assembly 377K SLoC Assembly 132K SLoC // 0.0% comments F* 128K SLoC // 0.0% comments OCaml 9K SLoC // 0.1% comments FORTRAN Legacy 4.5K SLoC // 0.0% comments Rust 2.5K SLoC // 0.0% comments Scons 1K SLoC // 0.2% comments JavaScript 854 SLoC // 0.1% comments Shell 852 SLoC // 0.1% comments Python 635 SLoC // 0.3% comments C++ 359 SLoC // 0.1% comments Batch 44 SLoC

Evercrypt & HACL Rust bindings

Maturity Level Build & Test ARM Build codecov Rust Version

High-level evercrypt bindings crates.

⚠️ Note: This crate is still work in progress. Don't use in production just yet.

Features

By default the Evercrypt crate includes the random feature that allows generating random values (keys, nonces, etc.). But this is not verified code and uses the rand crate. It can be disabled with --no-default-features. Please bring your own randomness if you want to be safe.

RustCrypto AES

Evecrypt currently implements AES only for x64 CPUs with a certain set of CPU instructions. To provide AES for other platforms the Evercrypt crate uses the RustCrypto AES implementation when using --features rust-crypto-aes.

Platforms

Currently only Linux x64 and MacOS are supported. Windows builds are on the To Do list and should be supported in future.

Platform Supported
MacOS
MacOS Arm64
iOS
iOS Simulator x86_64
Linux x64
Linux x86
Windows x64
Arm64 Linux
Arm32 Linux

Benchmarks

To run benchmarks use cargo bench.

Tests

All primitives are tested against the Wycheproof test vectors. They can be run with cargo test. This will also run automatically generated binding tests from bindgen.

Dependencies