mirror of
https://github.com/storytold/lightcraft.git
synced 2026-11-09 18:10:13 -06:00
dac-net (L0, MIT, written fresh): rustls + RustCrypto, GET/HEAD/POST/PUT/PATCH/DELETE, JSON, streaming multipart with progress, resumable SHA-256-verified downloads, connect/stall timeouts, cancellation, redirects (credentials never cross origins, no https->http), gzip, HTTP proxy (CONNECT), brand User-Agent, per-connection trust (extra CA, pinned fingerprints, trust-on-first-use hook). Tests use in-process servers only. dac-credentials (L0): Secret Service over zbus on Linux/BSD; macOS/Windows return Unsupported (no safe pure-Rust path); Argon2id + XChaCha20-Poly1305 encrypted-file fallback. Secret redacts Debug/Display; tests grep captured logs for secrets. Sources: RFC 9110/9112 (HTTP), RFC 9106 (Argon2), RFC 8439 + XChaCha draft, freedesktop Secret Service API 0.2; own design otherwise. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
27 lines
1018 B
TOML
27 lines
1018 B
TOML
[package]
|
|
name = "dac-credentials"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
description = "Secret storage (L0): the OS keychain where reachable in pure Rust, else a passphrase-encrypted file"
|
|
|
|
[dependencies]
|
|
dac-brand = { workspace = true }
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
# Native only: on wasm32 the crate is empty (the web build stores no credentials).
|
|
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
|
log = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
zeroize = "1"
|
|
getrandom = "0.3"
|
|
argon2 = { version = "0.5", default-features = false, features = ["alloc"] }
|
|
chacha20poly1305 = { version = "0.10", default-features = false, features = ["alloc"] }
|
|
|
|
# Linux and the BSDs: the freedesktop Secret Service over D-Bus, in pure Rust.
|
|
[target.'cfg(all(unix, not(target_os = "macos"), not(target_os = "ios"), not(target_os = "android")))'.dependencies]
|
|
zbus = { version = "5", default-features = false, features = ["blocking-api", "async-io"] }
|