Skip to content

fix(kyc-controller): Send residenceCountry and sessionClientPublicKey on kyc session creation - #9993

Merged
Akaryatrh merged 5 commits into
mainfrom
jl/fix-kyc-controller-api-mismatch
Aug 28, 2026
Merged

fix(kyc-controller): Send residenceCountry and sessionClientPublicKey on kyc session creation#9993
Akaryatrh merged 5 commits into
mainfrom
jl/fix-kyc-controller-api-mismatch

Conversation

@jiexi

@jiexi jiexi commented Aug 27, 2026

Copy link
Copy Markdown
Member

Explanation

  • remove unused wrapUserKey helper
  • pass sessionClientPublicKey into ukyc session creation
  • add residenceCountry to create ukyc session flow

References

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've communicated my changes to consumers by updating changelogs for packages I've changed
  • I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them

Note

Medium Risk
Changes the UKYC session contract and crypto wiring for document verification; consumers calling createUkycSession directly must adopt the new required fields.

Overview
BREAKING: KycService.createUkycSession (POST /sessions) now requires sessionClientPublicKey (unpadded base64url X25519) and residenceCountry (ISO 3166-1 alpha-3). Direct callers must supply both; the controller generates the per-session keypair, registers the public key at session creation, and uses the private key with the existing wrapEncryptionKey path for setAuthorizations.

KycController resolves residenceCountry from geoCountry or KycService:getGeoCountry, persists it on state when fetched, and aborts UKYC session creation if reset() bumps the flow generation while geo is in flight.

Removes the unused wrapUserKey helper and its tests; docs and wrapEncryptionKey comments now describe explicit session client public-key registration instead of implying registration was absent.

Reviewed by Cursor Bugbot for commit 578d94e. Bugbot is set up for automated code reviews on this repo. Configure here.

@jiexi
jiexi requested review from a team as code owners August 27, 2026 17:51
@jiexi jiexi changed the title fix(kyc-controller): Send residenceCountry and sessionClientPublicKey on kyc session creation" fix(kyc-controller): Send residenceCountry and sessionClientPublicKey on kyc session creation Aug 27, 2026
@jiexi
jiexi deployed to default-branch August 27, 2026 17:51 — with GitHub Actions Active
Co-authored-by: Cursor <cursoragent@cursor.com>
@jiexi

jiexi commented Aug 27, 2026

Copy link
Copy Markdown
Member Author

