-
Notifications
You must be signed in to change notification settings - Fork 13
fix(backend-e2e): stabilize PR #860 platform-wallet e2e suite + SEC-001 hardening #867
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
lklimek
merged 73 commits into
docs/platform-wallet-migration-design
from
security/secret-handling-hardening
Jun 26, 2026
Merged
Changes from all commits
Commits
Show all changes
73 commits
Select commit
Hold shift + click to select a range
35a4a04
docs(secret-seam): Phase-1 design artifacts (UX disclosure + test cas…
lklimek 9d313b7
feat(wallet-backend): add raw-SecretBytes secret seam + typed errors …
lklimek 890cae1
fix(model): redacting Debug for ClosedSingleKey (T9, 6a2818cd)
lklimek 85e8c4f
feat(model): PrivateKeyData::InVault placeholder + migration probes (T1)
lklimek f1cd234
feat(model,wallet-backend): WalletMeta+ImportedKey sidecar fields, sc…
lklimek 1880461
chore(wallet-backend): satisfy fmt + clippy for the secret-seam batch
lklimek e503bbd
feat(wallet-backend): SecretScope::IdentityKey + seam-first SecretAcc…
lklimek aa3c34d
feat(wallet-backend): identity_key_store + seed/single-key seam-raw w…
lklimek a6c11a7
feat: crash-safe dual-format migration + InVault resolver + vault del…
lklimek aadf532
feat: key_info_screen JIT identity signing + single-key Copy B disclo…
lklimek dd570b8
chore: fmt + clippy for the T3-T8 integration batch
lklimek c155020
fix(wallet-backend): dual-format read for WalletMeta + ImportedKey si…
lklimek 12b34f3
test(identity-db): identity-key migration, deletion, write-fault no-l…
lklimek 99b5926
test(wallet-lifecycle): assert lazy-migration secret post-conditions …
lklimek a727179
test(backend-e2e): TS-SIGN-E2E-01 InVault identity signs + broadcasts…
lklimek 73c189d
refactor(wallet-backend): zeroize migration source, flavor identity-k…
lklimek 66c3204
test(secret-seam): TS-INV-03 audit guard + TS-NOLEAK-02 sidecar no-le…
lklimek 906a2f1
test(kittest): disclosure-banner copy coverage (QA-007/Diziet)
lklimek 551d208
docs: comment hygiene + CLAUDE.md seam pointer + user-story softening…
lklimek 4dabef6
chore: nightly fmt for the QA-findings batch
lklimek 1be4bef
test(backend-e2e): seed Clear key so TS-SIGN-E2E-01 exercises the InV…
lklimek 3cb2d83
Merge remote-tracking branch 'origin/docs/platform-wallet-migration-d…
lklimek bf7d17b
chore(deps): repin platform deps to feat/platform-wallet-secret-prote…
lklimek 01939db
fix(secret): open the vault keyless (file_unprotected) for the Tier-1…
lklimek 972cf7a
feat(secret): add Tier-2 seam capability (protected set/get + scheme …
lklimek fd7f078
feat(secret): adopt Tier-2 per-secret passwords for HD seeds
lklimek 6dafbda
refactor(secret): clean keep-protection replacement of the downgrade …
lklimek 8d17f57
feat(secret): adopt Tier-2 keep-protection for imported single keys
lklimek 465f10d
fix(secret): address Smythe Tier-2 review findings (SEC-001/002/004/005)
lklimek 904dc83
docs(migration): note the wallet.uses_password/password_hint schema i…
lklimek 83414f6
fix(test): eliminate register_wallet_from_seed race in cold-boot test
lklimek 564fe7d
fix(wallet-backend): keep Tier-2 protected wallets visible at cold bo…
lklimek bf435c4
fix(wallet-backend): seal fresh protected single-key imports Tier-2, …
lklimek 0eaa422
docs(secret-seam): correct drifted docs to Tier-2 keep-protection rea…
lklimek ff15f82
feat(wallet-backend): optional per-identity at-rest encryption for id…
lklimek d965ca5
fix(wallet-backend): seal new keys on a protected identity Tier-2, ne…
lklimek fcf6da1
fix(identity): fail closed before broadcast when adding a key to a pr…
lklimek cf8beab
fix(identity): harden SEC-001 identity-key paths (r2 review)
lklimek 2f40b30
docs(single-key): correct has_passphrase on-disk-shape doc to Tier-2-…
lklimek 925bf08
test(dashpay-e2e): use real curve points in tc_045 fixture (QA-008)
lklimek ab658a4
fix(wallet-backend): return WalletNotFound for an unknown seed hash (…
lklimek 338d81a
test(core-e2e): expect SingleKeyWalletsUnsupported in tc_009 (QA-001)
lklimek 25c97b6
fix(identity): compute a meaningful top-up fee after a backend reload…
lklimek 00d21b5
test(spv-e2e): assert restart-in-place reconnect contract (QA-003)
lklimek 3609d44
fix(wallet): gate sends on spendable balance, not confirmed (QA-010)
lklimek 7567087
test(identity-e2e): poll for key visibility after broadcast (QA-004)
lklimek a530367
test(harness): retry transient wallet registration with backoff (QA-013)
lklimek 3150d23
test(wallet-e2e): mark tc_012 address-advance assertion PENDING (QA-005)
lklimek e71e68e
docs(wallet-lifecycle): correct stop_spv rustdoc to restart-in-place …
lklimek 36b6f2b
test(identity-e2e): widen cold-boot funding to clear top-up minimum (…
lklimek cf6497f
test(dashpay-e2e): defer dashpay backend-e2e module pending upstream …
lklimek f2936c0
test(harness): widen funded-wallet SPV-pickup budget to 120s (QA-017)
lklimek a0411a3
fix(identity): fail closed when opt-in protection leaves resident pla…
lklimek dedead2
test(identity): prove the protect fail-closed guard is wired into the…
lklimek a846acd
fix(fee-estimation): fall back to estimate when balance_before is sta…
lklimek a1cb9b4
fix(identity-db): zeroize rollback clone after successful vault migra…
lklimek 3774a7a
fix(error): reword IdentityKeyProtectionIncomplete message (PROJ-002)
lklimek 1b13d43
docs(wallet-lifecycle): correct inline comment to reflect restart-in-…
lklimek ed98fe6
docs(backend-e2e): fix dashpay-deferral TODO — count 12 tests, correc…
lklimek ec4527c
test(backend-e2e): strengthen tc_012 with positive assertion on secon…
lklimek f0608db
docs(harness): replace history narrative with present-state comment (…
lklimek 7918d82
fix(identity): fail-closed the protect guard for legacy Encrypted key…
lklimek 6d460c7
docs(wallet-lifecycle): note dash-spv reinit-window filter-gap (dashp…
lklimek d63ad9f
Merge remote-tracking branch 'origin/docs/platform-wallet-migration-d…
lklimek b98515d
fix(identity): preflight-verify all protected keys before unseal down…
lklimek 2042153
fix(fee): reject partial-stale top-up fee deltas via estimate band
lklimek d78b930
fix(identity): give legacy Encrypted keys an honest recovery instruction
lklimek e97592e
fix(identity): minimize migrated-key plaintext residency before DB write
lklimek 5957c1a
fix(identity): use the active fee estimator for the top-up estimate
lklimek ad8738a
test(wallet): regression for WalletNotFound vs WalletNotLoaded split
lklimek 829c1d3
test(backend-e2e): drop dead single-key funding block, fix stale comment
lklimek aa78ed7
fix(identity): use the active fee estimator for the top-up-from-addre…
lklimek 9218eb5
test(backend-e2e): present-state the TC-009 header comment
lklimek File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🟡 Suggestion: Use the platform-address top-up estimator on the address-funded path
top_up_identity_from_platform_addressescallsestimate_identity_topup(), which is the wallet-funded variant and ignores per-input costs. The model already providesestimate_identity_topup_from_addresses(input_count)(model/fee_estimation.rs:376), which factors inaddress_funding_asset_lock_cost,address_funds_transfer_input_cost * inputs, plus a 20% safety buffer — and the matching UI screen already calls it (src/ui/identities/top_up_identity_screen/by_platform_address.rs:103). Because the backend returnsFeeResult::new(estimated_fee, estimated_fee)from the sameu64, using the wallet-funded estimator can under-report fees for this flow and silently diverges the UI estimate from the backend estimate, especially with >1 input.source: ['codex']