Cryptographic algorithms in pure Rust

The main interface to these crates is the RustCrypto traits

Cryptocorrosion

Cryptographic algorithms in pure Rust.

The main interface to these crates is the RustCrypto traits.

All crates are no-std compatible.

Minimum Rust version:

  • algorithm crates (with RustCrypto API): 1.41.0
  • support crates: 1.32.0

Supported algorithms

Cryptographic hashes

Algo Crate name SIMD
Blake blake-hash [1]
Grøstl groestl-aesni :heavy_check_mark:
JH jh-x86_64 :heavy_check_mark:
Skein skein-hash :x:

[1] SIMD is available for builds with target-cpu/target-feature configured, but runtime CPU detection is not yet supported.

Block ciphers

Algo Crate name SIMD
Threefish threefish-cipher :x:

Stream ciphers

Algo Crate name SIMD
ChaCha c2-chacha :heavy_check_mark:

License

All crates licensed under either of

  • Apache License, Version 2.0
  • MIT license

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Issues

Collection of the latest Issues

kazcw

kazcw

enhancement
0

We need tests that verify equivalence of each implementation available on the running architecture. Random-input testing would work well because it should be possible to generate the many needed test functions mostly-automatically from function signatures.

This depends on #60.

kazcw

kazcw

enhancement
2

In ppv-lite86, I have used trait inheritance: to build up complex traits from subset traits, and to implement composite types (via the x2/x4 wrappers). This was the wrong choice: trait inheritance is way too heavyweight, resulting in copious boilerplate in the implementation and an interface too baroque for me to ever suggest anyone else try to use this crate. By using macros to compose traits, I can simplify each type definition to a single trait to import, make the implementation a lot easier to read, and generally get this library to a point where I can share it with the world (offering a safe interface to machine-polymorphism, even across crate boundaries).

Steps:

  • replace trait-composition with macros to build public types
  • replace x2/x4 with macros for composite implementations
  • impl convenient operator traits (BitXor etc) on top of monotraits
kazcw

kazcw

enhancement
2

Will require new implementations of all the vector traits; impl-sharing with SSE2 versions would add more complexity that it's worth.

Information - Updated Apr 04, 2022

Stars: 34
Forks: 17
Issues: 12

A (mostly) pure-Rust implementation of various common cryptographic algorithms

Rust-Crypto seeks to create practical, auditable, pure-Rust implementations of common cryptographic

A (mostly) pure-Rust implementation of various common cryptographic algorithms

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

Orion is a cryptography library written in pure Rust

Rustls is a modern TLS library written in Rust

ring for cryptography and rustls-pemfile crate

Rustls is a modern TLS library written in Rust

Mundane is a Rust cryptography library backed by BoringSSL that is difficult

to misuse, ergonomic, and performant (in that order)

Mundane is a Rust cryptography library backed by BoringSSL that is difficult

Rustls is a modern TLS library written in Rust

ring for cryptography and rustls-pemfile crate

Rustls is a modern TLS library written in Rust

A (mostly) pure-Rust implementation of various common cryptographic algorithms

Rust-Crypto seeks to create practical, auditable, pure-Rust implementations of common cryptographic

A (mostly) pure-Rust implementation of various common cryptographic algorithms

This repository holds a Rust port of Google's Tink cryptography library

This repository holds a Rust port of Google's RustCrypto crates – this repo focuses on making

This repository holds a Rust port of Google's Tink cryptography library

A cryptography library that is mainly implemented in Rust

I aim to implement bindings to other languages such as C/C++ and Python

A cryptography library that is mainly implemented in Rust

Libsm is an open source pure rust library of China Cryptographic Algorithm Standards

It is completed by a collaborative effort between the Cryptape Technology LLC

Libsm is an open source pure rust library of China Cryptographic Algorithm Standards

A collection of cryptography functions written in Rust

rustup -- curl --proto '=https' --tlsv1

A collection of cryptography functions written in Rust
Facebook Instagram Twitter GitHub Dribbble
Privacy