Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/orion-rs/orion
Usable, easy and safe pure-Rust crypto
https://github.com/orion-rs/orion
aead argon2 argon2i blake2b chacha20 chacha20-poly1305 crypto cryptography hacktoberfest hkdf hmac key-committing orion poly1305 pure-rust rust secretstream sha3 x25519 xchacha20-poly1305
Last synced: 1 day ago
JSON representation
Usable, easy and safe pure-Rust crypto
- Host: GitHub
- URL: https://github.com/orion-rs/orion
- Owner: orion-rs
- License: mit
- Created: 2018-02-06T17:45:01.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-08-05T10:55:40.000Z (4 months ago)
- Last Synced: 2024-08-05T19:25:18.712Z (4 months ago)
- Topics: aead, argon2, argon2i, blake2b, chacha20, chacha20-poly1305, crypto, cryptography, hacktoberfest, hkdf, hmac, key-committing, orion, poly1305, pure-rust, rust, secretstream, sha3, x25519, xchacha20-poly1305
- Language: Rust
- Homepage:
- Size: 12.7 MB
- Stars: 540
- Watchers: 11
- Forks: 29
- Open Issues: 24
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-rust-cn - brycx/orion - level API's that are easy to use and hard to misuse. [<img src="https://api.travis-ci.org/brycx/orion.svg?branch=master">](https://travis-ci.org/brycx/orion) (Libraries / Cryptography)
- awesome-rust - orion-rs/orion - level API's that are easy to use and hard to misuse. [![Tests](https://github.com/orion-rs/orion/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/orion-rs/orion/actions/workflows/test.yml) (Libraries / Cryptography)
- awesome-rust-cn - orion-rs/orion
- awesome-rust - orion-rs/orion - This library aims to provide easy and usable crypto. 'Usable' meaning exposing high-level API's that are easy to use and hard to misuse. [![Tests](https://github.com/orion-rs/orion/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/orion-rs/orion/actions/workflows/test.yml) (Libraries / Cryptography)
- fucking-awesome-rust - orion-rs/orion - This library aims to provide easy and usable crypto. 'Usable' meaning exposing high-level API's that are easy to use and hard to misuse. [![Tests](https://github.com/orion-rs/orion/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/orion-rs/orion/actions/workflows/test.yml) (Libraries / Cryptography)
- fucking-awesome-rust - orion-rs/orion - This library aims to provide easy and usable crypto. 'Usable' meaning exposing high-level API's that are easy to use and hard to misuse. [![Tests](https://github.com/orion-rs/orion/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/orion-rs/orion/actions/workflows/test.yml) (Libraries / Cryptography)
README
# orion
[![Tests](https://github.com/orion-rs/orion/workflows/Tests/badge.svg)](https://github.com/orion-rs/orion/actions) [![Daily tests](https://github.com/orion-rs/orion/workflows/Daily%20tests/badge.svg)](https://github.com/orion-rs/orion/actions) [![dudect](https://github.com/orion-rs/orion-dudect/workflows/dudect/badge.svg)](https://github.com/orion-rs/orion-dudect/actions) [![Audit](https://github.com/orion-rs/orion/actions/workflows/audit_check.yml/badge.svg)](https://github.com/orion-rs/orion/actions/workflows/audit_check.yml) [![codecov](https://codecov.io/gh/orion-rs/orion/branch/master/graph/badge.svg)](https://codecov.io/gh/orion-rs/orion) [![Documentation](https://docs.rs/orion/badge.svg)](https://docs.rs/orion/) [![Crates.io](https://img.shields.io/crates/v/orion.svg)](https://crates.io/crates/orion) [![Safety Dance](https://img.shields.io/badge/unsafe-forbidden-success.svg)](https://github.com/rust-secure-code/safety-dance/) [![MSRV](https://img.shields.io/badge/MSRV-1.80-informational.svg)](https://img.shields.io/badge/MSRV-1.80-informational) [![Matrix](https://img.shields.io/matrix/orion-rs:matrix.org.svg?logo=matrix)](https://matrix.to/#/#orion-rs:matrix.org)### About
Orion is a cryptography library written in pure Rust. It aims to provide easy and usable crypto while trying to minimize the use of unsafe code. You can read more about Orion in the [wiki](https://github.com/orion-rs/orion/wiki).Currently supports:
* **AEAD**: (X)ChaCha20-Poly1305.
* **Hashing**: BLAKE2b, SHA2, SHA3.
* **XOF**: SHAKE128, SHAKE256.
* **KDF**: HKDF, PBKDF2, Argon2i.
* **Key exchange**: X25519.
* **MAC**: HMAC, Poly1305.
* **Stream ciphers**: (X)ChaCha20.
* **KEM**: DHKEM(X25519, HKDF-SHA256).Experimental support (with `experimental` feature enabled):
* **Committing AEAD**: (X)ChaCha20-Poly1305-BLAKE2b.### Security
This library has **not undergone any third-party security audit**. Usage is at **own risk**.Orion uses formally verified arithmetic, generated by Fiat Crypto, for the X25519 and Poly1305 implementations.
See the [SECURITY.md](https://github.com/orion-rs/orion/blob/master/SECURITY.md) regarding recommendations on correct use, reporting security issues and more. Additional information about security regarding Orion is available in the [wiki](https://github.com/orion-rs/orion/wiki/Security).
### Minimum Supported Rust Version
Rust 1.80 or later is supported however, the majority of testing happens with latest stable Rust.MSRV may be changed at any point and will not be considered a SemVer breaking change.
### Crate Features
- `default`/`safe_api`: All functionality, requires `std`.
- `serde`: Requires either `alloc` or `default`/`safe_api`.
- `alloc`: Argon2i in `hazardous` when `default`/`safe_api` is not available.
- `no_std`: Implicit feature that represents no heap allocations. Enabled by disabling default features and not selecting any additional features.
- `experimental`: These APIs may contain breaking changes in any non SemVer-breaking crate releases.More detailed explanation of the features in the [wiki](https://github.com/orion-rs/orion/wiki/Crate-features).
### Documentation
Can be viewed [here](https://docs.rs/orion) or built with:```
RUSTDOCFLAGS='--cfg docsrs' cargo +nightly doc --no-deps --all-features
```### Tests and Fuzzing
The [wiki](https://github.com/orion-rs/orion/wiki/Testing-suite) has details on how Orion is tested. To run all tests:
```
cargo test
```Fuzzing is done using [honggfuzz-rs](https://github.com/rust-fuzz/honggfuzz-rs) in [orion-fuzz](https://github.com/orion-rs/orion-fuzz). See [orion-fuzz](https://github.com/orion-rs/orion-fuzz) on how to start fuzzing Orion.
Constant-time execution tests can be found at [orion-dudect](https://github.com/orion-rs/orion-dudect) and [orion-sidefuzz](https://github.com/orion-rs/orion-sidefuzz).
### Benchmarks
An overview of the performance that can be expected from Orion can be [seen here](https://github.com/orion-rs/orion/wiki/Benchmarks).The library can be benchmarked with [Criterion](https://github.com/bheisler/criterion.rs) as below. All benchmarking tests are located in `benches/`.
```
cargo bench
```
### Changelog
Please refer to the [CHANGELOG.md](https://github.com/orion-rs/orion/blob/master/CHANGELOG.md) list.### Contributing
Please refer to the guidelines in [CONTRIBUTING.md](https://github.com/orion-rs/orion/blob/master/CONTRIBUTING.md) for information on how to contribute to Orion.### License
Orion is licensed under the MIT license. See the `LICENSE` file for more information.