[package]
name = "anvil-ssh"
version = "1.1.0"
edition = "2021"
license = "GPL-3.0-or-later"
authors = ["Mohamed Hammad <Mohamed.Hammad@SpacecraftSoftware.org>"]
repository = "https://github.com/Spacecraft-Software/Anvil"
homepage = "https://github.com/Spacecraft-Software/Anvil"
documentation = "https://docs.rs/anvil-ssh"
description = "Pure-Rust SSH stack for Git tooling: transport, keys, signing, agent. Foundation library extracted from Spacecraft-Software/Gitway."
keywords = ["ssh", "git", "gitlab", "codeberg", "transport"]
categories = ["network-programming", "authentication"]
readme = "README.md"
rust-version = "1.88"
[dependencies]
russh = { version = "0.59", default-features = false, features = ["flate2", "aws-lc-rs", "rsa"] }
tokio = { version = "1", features = ["io-util", "io-std", "rt-multi-thread", "net", "sync", "macros", "signal", "time", "process"] }
thiserror = "2"
log = "0.4"
tracing = "0.1"
tracing-log = "0.2"
dirs = "6"
zeroize = "1.7"
hmac = "0.12"
sha1 = "0.10"
base64 = "0.22"
ssh-key = { version = "0.6.7", default-features = false, features = ["ed25519", "ecdsa", "rsa", "p256", "p384", "p521", "encryption", "std"] }
sha2 = "0.10"
rand_core = { version = "0.6", features = ["std", "getrandom"] }
ssh-agent-lib = "0.5.2"
ed25519-dalek = "2"
signature = "2"
rsa = "0.9"
async-trait = "0.1"
futures = "0.3"
[target.'cfg(unix)'.dependencies]
nix = { version = "0.29", features = ["fs", "process", "signal", "user"] }
[dev-dependencies]
tokio = { version = "1", features = ["io-util", "io-std", "rt-multi-thread", "net", "sync", "macros", "signal", "time", "process"] }
tempfile = "3"
criterion = { version = "0.5", features = ["async_tokio"] }
serde = { version = "1", features = ["derive"] }
serde_yml = "0.0.12"
hmac = "0.12"
sha1 = "0.10"
base64 = "0.22"
[[bench]]
name = "throughput"
harness = false
[[bench]]
name = "ssh_config_latency"
harness = false
[[bench]]
name = "proxy_chain"
harness = false
[lints.rust]
ambiguous_negative_literals = "warn"
missing_debug_implementations = "warn"
redundant_imports = "warn"
redundant_lifetimes = "warn"
trivial_numeric_casts = "warn"
unsafe_op_in_unsafe_fn = "warn"
unused_lifetimes = "warn"
[lints.clippy]
cargo = { level = "warn", priority = -1 }
complexity = { level = "warn", priority = -1 }
correctness = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -1 }
perf = { level = "warn", priority = -1 }
style = { level = "warn", priority = -1 }
suspicious = { level = "warn", priority = -1 }
allow_attributes_without_reason = "warn"
assertions_on_result_states = "warn"
clone_on_ref_ptr = "warn"
deref_by_slicing = "warn"
empty_drop = "warn"
empty_structs_with_brackets = "warn"
fn_to_numeric_cast_any = "warn"
map_err_ignore = "warn"
redundant_type_annotations = "warn"
semicolon_outside_block = "warn"
string_to_string = "warn"
undocumented_unsafe_blocks = "warn"
unnecessary_safety_comment = "warn"
unnecessary_safety_doc = "warn"
unused_result_ok = "warn"
literal_string_with_formatting_args = "allow"
module_name_repetitions = "allow"
multiple_crate_versions = "allow"
result_large_err = "allow"
cargo_common_metadata = "allow"