ssh-key 0.6.7

Pure Rust implementation of SSH key file format decoders/encoders as described in RFC4251/RFC4253 and OpenSSH key formats, as well as "sshsig" signatures and certificates (including certificate validation and certificate authority support), with further support for the `authorized_keys` and `known_hosts` file formats.
Documentation
[package]
name = "ssh-key"
version = "0.6.7"
description = """
Pure Rust implementation of SSH key file format decoders/encoders as described
in RFC4251/RFC4253 and OpenSSH key formats, as well as "sshsig" signatures and
certificates (including certificate validation and certificate authority support),
with further support for the `authorized_keys` and `known_hosts` file formats.
"""
authors = ["RustCrypto Developers"]
license = "Apache-2.0 OR MIT"
repository = "https://github.com/RustCrypto/SSH/tree/master/ssh-key"
categories = ["authentication", "cryptography", "encoding", "no-std", "parser-implementations"]
keywords = ["crypto", "certificate", "openssh", "ssh", "sshsig"]
readme = "README.md"
edition = "2021"
rust-version = "1.65"

[dependencies]
cipher = { package = "ssh-cipher", version = "0.2", path = "../ssh-cipher" }
encoding = { package = "ssh-encoding", version = "0.2", features = ["base64", "pem", "sha2"], path = "../ssh-encoding" }
sha2 = { version = "0.10.8", default-features = false }
signature = { version = "2", default-features = false }
subtle = { version = "2", default-features = false }
zeroize = { version = "1", default-features = false }

# optional dependencies
bcrypt-pbkdf = { version = "0.10", optional = true, default-features = false, features = ["alloc"] }
bigint = { package = "num-bigint-dig", version = "0.8", optional = true, default-features = false }
dsa = { version = "0.6", optional = true, default-features = false }
ed25519-dalek = { version = "2", optional = true, default-features = false }
p256 = { version = "0.13", optional = true, default-features = false, features = ["ecdsa"] }
p384 = { version = "0.13", optional = true, default-features = false, features = ["ecdsa"] }
p521 = { version = "0.13.3", optional = true, default-features = false, features = ["ecdsa", "getrandom"] } # TODO(tarcieri): RFC6979
rand_core = { version = "0.6.4", optional = true, default-features = false }
rsa = { version = "0.9", optional = true, default-features = false, features = ["sha2"] }
sec1 = { version = "0.7.3", optional = true, default-features = false, features = ["point"] }
serde = { version = "1", optional = true }
sha1 = { version = "0.10", optional = true, default-features = false }

[dev-dependencies]
hex-literal = "0.4.1"
rand_chacha = "0.3"

[features]
default = ["ecdsa", "rand_core", "std"]
alloc = [
    "encoding/alloc",
    "signature/alloc",
    "zeroize/alloc",
]
std = [
    "alloc",
    "encoding/std",
    "p256?/std",
    "p384?/std",
    "p521?/std",
    "rsa?/std",
    "sec1?/std",
    "signature/std"
]

crypto = ["ed25519", "p256", "p384", "p521", "rsa"] # NOTE: `dsa` is obsolete/weak
dsa = ["dep:bigint", "dep:dsa", "dep:sha1", "alloc", "signature/rand_core"]
ecdsa = ["dep:sec1"]
ed25519 = ["dep:ed25519-dalek", "rand_core"]
encryption = [
    "dep:bcrypt-pbkdf",
    "alloc",
    "cipher/aes-cbc",
    "cipher/aes-ctr",
    "cipher/aes-gcm",
    "cipher/chacha20poly1305",
    "rand_core"
]
getrandom = ["rand_core/getrandom"]
p256 = ["dep:p256", "ecdsa"]
p384 = ["dep:p384", "ecdsa"]
p521 = ["dep:p521", "ecdsa"]
rsa = ["dep:bigint", "dep:rsa", "alloc", "rand_core"]
tdes = ["cipher/tdes", "encryption"]

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]