Easy and usable rust crypto
Clone or download
brycx Tests: As blake2b and cshake have multiple paramter combinations on t…
…heir init(), this adds tests to verify that the recent bug #46 is fixed on all init() input combinations
Latest commit 3bbd251 Dec 23, 2018

README.md

orion

dependency status

About

orion is a cryptography library written in pure-Rust which aims to provide easy and usable crypto. 'Usable' meaning exposing high-level API's that are easy to use and hard to misuse. You can read more about orion in the wiki.

Currently supports:

  • AEAD: (X)ChaCha20Poly1305.
  • Stream ciphers: (X)ChaCha20.
  • KDF: HKDF-HMAC-SHA512, PBKDF2-HMAC-SHA512.
  • MAC: HMAC-SHA512, Poly1305.
  • XOF: cSHAKE256.
  • Hashing: BLAKE2b.

Security

This library is not suitable for production code and usage is at own risk.

More information about security regarding orion is available in the wiki.

Features

  • By default orion targets stable Rust and in this case, extra dependency specifications are not required. Using orion with stable Rust does however depend on a C compiler to be available on the system. Features nightly and no_std do not have this dependency.

  • no_std: To use orion in a no_std context, you need to specify the dependency as such:

[dependencies.orion]
version = "*" # Replace * with the most recent version
default-features = false
features = ["no_std"]

no_std requires Rust nightly and benefits from the same inline assembly features as when using the nightly feature.

When orion is used in a no_std context, access to nearly all functionality, except for that in hazardous, is not available. This is because the high-level functionality depends on the OsRng which is not available in no_std.

  • nightly: The nightly feature enables the use of inline assembly for memory wiping and constant-time comparisons. Using nightly is recommended for security. Specify the dependency as such, to use the nightly feature:
[dependencies.orion]
version = "*" # Replace * with the most recent version
default-features = false
features = ["nightly"]

nightly requires Rust nightly.

Documentation

Can be viewed here or built with:

cargo doc --no-deps

Tests/Fuzzing

The wiki has details on how orion is tested. To run all tests:

cargo test

Fuzzing is done using libFuzzer with cargo-fuzz. Fuzzing targets can be run with:

cargo +nightly fuzz run -O fuzz_target

Benchmarks

The library can be benchmarked as below. All benchmarking tests are located in benches/.

cargo +nightly bench

Changelog

Can be found here.

Alternatives

License

orion is licensed under the MIT license. See the LICENSE file for more information.