age 0.10.0

[BETA] A simple, secure, and modern encryption library.
Documentation
[package]
name = "age"
description = "[BETA] A simple, secure, and modern encryption library."
version = "0.10.0"
authors.workspace = true
repository.workspace = true
readme = "README.md"
keywords = ["rage", "encryption"]
categories = ["cryptography"]
license.workspace = true
edition.workspace = true
rust-version.workspace = true

[badges]
maintenance = { status = "experimental" }

[dependencies]
age-core.workspace = true

# Dependencies exposed in a public API:
# (Breaking upgrades to these require a breaking upgrade to this crate.)
base64.workspace = true
chacha20poly1305.workspace = true
hmac.workspace = true
i18n-embed.workspace = true
rand.workspace = true

# OpenSSH-specific dependencies:
# - RSAES-OAEP from RFC 8017 with SHA-256 and MGF1
rsa = { version = "0.9", default-features = false, optional = true }

# - Conversion of public keys from Ed25519 to X25519
curve25519-dalek = { version = "4", optional = true }

# Async I/O
futures = { version = "0.3", optional = true }
pin-project = "1"

# Common CLI dependencies
pinentry = { version = "0.5", optional = true }

# Dependencies used internally:
# (Breaking upgrades to these are usually backwards-compatible, but check MSRVs.)
bech32.workspace = true
cookie-factory.workspace = true
i18n-embed-fl.workspace = true
lazy_static.workspace = true
nom.workspace = true
rust-embed.workspace = true
scrypt.workspace = true
sha2.workspace = true
subtle.workspace = true
x25519-dalek.workspace = true
zeroize.workspace = true

# OpenSSH-specific dependencies:
# - RSAES-OAEP from RFC 8017 with SHA-256 and MGF1
num-traits = { version = "0.2", optional = true }

# - Encrypted keys
aes = { version = "0.8", optional = true }
aes-gcm = { version = "0.10", optional = true }
bcrypt-pbkdf = { version = "0.10", optional = true }
cbc = { version = "0.1", optional = true }
cipher = { version = "0.4.3", features = ["alloc"], optional = true }
ctr = { version = "0.9", optional = true }

# scrypt Performance timer
web-sys = { version = "0.3", optional = true, features = ["Window", "Performance"]}

# Async I/O
memchr = { version = "2.5", optional = true }

# Common CLI dependencies
console = { version = "0.15", optional = true, default-features = false }
is-terminal = { version = "0.4", optional = true }
rpassword = { version = "7", optional = true }

[target.'cfg(any(unix, windows))'.dependencies]
# Plugin management
which = { version = "4", optional = true }
wsl = { version = "0.1", optional = true }

[dev-dependencies]
criterion = "0.5"
futures-test = "0.3"
hex = "0.4"
i18n-embed = { workspace = true, features = ["desktop-requester"] }
proptest = "1"
test-case = "3"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }

[target.'cfg(unix)'.dev-dependencies]
pprof = { version = "0.13", features = ["criterion", "flamegraph"] }

[target.'cfg(any(target_arch = "x86", target_arch = "x86_64"))'.dev-dependencies]
criterion-cycles-per-byte = "0.6"

[features]
default = []
armor = []
async = ["futures", "memchr"]
cli-common = ["console", "is-terminal", "pinentry", "rpassword"]
plugin = ["age-core/plugin", "which", "wsl"]
ssh = [
    "aes",
    "aes-gcm",
    "bcrypt-pbkdf",
    "cbc",
    "cipher",
    "ctr",
    "curve25519-dalek",
    "num-traits",
    "rsa",
]
unstable = ["age-core/unstable"]

[lib]
bench = false

[[test]]
name = "test_vectors"
required-features = ["ssh"]

[[test]]
name = "testkit"
required-features = ["armor", "async"]

[[bench]]
name = "parser"
harness = false

[[bench]]
name = "throughput"
harness = false

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