[package]
name = "sigilo"
version = "0.1.2"
edition = "2024"
rust-version = "1.85.0"
description = "SSH agent backed by Bitwarden Secrets Manager with per-use biometric authorization"
license = "MIT"
repository = "https://github.com/7a6163/sigilo"
readme = "README.md"
keywords = ["ssh", "ssh-agent", "bitwarden", "vaultwarden", "touch-id"]
categories = ["command-line-utilities", "authentication", "cryptography"]

[dependencies]
clap = { version = "4.5", features = ["derive"] }
tokio = { version = "1.50", features = ["rt-multi-thread", "macros", "signal", "net"] }
anyhow = "1.0"
serde = { version = "1.0", features = ["derive"] }
serde_yaml = "0.9"
async-trait = "0.1"
uuid = { version = "1", features = ["serde"] }
dirs = "6.0"
libc = "0.2"

reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }  # M1: BWS REST (no SDK)
serde_json = "1.0"                                                                           # M1: BWS response payloads
# M1: BWS crypto — EncString (AES-256-CBC + HMAC-SHA256) + access-token key derivation
aes = "0.8"
cbc = { version = "0.1", features = ["alloc", "block-padding"] }
hmac = "0.12"
sha2 = "0.10"
hkdf = "0.12"
base64 = "0.22"
# M2.5: Vaultwarden master-key KDF (feature sets mirror the official SDK's)
pbkdf2 = { version = "0.12", default-features = false }
argon2 = { version = "0.5", default-features = false, features = ["alloc"] }
ssh-agent-lib = "0.6"                                                                        # M1: agent protocol
ssh-key = { version = "0.6", features = ["std", "ed25519"] }                                 # M1: key ops (ed25519-first)
signature = "=2.2.0"                                                                         # M1: Signer trait for PrivateKey::try_sign — pinned to ssh-key's version (a v3 split breaks the trait)
robius-authentication = "0.1"                                                                # M0: Touch ID gate (0.2 does not exist; 0.1.1 is latest)
rpassword = "7"                                                                              # setup wizard: hidden master-password prompt
# M2: Vaultwarden credentials in the macOS Keychain. v3 ships no platform
# store by default; apple-native selects the Keychain (security-framework only).
keyring = { version = "3", features = ["apple-native"] }
