diff --git a/Cargo.lock b/Cargo.lock index 5c9f21f..808912b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -289,6 +289,22 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2db04e74f0a9a93103b50e90b96024c9b2bdca8bce6a632ec71b88736d3d359" +[[package]] +name = "dsa" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48bc224a9084ad760195584ce5abb3c2c34a225fa312a128ad245a6b412b7689" +dependencies = [ + "digest", + "num-bigint-dig", + "num-traits", + "pkcs8", + "rfc6979", + "sha2", + "signature", + "zeroize", +] + [[package]] name = "ecdsa" version = "0.16.9" @@ -1155,9 +1171,9 @@ dependencies = [ [[package]] name = "spin" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +checksum = "3763264f6b73151db08c50ff20d7d8a0b8796e021cdea7ceedad07b80155fa0e" [[package]] name = "spki" @@ -1235,6 +1251,7 @@ version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b86f5297f0f04d08cabaa0f6bff7cb6aec4d9c3b49d87990d63da9d9156a8c3" dependencies = [ + "dsa", "ed25519-dalek", "num-bigint-dig", "p256", @@ -1243,6 +1260,7 @@ dependencies = [ "rand_core", "rsa", "sec1", + "sha1", "sha2", "signature", "ssh-cipher", diff --git a/Cargo.toml b/Cargo.toml index 1575731..2d64a7f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,16 +27,21 @@ tokio = { version = "1", optional = true, features = ["rt", "net", "time"] } tokio-util = { version = "0.7", optional = true, features = ["codec"] } service-binding = { version = "^3", optional = true } ssh-encoding = { version = "0.2" } -ssh-key = { version = "0.6", features = ["crypto", "alloc"] } +ssh-key = { version = "0.6", default-features = false, features = ["std"] } thiserror = "2" subtle = { version = "2", default-features = false } signature = { version = "2", features = ["alloc"] } secrecy = "0.10" [features] -default = ["agent"] -codec = ["tokio-util"] -agent = ["futures", "log", "tokio", "async-trait", "codec", "service-binding"] +default = ["agent", "crypto-all"] +codec = ["dep:tokio-util"] +crypto-all = ["ssh-key/crypto", "crypto-dsa", "crypto-ecdsa", "crypto-ed25519", "crypto-rsa"] +crypto-dsa = ["ssh-key/dsa"] +crypto-ecdsa = ["ssh-key/p256", "ssh-key/p384", "ssh-key/p521"] +crypto-ed25519 = ["ssh-key/ed25519"] +crypto-rsa = ["ssh-key/rsa"] +agent = ["dep:futures", "dep:log", "dep:tokio", "dep:async-trait", "codec", "dep:service-binding"] [dev-dependencies] env_logger = "0.11.10" diff --git a/src/lib.rs b/src/lib.rs index 3e66c40..56c52cd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,8 @@ -#![doc = include_str!("../README.md")] +#![cfg_attr(feature = "default", doc = include_str!("../README.md"))] +#![cfg_attr( + not(feature = "default"), + doc = "Documentation available using the default feature" +)] #![deny(missing_debug_implementations)] #![deny(unsafe_code)] #![deny(missing_docs)] diff --git a/src/proto/extension/message.rs b/src/proto/extension/message.rs index aca12e2..cb77ce8 100644 --- a/src/proto/extension/message.rs +++ b/src/proto/extension/message.rs @@ -130,6 +130,7 @@ impl MessageExtension for SessionBind { } #[cfg(test)] +#[cfg(feature = "crypto-ed25519")] mod tests { use testresult::TestResult;