Problem
dash-evo-tool's wallet_backend test suite drives real end-to-end flows against platform_wallet_storage::secrets::SecretStore (set/get/set_secret/get_secret/reprotect — see packages/rs-platform-wallet-storage/src/secrets/store.rs). These are the only public entry points; all of them derive keys via Argon2::default() at the real production strength (64 MiB memory cost). There is no public way for a downstream crate to inject faster KDF parameters for testing.
rs-platform-wallet-storage's own test suite already has this capability internally — crate::secrets::file::crypto::KdfParams plus a pub(crate) floor() helper and envelope::wrap_with_params(..., floor()) (see store.rs around the "Argon2id floor params — fast enough for these tests" comment) — but it is not exposed outside the crate.
Impact
In dash-evo-tool, ~55 tests across wallet_backend::{secret_access, identity_key_store, single_key, det_signer, hydration, secret_seam, wallet_seed_store} each pay one or more real Argon2id derivations. Individually 5-23s each; some tests do multiple derivations (password change, wrong-password retry, tier migration) and run 15-23s. These tests correctly exercise real crypto-shaped behavior (wrong password, tier migration, isolation) but the KDF cost is orthogonal to what they're actually asserting.
Request
Expose a public, feature-gated (e.g. #[cfg(any(test, feature = "test-util"))]) constructor or builder on SecretStore (or the envelope/wrap layer) that accepts injectable KdfParams, mirroring the existing internal floor() test helper. This lets downstream integration-test suites opt into fast KDF params without touching the production default-strength path.
Context
Surfaced while auditing dash-evo-tool test suite timing on feat/v1.0-parity-batch (stacked on #882). Filed by request as a tracked follow-up rather than blocking that PR — the affected DET tests will be marked #[ignore] referencing this issue until it lands.
Problem
dash-evo-tool'swallet_backendtest suite drives real end-to-end flows againstplatform_wallet_storage::secrets::SecretStore(set/get/set_secret/get_secret/reprotect— seepackages/rs-platform-wallet-storage/src/secrets/store.rs). These are the only public entry points; all of them derive keys viaArgon2::default()at the real production strength (64 MiB memory cost). There is no public way for a downstream crate to inject faster KDF parameters for testing.rs-platform-wallet-storage's own test suite already has this capability internally —crate::secrets::file::crypto::KdfParamsplus apub(crate)floor()helper andenvelope::wrap_with_params(..., floor())(seestore.rsaround the "Argon2id floor params — fast enough for these tests" comment) — but it is not exposed outside the crate.Impact
In
dash-evo-tool, ~55 tests acrosswallet_backend::{secret_access, identity_key_store, single_key, det_signer, hydration, secret_seam, wallet_seed_store}each pay one or more real Argon2id derivations. Individually 5-23s each; some tests do multiple derivations (password change, wrong-password retry, tier migration) and run 15-23s. These tests correctly exercise real crypto-shaped behavior (wrong password, tier migration, isolation) but the KDF cost is orthogonal to what they're actually asserting.Request
Expose a public, feature-gated (e.g.
#[cfg(any(test, feature = "test-util"))]) constructor or builder onSecretStore(or the envelope/wrap layer) that accepts injectableKdfParams, mirroring the existing internalfloor()test helper. This lets downstream integration-test suites opt into fast KDF params without touching the production default-strength path.Context
Surfaced while auditing
dash-evo-tooltest suite timing onfeat/v1.0-parity-batch(stacked on #882). Filed by request as a tracked follow-up rather than blocking that PR — the affected DET tests will be marked#[ignore]referencing this issue until it lands.