Master into rel latest#9035
Merged
Merged
Conversation
…etAddress verifyMPCWalletAddress already computed the expected address internally and then compared it to a candidate. Extract that derivation half into a reusable deriveMPCWalletAddress() that returns the derived address and the HD path used, and have verifyMPCWalletAddress() delegate to it before comparing. This lets callers produce an MPC wallet address offline (public keys only) using the exact same code path as verification, so derive and verify can never diverge. Behavior of verifyMPCWalletAddress is unchanged. Adds unit coverage for deriveMPCWalletAddress (ed25519 MPCv2, SMC prefix path, secp256k1) including a derive->verify round-trip assertion. WCN-913 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
TICKET: COINS-392
…anced feat: add 'advanced' wallet generation in type
current grpc had the version with vulnerability ref:GHSA-99f4-grh7-6pcq upgrade to fix it Ticket: CSHLD-1028
fix: update package deps to fix vuln
Also adds nock to devDependencies to make the dependency explicit rather than relying on hoisted resolution from other modules. Refs: SI-287 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix: Migrate tcanton:usd1 token to Testnet
…MPCv2 txs Mirror WP's isSignablePreHashed flow so Avalanche atomic cross-chain transactions use SHA-256 signableHex directly instead of re-hashing with keccak256. Co-authored-by: Cursor <cursoragent@cursor.com> TICKET: CECHO-1295
feat(sdk-coin-canton): handle ISO timestamp vs microsecond mismatch in assertDeepCantonMatch
…lidation-recipients fix(sdk-coin-trx): allow TSS TRC20 consolidation when recipients absent
fix(sdk-coin-sui): handle gas coin empty with only address balance
feat: PR from asset-metadata-service for token onboardings
…ve-mpc-wallet-address refactor(sdk-core): extract deriveMPCWalletAddress from verifyMPCWalletAddress
Add a deriveAddress(params) method to the IBaseCoin interface and a default BaseCoin implementation that throws NotImplementedError, so coins can opt in to locally deriving a wallet receive address from a derivation path. This is the inverse of isWalletAddress: instead of checking a candidate address, it produces the address offline from public key material only (xpub triple for BIP32 multisig coins, or commonKeychain for TSS/MPC coins) - no private keys and no network access required. Introduces DeriveAddressOptions and DeriveAddressResult to mirror the existing VerifyAddressOptions / TssVerifyAddressOptions shape. WCN-912 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ss-primitive feat(sdk-core): add deriveAddress primitive to BaseCoin
OFC coins never use keychains for address verification — isWalletAddress always throws MethodNotImplementedError and the check is skipped. Fetching all wallet keys was unnecessary and failed for wallets where a server-managed key at index 1 has no accessible keychain record in the OFC namespace. Fixes WCN-942 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Override BaseCoin.deriveAddress on the Sol coin to locally derive a receive address from the wallet's commonKeychain + index, reusing the shared deriveMPCWalletAddress (ed25519) helper. This is the inverse of isWalletAddress and shares its exact derivation path, so derive and verify can never diverge. Offline and key-material-free (public keys only). Supports the SMC prefix path via derivedFromParentWithSeed. Adds unit coverage including a derive->verify round-trip and an SMC-seed case. WCN-917 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Override BaseCoin.deriveAddress on AbstractEthLikeNewCoins to locally derive a receive address from the wallet's commonKeychain + index for MPC/TSS wallets (wallet versions 3, 5, 6), reusing the shared deriveMPCWalletAddress (secp256k1) helper plus KeyPair.getAddress() — the exact derivation isWalletAddress checks against, so derive and verify can never diverge. Offline and key-material-free (public keys only). Legacy BIP32 forwarder wallets (versions 1, 2, 4) throw a clear error and are handled in a separate ticket. Adds unit coverage (in sdk-coin-eth) asserting exact-match against the existing MPC test vector, a derive->verify round-trip, the forwarder-version guard, and the missing-keychains error. WCN-916 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ddress-skip-kms-key-fetch fix(sdk-core): skip keychain fetch in createAddress for OFC wallets
…llets Override BaseCoin.deriveAddress on AbstractUtxoCoin to locally derive a 2-of-3 multisig receive address from the xpub triple and a chain/index, delegating to the existing generateAddress used by the isWalletAddress verification path, so derive and verify can never diverge. Offline and key-material-free (public keys only). The chain code selects the script type (P2SH, P2WSH/bech32, P2TR) with an optional format override. Adds unit coverage for legacy P2SH (chain 0) and bech32 P2WSH (chain 20): derived address matches generateAddress, plus a derive->verify round-trip. WCN-915 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat: skip forceV1Auth when HMAC present for SSO
…llet feat(sdk-coin-flrp): add createPairedWallet method to Flrp
feat(sdk-core): add pre-hashed signable support for Avalanche txn
fix(sdk-coin-sol): skip checking recipients in case of ATA tx
Add an offline endpoint that locally derives and returns a wallet receive address from a derivation path, the inverse of iswalletaddress. The handler operates purely on the request body (keychains + chain/index) via coin.deriveAddress — no wallets().get lookup and no network access, so it can run in an air-gapped Express. Stateless: the caller supplies the index; the endpoint never allocates server-side. Pairs with iswalletaddress for a derive->verify round-trip. - typed route schema modules/express/src/typedRoutes/api/v2/deriveAddress.ts - registered in typedRoutes/api/index.ts - handler handleV2DeriveAddress + route registration in clientRoutes.ts - codec + supertest integration tests (UTXO + TSS/MPC, 400s, error surfacing) WCN-914 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds a standalone helper to decrypt and validate both EdDSA MPCv2 reduced keycards, returning typed Buffer key shares and the derived commonKeyChain. Mirrors the ECDSA getMpcV2RecoveryKeyShares pattern as part of the SJCL-to-Argon2 migration. - Decrypt both keycards in parallel via Promise.all - Use bitgo.decryptAsync (v1 + v2) when a BitGoBase instance is provided; fall back to sjcl.decrypt (v1 only) otherwise - Validate pub and rootChainCode separately with distinct error messages - Wrap getDecodedReducedKeyShare in try-catch to surface a descriptive error for malformed or public-only keycards - Export type for recovery key shares - Add 3 unit tests: v1 happy path, malformed keycard, mismatched keys Ticket: WCI-396
feat: exclude CVE related to esbuild's Deno distribution for Node.js …
…usage context Ticket: CECHO-1353
feat: add exclusions for new CVEs affecting dependencies and clarify usage context
Forward recipient addresses from the SDK to the server's GET /api/v1/wallet/:id/billing/fee endpoint as recipients[] query params. This allows the server to waive the PayGo fee when all recipients are v2 PayGo wallets (v1-to-v2 migration scenario). Backward-compatible: existing calls without recipients are unchanged. Ticket: T1-3579 Session-Id: 9bcb0f58-d633-492c-a7a4-70bcd09ce08b Task-Id: bf7868aa-6a4c-4ee7-8520-1e6b61551a64
…-migration feat(sdk-api): pass recipient addresses to v1 billing fee endpoint for PayGo migration waiver
feat(sdk-core): add getEddsaMPCv2RecoveryKeyShares helper
…ddress feat(abstract-utxo): implement deriveAddress for fixed-script UTXO wallets
…ve-address feat(abstract-eth): implement deriveAddress for MPC/TSS ETH wallets
…ve-address-endpoint feat(express): add POST /api/v2/:coin/address/derive endpoint
Add GoUSD stablecoin on Solana (prod/testnet/staging) and Tempo (prod/testnet/staging), and SCAASACME (Acme USD) demo token on Hoodi ETH, BSC testnet, and Tempo testnet/staging. All tokens include on-chain and OFC counterparts. - GoUSD: 6 decimals, Token-2022 program on Solana - SCAASACME: 18 decimals on EVM chains, 6 on Tempo - No production entries for SCAASACME (staging/test only) TICKET: SCAAS-9540, SCAAS-9748
…d-gousd-scaasacme feat(statics): onboard GoUSD and SCAASACME tokens
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
No description provided.