Skip to main content

herolib_crypt/
lib.rs

1//! # herolib-crypt
2//!
3//! Simple and secure cryptography library for Rust.
4//!
5//! This crate provides:
6//! - **Asymmetric cryptography**: Ed25519 signing and X25519 encryption
7//! - **Symmetric cryptography**: XChaCha20-Poly1305 authenticated encryption
8//!
9//! ## Quick Start
10//!
11//! ### Asymmetric Encryption (Public Key)
12//!
13//! ```rust
14//! use herolib_crypt::{generate_keypair, encrypt_message, decrypt_message};
15//!
16//! // Generate keypair
17//! let keypair = generate_keypair().unwrap();
18//!
19//! // Encrypt for recipient using their encryption public key
20//! let encrypted = encrypt_message("secret", &keypair.encryption_public_key_hex).unwrap();
21//!
22//! // Decrypt with private key
23//! let decrypted = decrypt_message(&encrypted, &keypair.encryption_private_key_hex).unwrap();
24//! assert_eq!(decrypted, "secret");
25//! ```
26//!
27//! ### Symmetric Encryption (Shared Key)
28//!
29//! ```rust
30//! use herolib_crypt::symmetric::{EncryptionKey, Cipher};
31//!
32//! // Generate a random key
33//! let key = EncryptionKey::generate();
34//! let cipher = Cipher::new(key);
35//!
36//! // Encrypt and decrypt
37//! let encrypted = cipher.encrypt(b"secret data").unwrap();
38//! let decrypted = cipher.decrypt(&encrypted).unwrap();
39//! assert_eq!(decrypted, b"secret data");
40//! ```
41
42pub mod asymmetric;
43#[cfg(feature = "rhai")]
44pub mod rhai;
45pub mod symmetric;
46
47pub mod keys;
48
49#[cfg(feature = "httpsig")]
50pub mod httpsig;
51
52// Re-export asymmetric types at top level for convenience
53pub use asymmetric::{
54    CryptoError, CryptoResult, KeyPair, decrypt_message, encrypt_message,
55    encryption_public_key_from_private, generate_keypair, public_key_from_private, sign_message,
56    verify_signature,
57};