[package] name = "mtp-crypto" version = "0.2.0" edition = "2024" [package.metadata.cargo-machete] ignored = ["rand_core"] [dependencies] chacha20poly1305 = { version = "0.10", optional = true } aes-gcm = { version = "0.11", optional = true } ed25519-dalek = { version = "3.0", optional = true, features = [ "pkcs8", "pem", ] } hkdf = { version = "0.13", optional = true } sha2 = { version = "0.11", optional = true } zeroize = { version = "1.9", features = ["derive"] } thiserror = "2" base64 = "0.23" rand_core = { version = "0.10.1" } rand = "0.10.2" getrandom = "0.4.3" mlkem-tls = { version = "0.2", optional = true } ml-dsa = { version = "0.1.1", optional = true } serde = { version = "1", optional = true, features = ["derive"] } rcgen = { version = "0.14", optional = true } time = { version = "0.3", optional = true } tokio = { version = "1", features = ["macros", "rt"], optional = true } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] rustls = "0.23.41" [features] default = ["chacha20poly1305", "ed25519-dalek", "hkdf", "sha2", "ml-dsa", "parallel"] # Enabling ml-dsa by default ensures dual-signature support in the handshake # without requiring a separate PQC feature flag in host/client crates. full = ["default", "aes-gcm"] pqc = ["mlkem-tls", "ml-dsa"] serde = ["dep:serde"] wasm = ["getrandom/wasm_js"] hkdf = ["dep:hkdf", "dep:sha2"] sha2 = ["dep:sha2"] tls = ["dep:rcgen", "dep:time"] parallel = ["dep:tokio"]