# Web crypto parity notes

## Proven matching Android (Java / BC 1.79)

| Step | Status |
|------|--------|
| `SHA256(seed\|\|"sarmad-wallet-0") \|\| SHA256(seed\|\|"sarmad-wallet-0-1")` | MATCH |
| Address formula `SRMD + Base58(SHA3-256(pubkey))` | MATCH (same code path) |
| ML-DSA-87 from `sha3_256(fullSeed)` (BC `ml_dsa_87` ↔ `@noble` `ml_dsa87`) | MATCH |

Reference derive vector (see `tools/ParityTool.java` / wallet unit test):

- `deriveExample = 219670a9821bf546d42210d51cee76233fcfebcee05c5e3baf1cdc0a8baa50f97343528c283395b2267c91796c6526d8ef4e10d1a0f2ac350ff39c990f0888a7`

## ML-DSA-87

Android and web both use FIPS 204 **ML-DSA-87** with deterministic keygen from `xi = sha3_256(fullSeed)`.
Same BIP39 phrase → same address on APK and web.

Browser self-check: `runParitySelfCheck()` in `js/wallet_crypto.js`.
