1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//! Facade crate for [RustCrypto Traits][1], providing a single place to
//! access compatible versions of all traits from the Rust Crypto project.
//!
//! # About
//!
//! The [RustCrypto Project][2] publishes and maintains independently versioned
//! crates containing traits for many different kinds of cryptographic
//! algorithms.
//!
//! However, these algorithms are often interdependent (e.g. many depend on digest
//! algorithms), which requires figuring out which versions of the trait crates
//! are compatible with each other.
//!
//! This crate will automatically pull in compatible versions of these crates,
//! with each one gated under a cargo feature, providing a single place to both
//! import and upgrade these crates while ensuring they remain compatible.
//!
//! # Traits
//!
//! - [`aead`](https://docs.rs/aead) -
//!   Authenticated Encryption with Associated Data (i.e. high-level symmetric encryption)
//! - [`block_cipher`](https://docs.rs/block-cipher) -
//!   block-based cryptographic permutations (i.e. low-level symmetric encryption)
//! - [`mac`](https://docs.rs/crypto-mac) -
//!   message authentication codes (i.e. symmetric message authentication)
//! - [`digest`](https://docs.rs/digest) -
//!   cryptographic hash functions
//! - [`signature`](https://docs.rs/signature) -
//!   digital signatures (i.e. public key-based message authentication)
//! - [`stream_cipher`](https://docs.rs/stream-cipher) -
//!   ciphers based on randomly generated keystreams (i.e. low-level symmetric encryption)
//! - [`universal_hash`](https://docs.rs/universal-hash) -
//!   universal hash functions (used to build MACs)
//!
//! [1]: https://github.com/RustCrypto/traits
//! [2]: https://github.com/RustCrypto

#![no_std]
#![doc(html_logo_url = "https://raw.githubusercontent.com/RustCrypto/meta/master/logo_small.png")]
#![forbid(unsafe_code)]
#![warn(rust_2018_idioms)]

#[cfg(feature = "aead")]
pub use aead;

#[cfg(feature = "block-cipher")]
pub use block_cipher;

#[cfg(feature = "crypto-mac")]
pub use crypto_mac as mac;

#[cfg(feature = "digest")]
pub use digest;

#[cfg(feature = "signature")]
pub use signature;

#[cfg(feature = "stream-cipher")]
pub use stream_cipher;

#[cfg(feature = "universal-hash")]
pub use universal_hash;