Skip to content

mobile: pin Krusty KMS 0.14.0, and move the extension with it - #803

Draft
Ryun1 wants to merge 1 commit into
feature/mobile-walletfrom
mobile/krusty-0.14
Draft

Ryun1 wants to merge 1 commit into
feature/mobile-walletfrom
mobile/krusty-0.14

Conversation

@Ryun1

@Ryun1 Ryun1 commented Oct 29, 2026

Copy link
Copy Markdown
Collaborator

Why

Mobile and the extension both pinned Krusty 0.11.0; latest is 0.14.0. The two must pin the same release (tests/conformance/mobile-generated.test.ts compares the Cargo pin to the npm pin), so both move together.

What

  • mobile/core/Cargo.toml + Cargo.lock: krusty-kms, krusty-kms-common =0.14.0; bip39 =3.0.0 (Krusty's copy, so one word list instead of two). Transitives: starknet-rust 0.19.1 → 0.20.x, crypto-bigint 0.7.10, ctutils 0.4.7; rand and hmac drop out.
  • package.json / bun.lock / scripts/config-standards-policy.ts: @starknetfoundation/krusty-kms-wasm 0.14.0.
  • scripts/check-krusty-adapter.ts: new runtime digests for krusty_kms_wasm.js / _bg.wasm; version strings in the provenance test, lib.rs krusty_version, SCOPE.md and the mobile workflow briefing.

Krusty 0.11 → 0.14 (from the upstream changelog)

  • 0.12.0: account-class registry (getAccountClassRegistry, inspectAccountDeployment, deriveArgentAccountAddressWithGuardian), Braavos v1.0.0 base + v1.1.0/v1.2.0 impl classes, Argent v0.5.0; calculate_contract_address reduced mod 2^251 - 256; getAccountClassHashes() adds Braavos/Argent keys and drops the duplicate argent_legacy 0.2.0 key. Neither the core nor the adapter reads those keys by name.
  • 0.12.1: WASM keypair types zeroize on drop.
  • 0.13.0: rand → getrandom::fill; starknet-rust 0.20; WASM randomFelt throws instead of panicking.
  • 0.14.0: V3 tip pinned on client/gateway-signed txs (not used here; the core and extension hash and sign their own invokes); RUSTSEC-2026-0381..0387 cleared in the lockfile.

No API the core (sign_stark_hash, derive_*, calculate_contract_address, nostr wrap/open, ChainId) or the WASM adapter calls changed shape.

Verification

  • cargo check --tests and cargo test --no-fail-fast in mobile/core: 289 pass, 6 fail. All 6 (accounts_parity::discovery_rows_are_worded_like_the_extension, 4× history_parity, privacy_parity::every_judged_reply_reaches_the_extension_outcome) fail identically on feature/mobile-wallet without this change.
  • bun run check:krusty (known-answer + Nostr round-trip through the real 0.14.0 adapter): pass.
  • bun run test: 3299 pass, 0 fail. check:types, check:lint, check:copy, check:imports, check:cycles, check:deadcode, check:extension: pass.
  • Pre-existing on the base, unrelated to this PR: check:files (a 559-line parity fixture over the 500 limit) and one @bramble/terminal swap-route smoke test in check:workspaces.
  • check:argent / check:privacy not run locally (no vendored outputs in this worktree).

Note: main stays on 0.11.0 until this lands via #450 or is cherry-picked separately.

The mobile core and the extension must pin the same Krusty release
(tests/conformance/mobile-generated.test.ts), so both move from 0.11.0 to
0.14.0 together: the krusty-kms crates in mobile/core and
@starknetfoundation/krusty-kms-wasm in the extension, with the adapter
gate's runtime digests and the provenance test updated to the new tarball.

0.12 adds the account-class registry, Braavos v1.0.0/v1.1.0/v1.2.0 and
Argent v0.5.0 classes, and reduces calculate_contract_address modulo
2^251 - 256 as the sequencer does. 0.13 drops rand for getrandom::fill
and moves to starknet-rust 0.20. 0.14 pins the V3 tip on signed
transactions and clears RUSTSEC-2026-0381..0387 in the lockfile.
None of these change an API the core or the adapter calls.

bip39 follows Krusty to 3.0.0 so the core carries one copy of the
word list instead of two.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant