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
//! Modern Cryptography & Hashing Toolkit (Rust)
//!
//! A misuse-resistant, high-level cryptography library with safe defaults,
//! constant-time verification, and clear APIs for hashing, password hashing,
//! key derivation, symmetric encryption, HMAC, and digital signatures.
//!
//! # Sub-modules
//!
//! - [`hash`]: deterministic hashing and HMAC
//! - [`password`]: password hashing, verification, and key derivation
//! - [`encrypt`]: AEAD symmetric encryption
//! - [`sign`]: Ed25519 digital signatures
//!
//! # Examples
//!
//! ```
//! use modern_crypto_toolkit::{hash, password, encrypt, sign};
//!
//! let sha256 = hash::string("hello world", "sha-256").unwrap();
//! let mac = hash::hmac("secret-key", "message", "sha-256").unwrap();
//! assert!(hash::verify_hmac(&mac, "secret-key", "message", "sha-256").unwrap());
//!
//! let ph = password::hash("user-password").unwrap();
//! assert!(password::verify("user-password", &ph).unwrap());
//!
//! let salt = b"saltsaltsaltsalt";
//! let key = password::derive("passphrase", salt, 32, Some("pbkdf2_sha256"), None).unwrap();
//!
//! let ciphertext = encrypt::encrypt_string("sensitive data", &key, None).unwrap();
//! let plaintext = encrypt::decrypt_string(&ciphertext, &key, None).unwrap();
//! assert_eq!(plaintext, "sensitive data");
//!
//! let (sk, pk) = sign::generate_keypair().unwrap();
//! let signature = sign::ed25519("message", &sk).unwrap();
//! assert!(sign::verify(&signature, "message", &pk).unwrap());
//! ```
pub use ;