mirror of
https://github.com/narrrl/proton-sdk-rs.git
synced 2026-11-03 16:41:26 +01:00
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>>.
48 lines
1.3 KiB
TOML
48 lines
1.3 KiB
TOML
[package]
|
|
name = "proton-sdk"
|
|
description = "Core Proton account/session/crypto primitives for the Rust Proton SDK"
|
|
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-sdk"
|
|
|
|
[dependencies]
|
|
lru.workspace = true
|
|
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
|
|
bytes.workspace = true
|
|
base64.workspace = true
|
|
hex.workspace = true
|
|
hmac.workspace = true
|
|
sha2.workspace = true
|
|
aes-gcm.workspace = true
|
|
hkdf.workspace = true
|
|
bcrypt.workspace = true
|
|
zeroize.workspace = true
|
|
pgp.workspace = true
|
|
chrono.workspace = true
|
|
tracing.workspace = true
|
|
num-bigint.workspace = true
|
|
num-traits.workspace = true
|
|
getrandom.workspace = true
|
|
rand.workspace = true
|
|
rand_08.workspace = true
|
|
|
|
[dev-dependencies]
|
|
# A one-shot loopback HTTP server backs the telemetry-instrumentation test;
|
|
# the `net` feature isn't needed by the library itself.
|
|
tokio = { workspace = true, features = ["net"] }
|