Repository: The-DevX-Initiative/RCIG_Coordination_Repo
Branch: main
Commit: f4e1c8aa4cbe
Files: 10
Total size: 35.9 KB
Directory structure:
gitextract_mfs6cg0a/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── add_crate.md
│ │ └── bug.md
│ └── workflows/
│ └── ci.yml
├── .gitignore
├── Awesome_Rust_Cryptography.md
├── CNAME
├── README.md
├── _config.yml
├── index.html
└── markdownlint.rb
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/ISSUE_TEMPLATE/add_crate.md
================================================
---
name: Add Crate
about: Add a crate to the list
---
<!--
Thank you for providing a new crate we should add to the list!
Please make sure to include a link to the crate or its website
(if it has one), and a short description of what it does.
Also, please let us know which category it belongs in.
-->
================================================
FILE: .github/ISSUE_TEMPLATE/bug.md
================================================
---
name: Bug report
about: Report a bug in the docs
---
<!--
Thanks for reporting a bug.
To report a bug, please let us know where (line number or illustrative
text) and describe what should be changed.
If you prefer, you can of course open a Pull Request to fix any errors.
-->
================================================
FILE: .github/workflows/ci.yml
================================================
name: Rust Crypto CI
on: [pull_request, push]
jobs:
check_docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: markdown nits
run: |
sudo gem install mdl
mdl -s markdownlint.rb README.md
================================================
FILE: .gitignore
================================================
.jekyll-cache/
_site
================================================
FILE: Awesome_Rust_Cryptography.md
================================================
# Short URL for this page: [cryptography.rs](https://cryptography.rs)
<img align="right" height="100px" src="https://raw.githubusercontent.com/The-DevX-Initiative/RCIG_Coordination_Repo/main/mascot.png">
<img align="right" height="100px" src="https://raw.githubusercontent.com/The-DevX-Initiative/RCIG_Coordination_Repo/main/RCIG_Mascot3.png">
Below is a list of actively maintained, high-quality cryptography libraries
independently developed by members of the Rust Community.
The list is compiled and curated by the
[Rust Cryptography Interest Group (RCIG)](https://github.com/The-DevX-Initiative/RCIG_Coordination_Repo).
If you have any suggestions, questions, or other concerns with this list,
please
[open an issue](https://github.com/The-DevX-Initiative/RCIG_Coordination_Repo/issues/new?title=Awesome+Rust+Cryptography:+[issue+here])
and we'll get back to you.
The following badges are used to provide more information about libraries
that meet certain criteria:
| Badge | Description |
|---------------------|-------------|
| ![][audited-badge] | crate has at least one security audit (click to view) |
| ![][verified-badge] | crate has been formally verified |
Note: libraries in each section are listed in alphabetical order, *not* order
of preference.
[audited-badge]: https://img.shields.io/badge/audited-success.svg
[verified-badge]: https://img.shields.io/badge/verified-informational.svg
## Table of Contents
- [High-level Libraries](#high-level-libraries)
- [Transport Encryption Libraries](#transport-encryption-libraries)
- [Secure Messaging Protocols](#secure-messaging-protocols)
- [Collections of Cryptographic Primitives](#collections-of-cryptographic-primitives)
- [Traits for Cryptographic Primitives](#traits-for-cryptographic-primitives)
- [Symmetric Cryptography](#symmetric-cryptography)
- [Asymmetric Cryptography](#asymmetric-cryptography)
- [Platform / Framework Bindings](#platform--framework-bindings)
- [Cryptographic Hardware](#cryptographic-hardware)
- [Post-Quantum Cryptography](#post-quantum-cryptography)
- [Random Number Generators](#random-number-generators)
- [Zero-knowledge Proofs](#zero-knowledge-proofs)
- [Secure Multiparty Computation](#secure-multiparty-computation)
- [Fully Homomorphic Encryption](#fully-homomorphic-encryption)
- [Format Decoders/Encoders](#format-decodersencoders)
- [Defensive Measures](#defensive-measures)
- [Arithmetic](#arithmetic)
- [Miscellany](#miscellany)
## High-level Libraries
[up](#table-of-contents)
These libraries function at a very high level and are designed for simplicity
and ease-of-use. They provide integrated key management in addition to
providing high-level APIs for algorithms.
- [rage](https://github.com/str4d/rage) Implementation of
[age](https://age-encryption.org/) -- a simple, secure and modern encryption
tool with small explicit keys, no config options, and UNIX-style
composability.
- [signatory](https://github.com/iqlusioninc/crates/tree/main/signatory)
High-level digital signature library with support for ECDSA and Ed25519.
- [tink-rust](https://github.com/project-oak/tink-rust) Rust port of Google's
high-level Tink cryptography library.
## Transport Encryption Libraries
[up](#table-of-contents)
These libraries implement protocols that are designed to protect
data-in-transit; i.e., network communications.
- [rustls](https://github.com/ctz/rustls)
[![][audited-badge]](https://cure53.de/pentest-report_rustls.pdf)
Modern SSL/TLS library in Rust.
- [snow](https://github.com/mcginty/snow) Pure Rust implementation of Trevor
Perrin's [Noise Protocol](https://noiseprotocol.org).
- [strobe-rs](https://github.com/rozbb/strobe-rs) Relatively barebones,
`no_std` implementation of the [Strobe protocol
framework](https://strobe.sourceforge.io/) in pure Rust.
- [OpenMLS](https://github.com/openmls/openmls/)
[MLS](https://datatracker.ietf.org/doc/draft-ietf-mls-protocol/)
implementation in Rust.
- [webpki](https://github.com/briansmith/webpki) validates Web PKI (TLS/SSL)
certificates
## Secure Messaging Protocols
[up](#table-of-contents)
This section is for secure messaging protocols that transfer messages with end-to-end encryption (E2EE) and may use perfect forward secrecy and post-compromise security.
- [OpenMLS](https://github.com/openmls/openmls/) IETF Messaging Layer Security (MLS) protocol designed for secure group messaging with forward secrecy, post-compromise security, and deniable authentication [RFC 9420](https://datatracker.ietf.org/doc/html/rfc9420).
- [mls-rs](https://github.com/awslabs/mls-rs.git) IETF MLS protocol library that has been validated for conformance to the RFC 9420 specification but has not yet received a full security audit by a 3rd party.
- [Matter protocol](https://github.com/project-chip/rs-matter) A secure application layer message protocol for devices, particularly home automation devices, that supports encryption, authentication, and privacy.
- [vodozemac](https://github.com/matrix-org/vodozemac) An implementation of Olm (Double Ratchet) and Megolm cryptographic ratchets used in message based protocols. This crate has received one security [audit](https://matrix.org/media/Least%20Authority%20-%20Matrix%20vodozemac%20Final%20Audit%20Report.pdf) by [Least Authority](https://leastauthority.com/), with no significant findings.
## Collections of Cryptographic Primitives
[up](#table-of-contents)
These libraries provide omnibus collections of different cryptographic
primitives contained within a single library.
- [evercrypt-rust](https://github.com/franziskuskiefer/evercrypt-rust)
![][verified-badge] Rust bindings for
[evercrypt](https://github.com/project-everest/hacl-star/tree/master/providers/evercrypt),
a set of high-performance HACL\*-verified implementations of cryptographic
primitives. bindings crate, bringing HACL-verified cryptographic primitives.
- [libsm](https://github.com/citahub/libsm) China's Standards of Encryption
Algorithms (SM2/3/4).
- [orion](https://github.com/brycx/orion) Collection of usable, easy and safe
pure-Rust cryptographic primitives.
- [\*ring\*](https://github.com/briansmith/ring)
[![][audited-badge]](https://cure53.de/pentest-report_rustls.pdf)
focused on the implementation, testing, and optimization of a core set of
cryptographic operations exposed via an easy-to-use (and hard-to-misuse)
API. \*ring\* exposes a Rust API and is written in a hybrid of Rust, C, and
assembly language.
- [themis](https://github.com/cossacklabs/themis) Cross-platform general
purpose crypto library for securing data during authentication, storage,
messaging, network exchange, etc.
- [dryoc](https://github.com/brndnmtthws/dryoc) A pure-Rust, general purpose
crypto library that implements libsodium primitives.
## Traits for Cryptographic Primitives
[up](#table-of-contents)
The crates in this section provide trait-based abstractions for different types
of cryptographic primitives, allowing implementations of higher-level
cryptographic algorithms and protocols which are generic over specific
primitives and implementations.
- [aead](https://github.com/RustCrypto/traits/tree/master/aead) Authenticated
Encryption with Additional Data (AEAD) cipher traits.
- [ark-ec](https://github.com/arkworks-rs/algebra/tree/master/ec) Elliptic
curve traits as used by the [`arkworks` ecosystem](arkworks.rs).
- [ark-ff](https://github.com/arkworks-rs/algebra/tree/master/ff) Finite
field traits as used by the [`arkworks` ecosystem](arkworks.rs).
- [cipher](https://github.com/RustCrypto/traits/tree/master/cipher) Block
cipher and stream cipher traits.
- [crypto](https://github.com/RustCrypto/traits/tree/master/crypto) Facade
for all [RustCrypto](https://github.com/RustCrypto) traits.
- [crypto-mac](https://github.com/RustCrypto/traits/tree/master/crypto-mac)
Message Authentication Code (MAC) traits.
- [digest](https://github.com/RustCrypto/traits/tree/master/digest)
Digest/hash algorithm traits.
- [elliptic-curve](https://github.com/RustCrypto/traits/tree/master/elliptic-curve)
Elliptic curve traits as used by the RustCrypto ecosystem.
- [ff](https://github.com/zkcrypto/ff) Finite field traits as used by the
RustCrypto and ZKCrypto ecosystems.
- [group](https://github.com/zkcrypto/group) Elliptic curve group traits as
used by the RustCrypto and ZKCrypto ecosystems.
- [pairing](https://github.com/zkcrypto/pairing)
Pairing-friendly curve traits as used by the ZKCrypto ecosystem.
- [password-hash](https://github.com/RustCrypto/traits/tree/master/password-hash)
Password hashing traits and support for the PHC string format.
- [signature](https://github.com/RustCrypto/traits/tree/master/signature)
Digital signature traits.
- [universal-hash](https://github.com/RustCrypto/traits/tree/master/universal-hash)
Universal Hash Function (UHF) traits.
## Symmetric Cryptography
[up](#table-of-contents)
These crates implement individual symmetric cryptography algorithms.
### Authenticated Encryption with Associated Data (AEAD) Algorithms
These are high-level symmetric encryption libraries which ensure both the
confidentiality and integrity of data.
- [aes-gcm](https://github.com/RustCrypto/AEADs/tree/master/aes-gcm)
[![][audited-badge]](https://research.nccgroup.com/2020/02/26/public-report-rustcrypto-aes-gcm-and-chacha20poly1305-implementation-review/)
Pure Rust implementation of the AES-GCM Authenticated Encryption with
Associated Data (AEAD) cipher.
- [aes-gcm-siv](https://github.com/RustCrypto/AEADs/tree/master/aes-gcm-siv)
AES-GCM-SIV (RFC 8452) is a state-of-the-art high-performance Authenticated
Encryption with Associated Data (AEAD) cipher which also provides nonce
reuse misuse resistance.
- [aes-siv](https://github.com/RustCrypto/AEADs/tree/master/aes-siv) AES-SIV
Misuse-Resistant Authenticated Encryption Cipher.
- [ascon-aead](https://github.com/RustCrypto/AEADs/tree/master/ascon-aead)
Pure Rust implementation of the Ascon Authenticated Encryption with
Associated Data (AEAD) cipher, including implementations of the Ascon-128
and Ascon-128a variants.
- [ccm](https://github.com/RustCrypto/AEADs/tree/master/ccm) Pure Rust
implementation of the Counter with CBC-MAC (CCM) mode (RFC 3610): an
Authenticated Encryption with Associated Data (AEAD) algorithm generic over
block ciphers with block size equal to 128 bits.
- [chacha20poly1305](https://github.com/RustCrypto/AEADs/tree/master/chacha20poly1305)
[![][audited-badge]](https://web.archive.org/web/20240108154854/https://research.nccgroup.com/wp-content/uploads/2020/02/NCC_Group_MobileCoin_RustCrypto_AESGCM_ChaCha20Poly1305_Implementation_Review_2020-02-12_v1.0.pdf)
Pure Rust implementation of ChaCha20Poly1305 (RFC 8439): an Authenticated
Encryption with Associated Data (AEAD) cipher amenable to fast,
constant-time implementations in software.
- [deoxys](https://github.com/RustCrypto/AEADs/tree/master/deoxys) Pure Rust
implementation of the Deoxys Authenticated Encryption with Associated Data
(AEAD) cipher, including the Deoxys-II variant which was selected by the
CAESAR competition as the best choice for in-depth security.
- [eax](https://github.com/RustCrypto/AEADs/tree/master/eax) Pure Rust
implementation of the EAX Authenticated Encryption with Associated Data
(AEAD) cipher.
### Ciphers (low-level block ciphers and stream ciphers)
Note: most users should use higher-level AEAD encryption algorithms
enumerated above. Crates in this section are low-level "unauthenticated"
ciphers which should be wrapped up in a higher-level construction prior to
use.
- [aes](https://github.com/RustCrypto/block-ciphers/tree/master/aes)
[![][audited-badge]](https://research.nccgroup.com/2020/02/26/public-report-rustcrypto-aes-gcm-and-chacha20poly1305-implementation-review/)
Pure Rust implementation of the Advanced Encryption Standard (AES)
permutation with optional AES-NI and ARMv8 hardware acceleration.
- [block-modes](https://github.com/RustCrypto/block-modes)
Generic implementation of block cipher modes of operation, including CBC and
ECB modes.
- [chacha20](https://github.com/RustCrypto/stream-ciphers/tree/master/chacha20)
[![][audited-badge]](https://research.nccgroup.com/2020/02/26/public-report-rustcrypto-aes-gcm-and-chacha20poly1305-implementation-review/)
Pure Rust implementation of the ChaCha20 Stream Cipher including XChaCha20.
- [ctr](https://github.com/RustCrypto/block-modes/tree/master/ctr) Generic
implementations of the Counter Mode (CTR) of operation for block ciphers.
- [des](https://github.com/RustCrypto/block-ciphers/tree/master/des) Data
Encryption Standard (DES) and 3DES.
- [salsa20](https://github.com/RustCrypto/stream-ciphers/tree/master/salsa20)
Pure Rust implementation of the Salsa20 Stream Cipher.
### Hash Functions and Friends
- [ascon-hash](https://github.com/RustCrypto/hashes/tree/master/ascon-hash)
Pure Rust implementation of the Ascon hash and extendable output function
(XOF) including the Ascon-128 and Ascon-128a variants.
- [BLAKE2](https://github.com/RustCrypto/hashes/tree/master/blake2) Pure Rust
implementation of the BLAKE2 hash function family.
- [BLAKE3](https://github.com/BLAKE3-team/BLAKE3) Official implementation of
the BLAKE3 cryptographic hash function.
- [HKDF](https://github.com/RustCrypto/KDFs/tree/master/hkdf) HMAC-based
Extract-and-Expand Key Derivation Function (HKDF) for Rust.
- [MACs](https://github.com/RustCrypto/MACs) Collection of Message
Authentication Code algorithms written in pure Rust including CMAC, HMAC, and
PMAC.
- [Poseidon252](https://github.com/dusk-network/poseidon252) Reference
implementation for the Poseidon Hashing algorithm.
- [RIPEMD160](https://github.com/RustCrypto/hashes/tree/master/ripemd160)
Pure Rust implementation of the RIPEMD160 hash function.
- [SHA-2](https://github.com/RustCrypto/hashes/tree/master/sha2) Pure Rust
implementation of the SHA-2 hash function family including SHA-224, SHA-256,
SHA-384, and SHA-512.
- [SHA-3](https://github.com/RustCrypto/hashes/tree/master/sha3) Pure Rust
implementation of the SHA-3 (Keccak) hash function.
- [universal-hashes](https://github.com/RustCrypto/universal-hashes)
[![][audited-badge]](https://research.nccgroup.com/2020/02/26/public-report-rustcrypto-aes-gcm-and-chacha20poly1305-implementation-review/)
Collection of Universal Hash Functions written in pure Rust including
GHASH, POLYVAL, and Poly1305.
### Password Hashing Functions
- [argon2](https://github.com/RustCrypto/password-hashes/tree/master/argon2)
Pure Rust implementation of the Argon2 password hashing function.
- [bcrypt](https://github.com/Keats/rust-bcrypt) Pure Rust implementation of
the bcrypt password hashing function.
- [pbkdf2](https://github.com/RustCrypto/password-hashes/tree/master/pbkdf2)
Pure Rust implementation of the Password-Based Key Derivation Function v2
(PBKDF2).
- [phpass](https://github.com/clausehound/phpass)
Pure Rust implementation of the PhPass algorithm used by WordPress.
- [pkcs5](https://github.com/RustCrypto/formats/tree/master/pkcs5)
Pure Rust implementation of Public-Key Cryptography Standards #5: Password-Based
Cryptography Specification Version 2.1 (RFC 8018) with support for the scrypt
and PBKDF2 password-based key derivation functions.
- [rust-argon2](https://github.com/sru-systems/rust-argon2) Rust library for
hashing passwords using Argon2, the password-hashing function that won the
Password Hashing Competition (PHC).
- [scrypt](https://github.com/RustCrypto/password-hashes/tree/master/scrypt)
Pure Rust implementation of the scrypt key derivation function.
## Asymmetric Cryptography
[up](#table-of-contents)
These crates implement individual asymmetric (a.k.a. public key) cryptography
algorithms.
### Asymmetric Primitives
- [ark-curves](https://github.com/arkworks-rs/curves) Implementation of a
number of popular elliptic curves.
- [curve25519-dalek](https://github.com/dalek-cryptography/curve25519-dalek)
[![][audited-badge]](https://blog.quarkslab.com/security-audit-of-dalek-libraries.html)
A pure-Rust implementation of group operations on the
[Ristretto](https://ristretto.group) and Curve25519 elliptic curves.
- [bls12_381](https://github.com/zkcrypto/bls12_381) Implementation of the
BLS12-381 pairing-friendly elliptic curve group.
- [bn](https://github.com/paritytech/bn) Pairing cryptography library written
in pure Rust, making use of the Barreto-Naehrig (BN) curve construction.
- [bp256](https://github.com/RustCrypto/elliptic-curves/tree/master/bp256)
Brainpool P-256 elliptic curves.
- [fiat-rust](https://github.com/mit-plv/fiat-crypto/tree/master/fiat-rust)
![][verified-badge] Formally verified arithmetic implementations for several
elliptic curves and word sizes, extracted to Rust from specifications
written using in the Coq theorem prover.
- [h2c-rust-ref](https://github.com/armfazh/h2c-rust-ref)
Pure Rust reference implementation of the hash to curve specification from
IETF/CFRG Hash to Curve
[document](https://datatracker.ietf.org/doc/draft-irtf-cfrg-hash-to-curve).
Contains hashing methods for elliptic curves in Weierstrass, Montgomery,
and Twisted Edwards form.
- [jubjub](https://github.com/zkcrypto/jubjub) Pure Rust implementation of
the Jubjub elliptic curve group and its associated fields.
- [k256](https://github.com/RustCrypto/elliptic-curves/tree/master/k256)
[![][audited-badge]](https://research.nccgroup.com/2023/08/30/public-report-entropy-rust-cryptography-review/)
Pure Rust implementation of the secp256k1 (K-256) elliptic curve using complete
formulas based on projective coordinates.
- [libsecp256k1-rs](https://github.com/sorpaas/libsecp256k1-rs) Pure Rust
implementation of secp256k1.
- [p256](https://github.com/RustCrypto/elliptic-curves/tree/master/p256) Pure
Rust implementation of the NIST P-256 elliptic curve (a.k.a. prime256v1,
secp256r1).
- [pasta_curves](https://github.com/zcash/pasta_curves/)
Rust implementation of the Pallas-Vesta curve cycle for recursive
zero-knowledge proofs.
- [RSA](https://github.com/RustCrypto/RSA)
[![][audited-badge]](https://delta.chat/assets/1907-otf-deltachat-rpgp-rustrsa-gb-reportv1.pdf)
Pure Rust implementation of the RSA algorithm.
- [redox-ecc](https://github.com/armfazh/redox-ecc)
Pure Rust reference implementation of the elliptic curve operations for
Weierstrass, Montgomery, and Twisted Edwards curves.
- [rust-secp256k1](https://github.com/rust-bitcoin/rust-secp256k1) Rust FFI
bindings for Bitcoin Core's secp256k1 library written in C.
### Digital Signatures
- [bls_like](https://github.com/w3f/bls) Aggregate BLS signatures with
extensive tuning options.
- [bls-signatures](https://github.com/filecoin-project/bls-signatures)
Implementation of BLS Signatures in pure Rust.
- [ecdsa](https://github.com/RustCrypto/signatures/tree/master/ecdsa) Pure
Rust implementation of the Elliptic Curve Digital Signature Algorithm (ECDSA)
as specified in FIPS 186-4 (Digital Signature Standard).
- [ed25519](https://github.com/RustCrypto/signatures/tree/master/ed25519)
Cross-library compatibility crate for Edwards Digital Signature Algorithm
(EdDSA) over Curve25519 as specified in RFC 8032.
- [ed25519-compact](https://github.com/jedisct1/rust-ed25519-compact)
[![][verified-badge]](https://github.com/jedisct1/rust-ed25519-compact/issues/13)
A compact Ed25519 implementation for Rust, no_std / WebAssembly friendly
- [ed25519-dalek](https://github.com/dalek-cryptography/curve25519-dalek/tree/main/ed25519-dalek)
[![][audited-badge]](https://blog.quarkslab.com/security-audit-of-dalek-libraries.html)
Fast and efficient ed25519 key generation, signing, and verification in
Rust.
- [ed25519-zebra](https://github.com/ZcashFoundation/ed25519-zebra)
Zcash-flavored Ed25519 signatures for consensus-critical applications.
- [milagro_bls](https://github.com/sigp/milagro_bls) BLS signatures using the
[Apache Milagro](https://github.com/apache/incubator-milagro-crypto-rust)
Cryptographic Library.
- [nisty](https://github.com/nickray/nisty) NIST P-256 signatures for
Cortex-M4 microcontrollers.
- [rust-minisign](https://github.com/jedisct1/rust-minisign/) Pure Rust
implementation of the [Minisign](https://jedisct1.github.io/minisign/)
signature system.
- [schnorrkel](https://github.com/w3f/schnorrkel) Implements Schnorr
signature on Ristretto compressed Ed25519 points, as well as related
protocols like HDKD, MuSig, and a verifiable random function (VRF).
### Encryption (Hybrid Encryption)
- [hpke-rs](https://github.com/franziskuskiefer/hpke-rs) - Implementation of
[HPKE](https://cfrg.github.io/draft-irtf-cfrg-hpke/draft-irtf-cfrg-hpke.html)
using
[Evercrypt](https://github.com/franziskuskiefer/evercrypt-rust/tree/master/evercrypt-rs).
- [rust-hpke](https://github.com/rozbb/rust-hpke) Early implementation of the
[HPKE](https://datatracker.ietf.org/doc/draft-irtf-cfrg-hpke/) hybrid
encryption standard, written in pure Rust.
### Key Exchange
- [opaque-ke](https://github.com/novifinancial/opaque-ke) A Rust
implementation of the [OPAQUE](https://eprint.iacr.org/2018/163.pdf)
Password-Authenticated Key Exchange protocol.
- [PAKEs](https://github.com/RustCrypto/PAKEs) Collection of
Password-Authenticated Key Agreement protocols.
- [x25519-dalek](https://github.com/dalek-cryptography/curve25519-dalek/tree/main/x25519-dalek)
[![][audited-badge]](https://blog.quarkslab.com/security-audit-of-dalek-libraries.html)
Pure-Rust implementation of x25519 elliptic curve Diffie-Hellman key
exchange, with curve operations provided by
[curve25519-dalek](https://github.com/dalek-cryptography/curve25519-dalek).
### Threshold & Multiparty Signatures
- [multi-party-ecdsa](https://github.com/KZen-networks/multi-party-ecdsa)
Rust implementation of {t,n}-threshold ECDSA (elliptic curve digital
signature algorithm).
- [multi-party-schnorr](https://github.com/KZen-networks/multi-party-schnorr)
Multiparty and threshold Schnorr signatures
- [threshold_crypto](https://github.com/poanetwork/threshold_crypto) A
pairing-based threshold cryptosystem for collaborative decryption and
signatures.
- [FROST (on redjubjub)](https://github.com/ZcashFoundation/redjubjub)
[![][audited-badge]](https://github.com/ZcashFoundation/redjubjub/blob/main/zcash-frost-audit-report-20210323.pdf)
An implementation of FROST (Flexible Round-Optimized Schnorr Threshold)
RedJubjub signatures.
### Verifiable Delay Functions (VDFs)
- [vdf](https://github.com/poanetwork/vdf) An implementation of Verifiable
Delay Functions in Rust.
### Verifiable Random Functions (VRFs)
- [schnorrkel](https://github.com/w3f/schnorrkel) Implements Schnorr
signature on Ristretto compressed Ed25519 points, as well as related
protocols like HDKD, MuSig, and a verifiable random function (VRF).
## Platform / Framework Bindings
[up](#table-of-contents)
These libraries are FFI bindings to OS platforms and commonly used
cryptography frameworks.
- [mesalink](https://mesalink.io/) OpenSSL-compatible C library implemented in
Rust
- [native-tls](https://github.com/sfackler/rust-native-tls) An abstraction
over platform-specific TLS implementations.
- [openssl](https://github.com/sfackler/rust-openssl) OpenSSL FFI bindings
for the Rust programming language.
- [schannel](https://github.com/steffengy/schannel-rs) Rust bindings to the
Windows SChannel APIs providing TLS client and server functionality.
- [security-framework](https://github.com/kornelski/rust-security-framework)
Bindings to the Apple's Security.framework. Allows use of TLS and Keychain
from Rust.
## Cryptographic Hardware
[up](#table-of-contents)
These libraries provide host-side drivers for cryptographic hardware devices
(e.g. authentication tokens, HSMs).
- [cryptoki](https://github.com/parallaxsecond/rust-cryptoki) Rust-native
PKCS#11 library.
- [rust-cryptoauthlib](https://github.com/PelionIoT/rust-cryptoauthlib/)
Rust library for interfacing with ATECCx08a devices.
- [solo](https://github.com/solokeys/solo) Solo is an open source security
key.
- [tss-esapi](https://github.com/parallaxsecond/rust-tss-esapi) Rust-native
library for interfacing with TPM 2.0 devices via the TCG Enhanced System API
(ESAPI).
- [yubihsm](https://github.com/iqlusioninc/yubihsm.rs) Pure-Rust client
library for YubiHSM 2 devices which implements most the functionality of the
libyubihsm C library from Yubico's YubiHSM SDK.
- [yubikey](https://github.com/iqlusioninc/yubikey.rs) Pure Rust
cross-platform host-side driver for YubiKey devices from Yubico with support
for public-key encryption and digital signatures using the Personal Identity
Verification (PIV) application.
## Post-Quantum Cryptography
[up](#table-of-contents)
These libraries are designed to be secure against hypothetical future attacks
by large quantum computers.
- [ml-kem](https://github.com/RustCrypto/KEMs/tree/master/ml-kem) Pure Rust
implementation of the Module-Lattice-Based Key-Encapsulation Mechanism
standard (formerly known as Kyber) as described in FIPS 203 (final).
- [oqs](https://github.com/open-quantum-safe/liboqs-rust) Wrapper around
Open-Quantum-Safe's liboqs cryptographic library.
- [pqcrypto](https://github.com/rustpq/pqcrypto) FFI bindings to quantum-safe
cryptographic libraries.
- [picnic-bindings](https://github.com/ait-crypto/picnic-bindings-rs) FFI
bindings to Picnic library implementating the traits from
[signature](https://github.com/RustCrypto/traits/tree/master/signature).
- [pqcrypto-picnic](https://github.com/ait-crypto/pqcrypto-picnic) FFI bindings
to Picnic library implementating the traits from
[pqcrypto](https://github.com/rustpq/pqcrypto).
## Random Number Generators
[up](#table-of-contents)
- [rand](https://github.com/rust-random/rand) Rust library for random number
generation.
- [getrandom](https://docs.rs/getrandom/0.2.3/getrandom/) Interface to the
operating system's random number generator.
## Zero-knowledge Proofs
[up](#table-of-contents)
- [arkworks](https://github.com/arkworks-rs) An ecosystem for developing and
programming with zkSNARKs.
- [bellman](https://github.com/zkcrypto/bellman)
[](https://cybermashup.files.wordpress.com/2018/08/zcash-audit.pdf)
[](https://raw.githubusercontent.com/QED-it/sapling-audit/master/sapling-audit-report.pdf)
A crate for building zk-SNARK circuits.
- [bellman-ce](https://github.com/matter-labs/bellman) Bellman fork with
support for Ethereum's BN256.
- [bellperson](https://github.com/filecoin-project/bellperson) Bellman fork
with GPU parallel acceleration for FFT and Multiexponentation subroutines in
the Groth16 prover.
- [bulletproofs](https://github.com/dalek-cryptography/bulletproofs)
[![][audited-badge]](https://blog.quarkslab.com/security-audit-of-dalek-libraries.html)
Pure-Rust implementation of
[Bulletproofs](https://crypto.stanford.edu/bulletproofs/) using
[Ristretto](https://ristretto.group).
- [bulletproof](https://github.com/KZen-networks/bulletproofs) Implements
[Bulletproofs+](https://eprint.iacr.org/2020/735.pdf) and
[Bulletproofs](https://eprint.iacr.org/2017/1066.pdf) aggregated range proofs
with multi-exponent verification.
- [Dusk-Zerocaf](https://github.com/dusk-network/dusk-zerocaf) Pure-Rust
cryptographic library constructed to define operations for an elliptic curve
embedded into the [Ristretto](https://ristretto.group) scalar field.
- [merlin](https://github.com/dalek-cryptography/merlin) Composable proof
transcripts for public-coin arguments of knowledge.
- [OpenZKP](https://github.com/0xProject/OpenZKP) Pure-Rust implementations
of Zero-Knowledge Proof systems.
- [snarkVM](https://github.com/AleoHQ/snarkVM) A Rust implementation of
[Zexe](https://eprint.iacr.org/2018/962.pdf), a model for decentralized private
computation using zero-knowledge proofs
- [Spartan](https://github.com/microsoft/Spartan) High-speed zkSNARKs without
trusted setup.
- [winterfell](https://github.com/novifinancial/winterfell/) A distributed
STARK prover.
- [ZoKrates](https://github.com/Zokrates/ZoKrates) A toolbox for zkSNARKs on
Ethereum.
- [zkp](https://github.com/zkcrypto/zkp) Macro-based zero-knowledge proof
compiler for Schnorr proofs.
## Secure Multiparty Computation
[up](#table-of-contents)
These libraries allow several participants to collectively perform a
computation without revealing what is being computed to the participants.
- [libpaillier](https://github.com/mikelodder7/paillier-rs) Rust
implementation of the Paillier cryptosystem with additive homomorphism
- [swanky](https://github.com/GaloisInc/swanky) A suite of Rust libraries for
secure multi-party computation.
- [white-city](https://github.com/KZen-networks/white-city) API to integrate
distributed network for secure computation protocols.
## Fully Homomorphic Encryption
[up](#table-of-contents)
These libraries allow to perform secure computation, e.g. computations over
encrypted data.
- [concrete](https://github.com/zama-ai/concrete) Rust implementation of
various FHE operations based on the TFHE scheme.
- [TFHE-rs](https://github.com/zama-ai/tfhe-rs) Pure Rust implementation of the TFHE scheme for boolean and integers FHE arithmetics.
## Format Decoders/Encoders
[up](#table-of-contents)
These libraries implement parsers and serializers for various
cryptography-related formats.
- [base64ct](https://github.com/RustCrypto/formats/tree/master/base64ct)
Constant-time Base64 decoder/encoder with `no_std` support.
- [der](https://github.com/RustCrypto/formats/tree/master/der)
Cryptography-oriented ASN.1 DER decoder/encoder with `no_std` support.
- [pem-rfc7468](https://github.com/RustCrypto/formats/tree/master/pem-rfc7468)
Constant-time implementation of the strict PEM encoding rules for PKIX, PKCS,
and CMS Structures.
- [pkcs1](https://github.com/RustCrypto/formats/tree/master/pkcs1) Pure Rust
implementation of Public-Key Cryptography Standards #1: RSA Cryptography
Specifications Version 2.2 (RFC 8017).
- [pkcs8](https://github.com/RustCrypto/formats/tree/master/pkcs8) Pure Rust
implementation of Public-Key Cryptography Standards #8: Private-Key
Information Syntax Specification (RFC 5208).
- [rasn](https://github.com/XAMPPRocky/rasn) A `no_std` ASN.1 codec framework
(like serde but for ASN.1). Supports the following formats: BER, CER, DER.
- [x509-parser](https://github.com/rusticata/x509-parser) X.509 v3 (RFC5280)
parser, implemented with the nom parser combinator framework.
## Defensive Measures
[up](#table-of-contents)
These libraries can be used to harden cryptographic algorithms against
attacks.
### Constant-Time Code
- [subtle](https://github.com/dalek-cryptography/subtle)
[![][audited-badge]](https://blog.quarkslab.com/security-audit-of-dalek-libraries.html)
Pure-Rust traits and utilities for constant-time cryptographic implementations.
### Protecting Secrets in Memory
- [secrecy](https://github.com/iqlusioninc/crates/tree/main/secrecy) A simple
secret-keeping library for Rust.
### Zeroing Memory
- [zeroize](https://github.com/RustCrypto/utils/tree/master/zeroize) Securely
zero memory while avoiding compiler optimizations.
## Arithmetic
[up](#table-of-contents)
These libraries implement mathematical algorithms potentially interesting for
cryptography-related applications.
- [crypto-bigint](https://github.com/RustCrypto/crypto-bigint)
[![][audited-badge]](https://research.nccgroup.com/2023/08/30/public-report-entropy-rust-cryptography-review/)
Cryptography-oriented "bignum" library with constant-time algorithms
including modular arithmetic, stack-allocated big integers, and `no_std`
support
- [crypto-primes](https://github.com/entropyxyz/crypto-primes)
[![][audited-badge]](https://research.nccgroup.com/2023/08/30/public-report-entropy-rust-cryptography-review/)
A crate for generating random primes and primality testing based on `crypto-bigint` integers.
- [nalgebra](https://github.com/rustsim/nalgebra) Linear algebra library for
Rust.
- [num](https://github.com/rust-num/num) Collection of numeric types and
traits for Rust. (Bigint).
- [rust-decimal](https://github.com/paupino/rust-decimal) Decimal
implementation written in pure Rust suitable for financial calculations that
require significant integral and fractional digits with no round-off errors.
- [secret-integers](https://github.com/hacspec/rust-secret-integers)
Integer wrapper types that guarantee constant-time operations only.
## Miscellany
[up](#table-of-contents)
Other libraries which don't fall into the categories listed above.
- [librustzcash](https://github.com/zcash/librustzcash) A (work-in-progress)
set of Rust crates for working with Zcash.
- [sequoia](https://gitlab.com/sequoia-pgp/sequoia) Implements OpenPGP in
Rust.
================================================
FILE: CNAME
================================================
cryptography.rs
================================================
FILE: README.md
================================================
# Rust Cryptography Interest Group (RCIG) [![Zulip Chat][chat-img]][Zulip Chat]
<img width="100px"
src="https://raw.githubusercontent.com/The-DevX-Initiative/RCIG_Coordination_Repo/main/mascot.png">
<img align = "right" width="170px"
src="https://raw.githubusercontent.com/The-DevX-Initiative/RCIG_Coordination_Repo/main/RCIG_Mascot3.png">
This repository is the central [issue tracker] used by the RCIG in order to
coordinate efforts towards promoting cryptography in Rust.
## Join in!
Come talk with us via [Zulip Chat] or by [opening an issue].
## Projects
- [Awesome Rust Cryptography][cryptography.rs] (a.k.a. [cryptography.rs]):
curated list of actively maintained, high-quality Rust cryptography libraries.
## About
This repository is where the Rust Cryptography Interest Group stores the following:
- meeting minutes from Sync-Up calls
- open issues based on ongoing discussions
- suggest follow up topics of discussion for future sync-up calls
- be a place where the community coordinates.
The aim will be for this repo to evolve an archive and a place
where actionable items can be
picked up easily by members of the RCIG community.
## Mission
Our mission is to foster a robust Rust cryptography ecosystem:
- Create a focal point for discussion and work on Rust cryptography in general
- Provide overall direction for cryptography in Rust by fostering
collaboration on an interoperable cryptographic ecosystem
- Act as a resource for answering questions about the use of cryptography
in Rust projects
Note that this is a new group and figuring out its exact purpose is a work-in-progress.
As we figure out a governance process we will be revising our mission statement and
hopefully publishing a [vision document].
[issue tracker]: https://github.com/The-DevX-Initiative/RCIG_Coordination_Repo/issues
[opening an issue]: https://github.com/The-DevX-Initiative/RCIG_Coordination_Repo/issues/new/choose
[vision document]: https://github.com/The-DevX-Initiative/RCIG_Coordination_Repo/issues/4
[Zulip Chat]: https://rcig.zulipchat.com/
[chat-img]: https://img.shields.io/badge/zulip-join_chat-blue.svg?logo=zulip
[cryptography.rs]: https://cryptography.rs
================================================
FILE: _config.yml
================================================
title: Awesome Rust Cryptography
description: Showcase of notable cryptography libraries developed in Rust
theme: jekyll-theme-hacker
include:
- index.html
- Awesome_Rust_Cryptography.md
================================================
FILE: index.html
================================================
---
title: Awesome Rust Cryptography
description: Showcase of notable cryptography libraries developed in Rust
layout: default
---
{% capture my_include %}{% include_relative Awesome_Rust_Cryptography.md %}{% endcapture %}
{{ my_include | markdownify }}
================================================
FILE: markdownlint.rb
================================================
# markdownlint style rules
# See https://github.com/markdownlint/markdownlint/blob/master/docs/RULES.md
# To install,
all
#exclude_rule 'MD013' # Line length
exclude_rule 'MD026' # Trailing punctuation in header
exclude_rule 'MD033' # Inline HTML
gitextract_mfs6cg0a/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── add_crate.md │ │ └── bug.md │ └── workflows/ │ └── ci.yml ├── .gitignore ├── Awesome_Rust_Cryptography.md ├── CNAME ├── README.md ├── _config.yml ├── index.html └── markdownlint.rb
Condensed preview — 10 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (38K chars).
[
{
"path": ".github/ISSUE_TEMPLATE/add_crate.md",
"chars": 306,
"preview": "---\nname: Add Crate\nabout: Add a crate to the list\n---\n\n\n<!--\nThank you for providing a new crate we should add to the l"
},
{
"path": ".github/ISSUE_TEMPLATE/bug.md",
"chars": 283,
"preview": "---\nname: Bug report\nabout: Report a bug in the docs\n---\n\n<!--\nThanks for reporting a bug.\n\nTo report a bug, please let "
},
{
"path": ".github/workflows/ci.yml",
"chars": 247,
"preview": "name: Rust Crypto CI\n\non: [pull_request, push]\n\njobs:\n check_docs:\n runs-on: ubuntu-latest\n steps:\n - uses: ac"
},
{
"path": ".gitignore",
"chars": 21,
"preview": ".jekyll-cache/\n_site\n"
},
{
"path": "Awesome_Rust_Cryptography.md",
"chars": 32984,
"preview": "# Short URL for this page: [cryptography.rs](https://cryptography.rs)\n\n<img align=\"right\" height=\"100px\" src=\"https://ra"
},
{
"path": "CNAME",
"chars": 15,
"preview": "cryptography.rs"
},
{
"path": "README.md",
"chars": 2188,
"preview": "# Rust Cryptography Interest Group (RCIG) [![Zulip Chat][chat-img]][Zulip Chat]\n\n<img width=\"100px\"\nsrc=\"https://raw.git"
},
{
"path": "_config.yml",
"chars": 191,
"preview": "title: Awesome Rust Cryptography\ndescription: Showcase of notable cryptography libraries developed in Rust\ntheme: jekyll"
},
{
"path": "index.html",
"chars": 255,
"preview": "---\ntitle: Awesome Rust Cryptography\ndescription: Showcase of notable cryptography libraries developed in Rust\nlayout: d"
},
{
"path": "markdownlint.rb",
"chars": 250,
"preview": "# markdownlint style rules\n# See https://github.com/markdownlint/markdownlint/blob/master/docs/RULES.md\n# To install, \n\n"
}
]
About this extraction
This page contains the full source code of the The-DevX-Initiative/RCIG_Coordination_Repo GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 10 files (35.9 KB), approximately 9.7k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.