Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
141 commits
Select commit Hold shift + click to select a range
83f7d4f
feat(platform-wallet): seedless watch-only rehydration via load_from_…
lklimek Jun 29, 2026
2f2a74a
feat(platform-wallet-storage): seedless load() + rehydration readers …
lklimek Jun 29, 2026
35bd291
refactor(platform-wallet): drop backward-compat on_platform_event; co…
lklimek Jun 29, 2026
a5b7032
docs(platform-wallet): point seedless-load notes at the resolver wron…
lklimek Jun 29, 2026
22ff11c
perf(platform-wallet): O(n) UTXO spent-filter on rehydrate via outpoi…
lklimek Jun 29, 2026
2e71027
fix(platform-wallet)!: restore persisted address-pool used-state on r…
lklimek Jun 29, 2026
8832f6f
fix(platform-wallet): idempotent repeat restore — skip already-presen…
lklimek Jun 29, 2026
2c6e3e8
fix(platform-wallet-ffi): skip corrupt wallet on load instead of abor…
lklimek Jun 29, 2026
3876d0e
refactor(platform-wallet): mark unreleased #3692 load enums non_exhau…
lklimek Jun 29, 2026
1f8d6b6
test(platform-wallet): cover used-state-survives-spent-UTXO + deep-in…
lklimek Jun 29, 2026
f60160e
test(platform-wallet): drop duplicate deep-index rehydration test (#3…
lklimek Jun 29, 2026
8d88d49
refactor(platform-wallet): drop vestigial PlatformEvent enum (#3692 r…
lklimek Jun 29, 2026
d08abc2
fix(platform-wallet-storage): widen account-registration PK with disc…
lklimek Jun 29, 2026
9c41458
fix(platform-wallet-storage): reject restore_from onto an in-process …
lklimek Jun 29, 2026
d257320
fix(platform-wallet-storage): cross-check identity_keys decoded ids a…
lklimek Jun 29, 2026
8e7fd66
fix(platform-wallet-storage): scope identities upsert overwrite to th…
lklimek Jun 29, 2026
6365be7
fix(platform-wallet-storage): restore used_core_addresses from core_u…
lklimek Jun 29, 2026
163656f
fix(platform-wallet)!: return typed errors from the #3692 stubs inste…
lklimek Jun 29, 2026
d00d59b
fix(platform-wallet-storage): rollback-safe restore ordering + keep_l…
lklimek Jun 29, 2026
f3ca134
fix(platform-wallet-storage): reject a foreign SQLite DB at open + co…
lklimek Jun 29, 2026
7ae801b
fix(platform-wallet-storage): reader cross-checks + decode hardening …
lklimek Jun 29, 2026
c9a2683
fix(platform-wallet-storage): reject embedded-NUL kv keys (#3968 review)
lklimek Jun 29, 2026
1a9a17e
docs(platform-wallet-storage): re-sync changeset doc, correct cascade…
lklimek Jun 29, 2026
f4ac7f5
fix(platform-wallet-storage): secrets hardening — atomic reprotect, s…
lklimek Jun 29, 2026
860ea7f
fix(platform-wallet-storage): surface unconfirmed vault-write durabil…
lklimek Jun 29, 2026
b304268
fix(platform-wallet): restore background-sync generation guard droppe…
lklimek Jun 30, 2026
664c6bf
fix(platform-wallet): count skipped rows in ClientStartState::is_empt…
lklimek Jun 30, 2026
61c9fd7
fix(platform-wallet-ffi): surface MalformedXpub skip code for bad acc…
lklimek Jun 30, 2026
08b2884
fix(platform-wallet-storage): require full ChainLock consumption in m…
lklimek Jun 30, 2026
73df060
fix(platform-wallet-storage): pre-read BLOB size-gate on rehydration …
lklimek Jun 30, 2026
1454394
fix(platform-wallet-storage): DRY blob size-gate helper + close remai…
lklimek Jun 30, 2026
6ba6d4a
fix(platform-wallet-storage): SQLITE_LIMIT_LENGTH global blob floor +…
lklimek Jun 30, 2026
53b7d26
chore(platform-wallet-storage): compile-time assert SQLITE_MAX_BLOB_B…
lklimek Jun 30, 2026
58aac14
Merge v4.1-dev into feat/platform-wallet-storage-rehydration
lklimek Jul 1, 2026
2ab0bed
Merge v4.1-dev into feat/platform-wallet-rehydration
lklimek Jul 1, 2026
ef7cdf2
chore(deps): bump rust-dashcore to dev head 78d10022
lklimek Jul 1, 2026
27d235f
fix(dpp): implement extended_public_key on shielded FixedKeySigner te…
lklimek Jul 1, 2026
36e2fed
chore(deps): bump rust-dashcore to PR #833 (Zeroize for ExtendedPrivKey)
lklimek Jul 1, 2026
3be6885
refactor(rs-sdk-ffi): wrap ExtendedPrivKey in Zeroizing, drop manual …
lklimek Jul 1, 2026
b175d50
refactor(rs-sdk-ffi): confine ExtendedPrivKey to resolve_and_derive v…
lklimek Jul 1, 2026
5a2b2b5
test(rs-sdk-ffi): make extended_public_key metadata asserts load-bear…
lklimek Jul 1, 2026
56612fd
chore(deps): bump rust-dashcore to a8c57fe (drop Copy, zeroize Extend…
lklimek Jul 1, 2026
374df98
refactor(rs-sdk-ffi): rely on ExtendedPrivKey Drop, drop redundant Ze…
lklimek Jul 1, 2026
35e5c46
Merge remote-tracking branch 'origin/v4.1-dev' into chore/bump-rust-d…
lklimek Jul 2, 2026
71678ad
Merge branch 'v4.1-dev' into feat/platform-wallet-storage-rehydration
lklimek Jul 2, 2026
1aac44a
fix(deps): stage regenerated Cargo.lock for rust-dashcore a8a0968 bump
lklimek Jul 2, 2026
defa249
build: sync Cargo.lock to rust-dashcore a8a0968 (0.45.0)
lklimek Jul 2, 2026
f669691
docs(rs-sdk-ffi): correct ExtendedPrivKey zeroization comments for a8…
lklimek Jul 2, 2026
43b57af
Merge commit 'f669691f7a22f50f4fab7a056036a53ebf781b9b' into chore/bu…
lklimek Jul 2, 2026
5dfd441
fix(deps): bump quinn-proto 0.11.14 -> 0.11.15 (RUSTSEC-2026-0185)
lklimek Jul 2, 2026
0feb7d6
docs(platform-wallet): fix dead doc-links and stale references in reh…
lklimek Jul 2, 2026
59dc04d
fix(platform-wallet-ffi): harden load-outcome FFI surface (findings #…
lklimek Jul 2, 2026
cd6807a
docs(platform-wallet): fix dead MnemonicResolverHandle doc-link in lo…
lklimek Jul 2, 2026
a9d3a76
refactor(platform-wallet-ffi): typed corrupt-kind discriminator + hon…
lklimek Jul 2, 2026
284a3aa
fix(platform-wallet): harden watch-only rehydration guards + document…
lklimek Jul 2, 2026
ee717c8
Merge branch 'fix/3692-b' into fix/3692-consolidated
lklimek Jul 2, 2026
037c7d2
Merge branch 'fix/3692-c' into fix/3692-consolidated
lklimek Jul 2, 2026
f73e40a
Merge branch 'fix/3692-d' into fix/3692-consolidated
lklimek Jul 2, 2026
127c565
Merge branch 'fix/3692-e' into fix/3692-consolidated
lklimek Jul 2, 2026
0b53866
docs(platform-wallet): document manifest-authentication trust boundar…
lklimek Jul 2, 2026
c6d58f0
Merge branch 'v4.1-dev' into feat/platform-wallet-rehydration
lklimek Jul 2, 2026
12979b5
Merge remote-tracking branch 'origin/feat/platform-wallet-rehydration…
lklimek Jul 2, 2026
3a791c2
merge: #3976 Signer::extended_public_key (rs-sdk-ffi) into #3692
lklimek Jul 2, 2026
9dbca2f
fix(platform-wallet): update CoinJoin pool-topology test for key-wall…
lklimek Jul 2, 2026
fa6a031
merge: catch up with #3692's latest (rust-dashcore 0.45 bump + CoinJo…
lklimek Jul 2, 2026
7a2e06e
fix(platform-wallet): preserve persisted wallet state through seedles…
QuantumExplorer Jul 2, 2026
5460c0e
fix(platform-wallet): snapshot identity cross-check + typed persister…
Claudius-Maginificent Jul 2, 2026
0205123
Merge branch 'feat/platform-wallet-rehydration' into feat/platform-wa…
lklimek Jul 3, 2026
8bcb192
Apply suggestions from code review
lklimek Jul 3, 2026
87f4b42
refactor(platform-wallet)!: require core_wallet_info, drop keyless-pr…
lklimek Jul 3, 2026
f36e191
refactor(platform-wallet): drop obsolete non-default-account warn com…
lklimek Jul 3, 2026
ed5fb78
feat(platform-wallet)!: 3-state LoadOutcome, report already-registere…
lklimek Jul 3, 2026
f8504f6
docs(platform-wallet): reframe manifest trust boundary, detail the at…
lklimek Jul 3, 2026
157410a
fix(platform-wallet-ffi): xpub-error classification, overflow guard, …
lklimek Jul 3, 2026
f4ab467
test(platform-wallet): rollback, empty-first-run, and concurrency reg…
lklimek Jul 3, 2026
60d48f6
merge: #3692 triage fix batch (7 waves) into feat/platform-wallet-reh…
lklimek Jul 3, 2026
14d83af
Merge remote-tracking branch 'origin/v4.1-dev' into feat/platform-wal…
lklimek Jul 3, 2026
e65c123
test(platform-wallet-ffi): cover slice_from_raw guard and end-to-end …
lklimek Jul 3, 2026
518c8d1
refactor(platform-wallet): drop latent LoadIncomplete conversion and …
lklimek Jul 3, 2026
3abc385
refactor(platform-wallet): make manager::rehydrate module private
lklimek Jul 3, 2026
f8c9722
merge: QA follow-up fixes for #3692 (test coverage, dead-code cleanup…
lklimek Jul 3, 2026
83d9eff
fix(dpp): drop stale extended_public_key impls broken by rust-dashcor…
lklimek Jul 3, 2026
df6955e
merge: reconcile #3692 with v4.1-dev; preserve ignored/unignored on r…
lklimek Jul 6, 2026
7246946
feat(platform-wallet): add IdentityManagerStartState::merge_contacts_…
lklimek Jul 6, 2026
46f765c
feat(platform-wallet-storage): pre-key identities in SQLite load()
lklimek Jul 6, 2026
3b3b3eb
test(platform-wallet-storage): assert pre-keyed rehydration on Manage…
lklimek Jul 6, 2026
960228e
docs(platform-wallet): trim merge_contacts_and_keys rustdoc
lklimek Jul 6, 2026
0af850a
refactor(platform-wallet): drop dead identity_keys/contacts from Clie…
lklimek Jul 6, 2026
19570ad
Merge remote-tracking branch 'origin/v4.1-dev' into claudius/pr3692-f…
lklimek Jul 6, 2026
cf33f83
fix(platform-wallet-storage): cross-check inner public_key.id() in id…
lklimek Jul 6, 2026
29a3853
docs(platform-wallet): correct apply_contacts_and_keys + FFI build co…
lklimek Jul 6, 2026
d6b789e
docs(platform-wallet-ffi): mark missing end-to-end build_wallet_ident…
lklimek Jul 6, 2026
adec4b7
docs(platform-wallet-ffi): enrich build_wallet_identity_bucket TODO w…
lklimek Jul 6, 2026
a814932
fix(platform-wallet): fund asset-lock test fixtures via confirmed UTX…
lklimek Jul 6, 2026
6436891
Merge commit 'a814932d97' into claudius/pr3692-field-cleanup
lklimek Jul 6, 2026
269449b
Merge #3692 tip (d6b789e865) into #3968 prekeyed-join branch
lklimek Jul 6, 2026
df080ff
Merge commit '6436891518' into claudius/pr3968-prekeyed-join
lklimek Jul 6, 2026
04b93e4
docs(platform-wallet-storage): correct empty-manifest branch comment
lklimek Jul 6, 2026
1a332ad
feat(platform-wallet): snapshot readers + unified V002 schema migrati…
Claudius-Maginificent Jul 6, 2026
4624cec
fix(platform-wallet-storage): DashPay pool PK collision + V002 migrat…
lklimek Jul 6, 2026
05bc921
docs(platform-wallet-storage): mark wallet-row-orphaning as an open p…
lklimek Jul 6, 2026
36d84b6
test(platform-wallet-storage): rewrite pool_reader used-set tests aga…
lklimek Jul 6, 2026
1fa145a
test(platform-wallet-storage): rewrite migration_execution used-set t…
lklimek Jul 6, 2026
d7c6846
Merge branch 'v4.1-dev' into feat/platform-wallet-rehydration
lklimek Jul 6, 2026
f4c2218
Merge branch 'feat/platform-wallet-rehydration' into feat/platform-wa…
lklimek Jul 6, 2026
cec6d3b
Merge remote-tracking branch 'origin/v4.1-dev' into feat/platform-wal…
lklimek Jul 7, 2026
e9e98cc
feat(platform-wallet): deliver typed AddressNonceMismatch error to ca…
lklimek Jul 7, 2026
650c32a
fix(platform-wallet-ffi): deliver AddressNonceMismatch across FFI + r…
lklimek Jul 7, 2026
069ee6a
fix(swift-sdk): mirror ErrorAddressNonceMismatch (=21); pin FFI nonce…
lklimek Jul 7, 2026
6103ab6
Merge branch 'v4.1-dev' into feat/platform-wallet-rehydration
lklimek Jul 7, 2026
062caea
chore(deps): bump rust-dashcore pin to key-wallet asset-lock override…
lklimek Jul 7, 2026
a985d23
chore(deps): switch rust-dashcore pin from PR #850 to PR #851
lklimek Jul 8, 2026
d9ee8d5
Merge branch 'feat/platform-wallet-rehydration' into feat/platform-wa…
lklimek Jul 8, 2026
b70062b
test(swift-sdk): replace removed sendToAddresses with builder+broadcast
lklimek Jul 8, 2026
dc77493
fix(swift-sdk): stop funding core-to-core sends from a Platform-Payme…
lklimek Jul 8, 2026
eb3c7ae
fix(platform-wallet-ffi): surface persister-load retry class across t…
lklimek Jul 8, 2026
ccc95e3
Merge remote-tracking branch 'origin/v4.1-dev' into feat/platform-wal…
lklimek Jul 8, 2026
c8c6a93
refactor(platform-wallet): apply PR #3692 self-review notes
lklimek Jul 8, 2026
f8ee551
Merge branch 'v4.1-dev' into feat/platform-wallet-rehydration
lklimek Jul 8, 2026
eacc851
Merge remote-tracking branch 'origin/feat/platform-wallet-rehydration…
lklimek Jul 8, 2026
0503f80
refactor: move persistance to platform wallet storage - human work
lklimek Jul 8, 2026
ee8390b
Merge branch 'v4.1-dev' into feat/platform-wallet-storage-rehydration
lklimek Jul 9, 2026
4e8a122
fix(platform-wallet-storage): pre-materialization size gate on outpoi…
lklimek Jul 9, 2026
a9c500f
style(platform-wallet-storage): fix doc_lazy_continuation in rehydrat…
lklimek Jul 9, 2026
f503797
fix(platform-wallet-storage): move RUSTSEC-2025-0141 ack to root audi…
lklimek Jul 9, 2026
fa9f337
Merge remote-tracking branch 'origin/v4.1-dev' into feat/platform-wal…
lklimek Jul 9, 2026
4ce099e
style(platform-wallet-storage): satisfy rustfmt in error.rs + wallet.…
lklimek Jul 9, 2026
3629884
fix(platform-wallet-storage): compile rehydration-apply test target
lklimek Jul 9, 2026
dd39ce5
docs(platform-wallet-storage): correct stale rehydration docs post-move
lklimek Jul 9, 2026
79e20d2
fix(swift-sdk): reconcile PlatformWallet load FFI to shipped 1-arg co…
lklimek Jul 9, 2026
47a45f0
test(platform-wallet-storage): sync prepare_cached allow-list to gate…
lklimek Jul 9, 2026
258b184
docs(platform-wallet-storage): correct stale core-attribution rehydra…
lklimek Jul 9, 2026
b68c5a8
docs(platform-wallet-storage): correct empty-manifest rehydration com…
lklimek Jul 9, 2026
8ec2ea3
ci(swift-sdk): tolerate runner with no user default keychain in run_t…
lklimek Jul 9, 2026
728f480
fix(platform-wallet): restore From<PersistenceError> for PlatformWall…
lklimek Jul 9, 2026
a503bd7
ci: accept platform-wallet-storage as a conventional-commit scope
lklimek Jul 9, 2026
2045a36
Merge remote-tracking branch 'origin/v4.1-dev' into feat/platform-wal…
lklimek Jul 9, 2026
f2779ca
chore(deps): bump rust-dashcore pin to #851 head; fix importWallet bi…
lklimek Jul 9, 2026
95d28a6
fix(platform-wallet-storage): route restored UTXOs to their true owni…
lklimek Jul 9, 2026
5283236
fix(platform-wallet-storage): warn on orphaned UTXO owner; add end-to…
lklimek Jul 9, 2026
7cdaa65
fix(platform-wallet-storage): route restored used addresses to their …
lklimek Jul 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 29 additions & 2 deletions .cargo/audit.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,30 @@
[advisories]
# TODO Remove it from here
ignore = [ "RUSTSEC-2020-0071"] # advisory IDs to ignore e.g. ["RUSTSEC-2019-0001", ...]
# Advisory IDs to ignore, e.g. ["RUSTSEC-2019-0001", ...]. Each entry
# must point at a live advisory in the resolved graph and carry a dated
# rationale; an entry matching nothing trains reviewers to skim the list.
#
# rustsec/audit-check runs from the repo root (.github/workflows/security-audit-rust.yml)
# and only reads THIS file — a crate-local .cargo/audit.toml is never consulted by CI.
ignore = [
# RUSTSEC-2025-0141 — bincode is unmaintained (informational advisory,
# not an exploitable CVE; published 2025-12-16, no patched release).
# Acknowledged 2026-06-08.
#
# Why this is acceptable for now:
# - bincode 2.0.1 is the BLOB-codec trust boundary for every
# persisted column and backup in rs-platform-wallet-storage. The
# known risk class for an unmaintained deserializer is unbounded
# allocation (OOM) on a crafted/corrupt input.
# - In-crate size bounds defang that class: MAX_VALUE_LEN /
# BLOB_SIZE_LIMIT_BYTES (kv/blob), the per-secret SecretTooLarge
# write cap, and the MAX_VAULT_SIZE_BYTES read ceiling all reject
# oversized inputs before bincode ever allocates from them.
# - load() is fail-hard: a malformed/over-large row aborts the call
# with a typed error rather than silently over-allocating.
#
# Residual risk: a future bincode defect would go unpatched upstream.
# Remediation plan: migrate the BLOB codec to a maintained equivalent
# (postcard / bitcode candidates) once the wire format is frozen at
# release; revisit this ignore at that time.
"RUSTSEC-2025-0141",
]
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -103,3 +103,6 @@ __pycache__/

# Security audit reports (local-only, not committed)
audits/

# Review scratch (grumpy-review / triage output, local-only)
.review-*/
48 changes: 25 additions & 23 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 11 additions & 8 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,17 @@ members = [
]

[workspace.dependencies]
dashcore = { git = "https://github.com/dashpay/rust-dashcore", rev = "647fa9820f3614090e4e5f5f2b709961d68e538b" }
dash-network-seeds = { git = "https://github.com/dashpay/rust-dashcore", rev = "647fa9820f3614090e4e5f5f2b709961d68e538b" }
dash-spv = { git = "https://github.com/dashpay/rust-dashcore", rev = "647fa9820f3614090e4e5f5f2b709961d68e538b" }
key-wallet = { git = "https://github.com/dashpay/rust-dashcore", rev = "647fa9820f3614090e4e5f5f2b709961d68e538b" }
key-wallet-ffi = { git = "https://github.com/dashpay/rust-dashcore", rev = "647fa9820f3614090e4e5f5f2b709961d68e538b" }
key-wallet-manager = { git = "https://github.com/dashpay/rust-dashcore", rev = "647fa9820f3614090e4e5f5f2b709961d68e538b" }
dash-network = { git = "https://github.com/dashpay/rust-dashcore", rev = "647fa9820f3614090e4e5f5f2b709961d68e538b" }
dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore", rev = "647fa9820f3614090e4e5f5f2b709961d68e538b" }
# TODO(pin): tracks dashpay/rust-dashcore#851 (draft) — key-wallet
# out-of-order UTXO spend fix (#649). Bump to the merged `dev` SHA once
# that PR lands.
dashcore = { git = "https://github.com/dashpay/rust-dashcore", rev = "b3fb82445a3a0ac1a9c1ff6f8c18c7201d08c1e5" }
dash-network-seeds = { git = "https://github.com/dashpay/rust-dashcore", rev = "b3fb82445a3a0ac1a9c1ff6f8c18c7201d08c1e5" }
dash-spv = { git = "https://github.com/dashpay/rust-dashcore", rev = "b3fb82445a3a0ac1a9c1ff6f8c18c7201d08c1e5" }
key-wallet = { git = "https://github.com/dashpay/rust-dashcore", rev = "b3fb82445a3a0ac1a9c1ff6f8c18c7201d08c1e5" }
key-wallet-ffi = { git = "https://github.com/dashpay/rust-dashcore", rev = "b3fb82445a3a0ac1a9c1ff6f8c18c7201d08c1e5" }
key-wallet-manager = { git = "https://github.com/dashpay/rust-dashcore", rev = "b3fb82445a3a0ac1a9c1ff6f8c18c7201d08c1e5" }
dash-network = { git = "https://github.com/dashpay/rust-dashcore", rev = "b3fb82445a3a0ac1a9c1ff6f8c18c7201d08c1e5" }
dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore", rev = "b3fb82445a3a0ac1a9c1ff6f8c18c7201d08c1e5" }

tokio-metrics = "0.5"

Expand Down
43 changes: 42 additions & 1 deletion packages/rs-platform-wallet-storage/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ rusqlite = { version = "0.38", features = [
"backup",
"blob",
"hooks",
"limits",
"trace",
], optional = true }
refinery = { version = "0.9", default-features = false, features = [
Expand All @@ -61,6 +62,11 @@ chrono = { version = "0.4", default-features = false, features = [
"clock",
], optional = true }
sha2 = { version = "0.10", optional = true }
# Opt-in `JsonSchema` for `SecretString` (gated by `secret-schemars`).
# Reuses the workspace-locked 1.2.1. `default-features = false` drops the
# `derive` feature (we hand-write the impl), matching the crate's existing
# derive-free schemars usage so the lock gains no `schemars_derive` entry.
schemars = { version = "1", optional = true, default-features = false }

# Secret-storage deps (gated by the `secrets` feature). RustSec-clean
# pins (Smythe §7); `aes-gcm` is deliberately omitted. `keyring`'s
Expand All @@ -80,7 +86,14 @@ keyring-core = { version = "=1.0.0", optional = true }
# was removed from the sqlite arm — those tests grep for `fs2`/`fs4`
# literals in this crate's source/manifest and would re-trigger on the
# older crates. `fd-lock` has no such collision.
fd-lock = { version = "4.0.4", optional = true }
# LOCAL-FS ONLY: flock/LockFileEx interlock processes only on local
# filesystems; over NFS/CIFS the lock does not interlock, so a vault file
# must not be shared across hosts — steer multi-host to the OS-keyring arm.
# Exact-pinned (`=`) like the rest of the soundness-critical stack: the
# `VaultLock` unsafe drop-order argument in `secrets/file/mod.rs` is
# calibrated to fd-lock 4.0.4's guard internals; any bump must re-verify
# that the guard releases the OS lock before the backing `RwLock` frees.
fd-lock = { version = "=4.0.4", optional = true }

# CLI deps (gated by the `cli` feature)
clap = { version = "4", features = ["derive"], optional = true }
Expand Down Expand Up @@ -185,6 +198,17 @@ cli = [
# crate without the crypto graph.
secrets = [
"dep:argon2",
# Enable argon2's `zeroize` feature so the KDF wipes its sensitive
# intermediate state (`initial_hash`/`blockhash`) on drop. In argon2
# 0.5.3 this does NOT cover the bulk `Block` matrix — that residual is
# documented at `derive_key` in `secrets/file/crypto.rs`. Keep it in
# the feature list (not a `default-features = false` rewrite) so
# argon2's own default features stay intact.
"argon2/zeroize",
# bincode is the producer for the Tier-2 envelope wire format and the
# three AAD encodings (`Tier2Aad`/`EntryAad`/`VerifyAad`) — see
# `secrets/wire/`. `=2.0.1` is the workspace-wide pin.
"dep:bincode",
"dep:chacha20poly1305",
# secrets uses serde directly (vault format + crypto envelope derive
# `Serialize`/`Deserialize`); declare the dep here so
Expand All @@ -204,6 +228,15 @@ secrets = [
"dep:apple-native-keyring-store",
"dep:windows-native-keyring-store",
]
# Opt-in `SecretString` serde/schemars impls. Deliberately DEFAULT-OFF
# even though `secrets` (and, via it, the `serde` dep) are default-on:
# these gate the IMPLS, not the dep, so the impls are absent unless a
# consumer explicitly opts in. `secret-serde` requires `secrets` (the type
# only exists under it). NO `Serialize` is ever provided. `secret-schemars`
# implies `secret-serde`. (design §5.4 / GAP-001 names / GAP-002 satisfiable
# default-off.)
secret-serde = ["secrets", "dep:serde"]
secret-schemars = ["secret-serde", "dep:schemars"]
# Per-object-type key/value metadata API
# (`platform_wallet_storage::{KvStore, KvError, ObjectId}`) plus the
# SQLite-backed impl. Requires `sqlite` because the only shipped backend
Expand All @@ -217,3 +250,11 @@ kv = ["sqlite"]
# convention for "MUST NOT enable from downstream" features
# (https://doc.rust-lang.org/cargo/reference/features.html#feature-resolver-version-2).
__test-helpers = ["sqlite"]
# e2e tests that drive the #3692 manager-apply path; enabled in the integrated stack (dash-evo-tool).
rehydration-apply = []
# Pass-through to `platform-wallet/shielded` so the feature-gated
# `PlatformWalletChangeSet::shielded` field is visible to the exhaustive
# `versions::touched_domains` destructure (the R8 forgotten-domain guard).
# Storage persists no shielded state itself; this only aligns visibility so
# an added always-on field stays a compile error.
shielded = ["platform-wallet/shielded"]
Loading
Loading