Files
proton-sdk-rs/crates/proton-drive-rs/Cargo.toml
T
nvrl 325c326c49 feat(account): hold key passphrases as wiped secrets and report a locked account as KeysLocked
A wrong mailbox password surfaced as InvalidOperation("no active user key could
be unlocked"), which a caller could only recognise by its text. It is now
ProtonError::KeysLocked, and AccountClient::unlock() checks a secret with a
single core/v4/users request instead of loading every address.

Derived passphrases, the mailbox password and the cache encryption key were
plain Vec<u8>s, cloned freely and never wiped. They are Zeroizing now, and the
passphrase map is KeyPassphrases: wiped on drop, redacted in Debug, with
derive_secret() for a client that wants a key only an unlocked account can
reproduce. with_key_passphrases takes it.

Breaking: ProtonError gains a variant, key_passphrases() and
with_key_passphrases() change type, and derive_key_passphrase returns
Zeroizing<Vec<u8>>.
2026-10-07 02:24:51 +02:00

36 lines
917 B
TOML

[package]
name = "proton-drive-rs"
description = "High-level Proton Drive client for Rust"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
authors.workspace = true
keywords.workspace = true
categories.workspace = true
rust-version.workspace = true
readme = "../../README.md"
documentation = "https://docs.rs/proton-drive-rs"
[dependencies]
proton-sdk = { path = "../proton-sdk", version = "0.8.0" }
tokio.workspace = true
reqwest.workspace = true
serde.workspace = true
serde_json.workspace = true
serde_repr.workspace = true
thiserror.workspace = true
async-trait.workspace = true
futures.workspace = true
lru.workspace = true
bytes.workspace = true
base64.workspace = true
getrandom.workspace = true
hex.workspace = true
hmac.workspace = true
sha1.workspace = true
sha2.workspace = true
pgp.workspace = true
tracing.workspace = true