@metamaskbot publish-previews

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@8.0.0-preview-965e373
@metamask-previews/accounts-controller@39.1.1-preview-965e373
@metamask-previews/address-book-controller@7.1.2-preview-965e373
@metamask-previews/ai-controllers@0.8.0-preview-965e373
@metamask-previews/analytics-controller@2.0.0-preview-965e373
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-965e373
@metamask-previews/announcement-controller@8.1.0-preview-965e373
@metamask-previews/app-metadata-controller@2.0.1-preview-965e373
@metamask-previews/approval-controller@9.0.2-preview-965e373
@metamask-previews/assets-controller@14.0.2-preview-965e373
@metamask-previews/assets-controllers@111.1.3-preview-965e373
@metamask-previews/authenticated-user-storage@3.0.2-preview-965e373
@metamask-previews/base-controller@9.1.0-preview-965e373
@metamask-previews/base-data-service@1.0.0-preview-965e373
@metamask-previews/bitcoin-regtest-up@1.0.0-preview-965e373
@metamask-previews/bridge-controller@80.0.0-preview-965e373
@metamask-previews/bridge-status-controller@75.3.0-preview-965e373
@metamask-previews/build-utils@3.0.4-preview-965e373
@metamask-previews/chain-agnostic-permission@1.7.0-preview-965e373
@metamask-previews/chomp-api-service@4.0.1-preview-965e373
@metamask-previews/claims-controller@0.6.1-preview-965e373
@metamask-previews/client-controller@1.0.1-preview-965e373
@metamask-previews/client-utils@2.1.1-preview-965e373
@metamask-previews/compliance-controller@2.1.0-preview-965e373
@metamask-previews/composable-controller@12.0.1-preview-965e373
@metamask-previews/config-registry-controller@3.1.0-preview-965e373
@metamask-previews/connectivity-controller@0.3.0-preview-965e373
@metamask-previews/controller-utils@12.3.0-preview-965e373
@metamask-previews/core-backend@9.0.0-preview-965e373
@metamask-previews/delegation-controller@3.0.2-preview-965e373
@metamask-previews/earn-controller@12.2.6-preview-965e373
@metamask-previews/eip-5792-middleware@3.0.5-preview-965e373
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-965e373
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-965e373
@metamask-previews/eth-block-tracker@15.0.1-preview-965e373
@metamask-previews/eth-json-rpc-middleware@24.0.1-preview-965e373
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-965e373
@metamask-previews/foundryup@1.0.1-preview-965e373
@metamask-previews/gas-fee-controller@26.3.2-preview-965e373
@metamask-previews/gator-permissions-controller@5.0.2-preview-965e373
@metamask-previews/geolocation-controller@1.0.0-preview-965e373
@metamask-previews/java-tron-up@1.0.0-preview-965e373
@metamask-previews/json-rpc-engine@10.5.0-preview-965e373
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-965e373
@metamask-previews/keyring-controller@27.1.1-preview-965e373
@metamask-previews/kyc-controller@0.0.0-preview-965e373
@metamask-previews/local-node-utils@1.0.0-preview-965e373
@metamask-previews/logging-controller@9.0.0-preview-965e373
@metamask-previews/message-manager@14.1.2-preview-965e373
@metamask-previews/messenger@2.0.0-preview-965e373
@metamask-previews/messenger-cli@0.2.0-preview-965e373
@metamask-previews/money-account-api-data-service@0.4.1-preview-965e373
@metamask-previews/money-account-balance-service@2.4.3-preview-965e373
@metamask-previews/money-account-controller@1.0.0-preview-965e373
@metamask-previews/money-account-upgrade-controller@3.0.2-preview-965e373
@metamask-previews/money-account-utils@1.1.0-preview-965e373
@metamask-previews/multichain-account-service@13.0.2-preview-965e373
@metamask-previews/multichain-api-middleware@4.0.3-preview-965e373
@metamask-previews/multichain-network-controller@3.2.4-preview-965e373
@metamask-previews/multichain-transactions-controller@7.1.2-preview-965e373
@metamask-previews/name-controller@9.1.2-preview-965e373
@metamask-previews/network-connection-banner-controller@0.2.1-preview-965e373
@metamask-previews/network-controller@36.0.0-preview-965e373
@metamask-previews/network-enablement-controller@6.0.5-preview-965e373
@metamask-previews/notification-services-controller@26.0.1-preview-965e373
@metamask-previews/passkey-controller@3.1.0-preview-965e373
@metamask-previews/permission-controller@13.1.1-preview-965e373
@metamask-previews/permission-log-controller@5.1.0-preview-965e373
@metamask-previews/perps-controller@13.1.0-preview-965e373
@metamask-previews/phishing-controller@17.4.0-preview-965e373
@metamask-previews/platform-api-docs@0.0.0-preview-965e373
@metamask-previews/polling-controller@16.0.9-preview-965e373
@metamask-previews/preferences-controller@23.1.0-preview-965e373
@metamask-previews/profile-metrics-controller@4.0.3-preview-965e373
@metamask-previews/profile-sync-controller@29.0.0-preview-965e373
@metamask-previews/ramps-controller@20.0.0-preview-965e373
@metamask-previews/rate-limit-controller@7.0.1-preview-965e373
@metamask-previews/react-data-query@1.0.0-preview-965e373
@metamask-previews/remote-feature-flag-controller@6.1.0-preview-965e373
@metamask-previews/sample-controllers@5.0.6-preview-965e373
@metamask-previews/seedless-onboarding-controller@10.1.1-preview-965e373
@metamask-previews/selected-network-controller@26.1.7-preview-965e373
@metamask-previews/sentinel-api-service@1.0.1-preview-965e373
@metamask-previews/shield-controller@6.0.1-preview-965e373
@metamask-previews/signature-controller@39.2.10-preview-965e373
@metamask-previews/smart-transactions-controller@25.1.1-preview-965e373
@metamask-previews/snap-account-service@2.1.2-preview-965e373
@metamask-previews/social-controllers@2.8.0-preview-965e373
@metamask-previews/solana-test-validator-up@1.0.0-preview-965e373
@metamask-previews/stellar-quickstart-up@0.0.0-preview-965e373
@metamask-previews/storage-service@1.0.2-preview-965e373
@metamask-previews/subscription-controller@8.0.1-preview-965e373
@metamask-previews/transaction-controller@69.6.1-preview-965e373
@metamask-previews/transaction-pay-controller@27.0.0-preview-965e373
@metamask-previews/user-operation-controller@41.2.9-preview-965e373
@metamask-previews/wallet@12.0.2-preview-965e373
@metamask-previews/wallet-cli@0.0.0-preview-965e373

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 578d94e. Configure here.

Comment thread packages/kyc-controller/src/KycService.ts
@cursor
cursor Bot requested review from Akaryatrh and georgeweiler August 28, 2026 15:28

@Akaryatrh Akaryatrh left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Akaryatrh
Akaryatrh added this pull request to the merge queue Aug 28, 2026
Merged via the queue into main with commit 6be7fe3 Aug 28, 2026
47 checks passed
@Akaryatrh
Akaryatrh deleted the jl/fix-kyc-controller-api-mismatch branch August 28, 2026 16:14
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.

2 participants