Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
197 commits
Select commit Hold shift + click to select a range
fe3f95c
feat: init SeedlessOnboardingController
lwin-kyaw Apr 8, 2025
de16123
feat: added optional vault Encryptor in constructor args
lwin-kyaw Apr 10, 2025
65cb47a
Merge remote-tracking branch 'origin/main' into feat/seedless-onboard…
lwin-kyaw Apr 17, 2025
6a30638
feat: authenticate, createSeedPhraseBackup and fetchSeedPhraseBackup
lwin-kyaw Apr 17, 2025
65a443d
feat: changePassword
lwin-kyaw Apr 17, 2025
4294696
feat: addMultiSrpBackup, batchAddBackup
lwin-kyaw Apr 17, 2025
499bcc9
lint: fixed lint
lwin-kyaw Apr 17, 2025
8ad9c24
fix: updated CODEOWNERS
lwin-kyaw Apr 17, 2025
611d358
added tgz package for TOPRF
lwin-kyaw Apr 17, 2025
21df27b
lint: fixed
lwin-kyaw Apr 17, 2025
c2bc7b4
updated changelog
lwin-kyaw Apr 17, 2025
54e21b4
fix: validate changelog
lwin-kyaw Apr 17, 2025
999f1df
added PR number to changelog
lwin-kyaw Apr 17, 2025
13da8a7
validate changelog
lwin-kyaw Apr 17, 2025
94ba335
update: toprf-secure-backup package
lwin-kyaw Apr 17, 2025
aaa9586
fix: export errors from controller
lwin-kyaw Apr 17, 2025
9137174
Update packages/seedless-onboarding-controller/package.json
chaitanyapotti Apr 17, 2025
b9f9980
Update packages/seedless-onboarding-controller/src/SeedlessOnboarding…
chaitanyapotti Apr 17, 2025
f3e8fed
Update packages/seedless-onboarding-controller/src/SeedlessOnboarding…
chaitanyapotti Apr 17, 2025
acacda1
Update packages/seedless-onboarding-controller/src/SeedlessOnboarding…
chaitanyapotti Apr 17, 2025
0f28440
Update packages/seedless-onboarding-controller/src/SeedlessOnboarding…
chaitanyapotti Apr 17, 2025
0677d52
fix: review comments regarding authenticate and default network
chaitanyapotti Apr 17, 2025
8cc08fc
Merge branch 'feat/seedless-onboarding-controller' of github.com:Meta…
chaitanyapotti Apr 17, 2025
334e060
fix: import of keccak256 + rename variables
chaitanyapotti Apr 17, 2025
cd62441
fix: comment batchadd
chaitanyapotti Apr 17, 2025
e7c66cd
fix: lint
lwin-kyaw Apr 18, 2025
37d6821
Merge remote-tracking branch 'origin/main' into feat/seedless-onboard…
lwin-kyaw Apr 18, 2025
b0ebb02
fixed: build
lwin-kyaw Apr 18, 2025
969053f
test: updated comment in jest.enviroment.js which defines 'webCrypto'
lwin-kyaw Apr 18, 2025
caa3fef
chore: updated comments for withPersistedSeedPhraseBackupsState method
lwin-kyaw Apr 18, 2025
37ae6db
chore: renamed and updated comments for '#verifyPassword' method
lwin-kyaw Apr 18, 2025
eb7735a
chore: updated exports from the controller
lwin-kyaw Apr 18, 2025
14b308c
chore: created a function to get default state of SeedlessOnboardingC…
lwin-kyaw Apr 18, 2025
897ac71
chore: removed description tag from jsDoc
lwin-kyaw Apr 18, 2025
79ace98
chore: removed commented methods
lwin-kyaw Apr 18, 2025
1dd4792
fix: redefined the ControllerMessenger actions and event lists
lwin-kyaw Apr 18, 2025
aef4e8a
chore: updated comments and state in SeedlessOnobardingControllerOptions
lwin-kyaw Apr 18, 2025
6457e06
chore: removed unused packages
lwin-kyaw Apr 18, 2025
5793bba
chore: renamed and add comments on VaultEncryptor
lwin-kyaw Apr 18, 2025
432719d
fix: updated 'getSeedPhraseBackupHash' implementation
lwin-kyaw Apr 18, 2025
3337ea3
lint: fixed lint
lwin-kyaw Apr 18, 2025
422c6a6
fix: add comments
chaitanyapotti Apr 18, 2025
7d7a364
Merge branch 'feat/seedless-onboarding-controller' of github.com:Meta…
chaitanyapotti Apr 18, 2025
6487985
Update packages/seedless-onboarding-controller/README.md
chaitanyapotti Apr 18, 2025
b4f51e9
fix: don't export controller name
chaitanyapotti Apr 18, 2025
00e768c
Merge branches 'feat/seedless-onboarding-controller' and 'feat/seedle…
chaitanyapotti Apr 18, 2025
50b7721
feat: updated ControllerState with AuthenticatedUserDetails
lwin-kyaw Apr 20, 2025
b9d5da0
test: updated tests with new state data
lwin-kyaw Apr 20, 2025
3b92842
Merge remote-tracking branch 'origin/main' into feat/seedless-onboard…
lwin-kyaw Apr 20, 2025
ddbcf04
fix: export 'SeedlessOnboardingControllerError'
lwin-kyaw Apr 20, 2025
055a4f5
fix: export 'getDefaultSeedlessOnboardingControllerState'
lwin-kyaw Apr 21, 2025
52646a9
fix: removed 'addNewSrpBackup' method
lwin-kyaw Apr 22, 2025
11d6552
feat: added 'encryptionKey' and 'encryptionSalt' to state
lwin-kyaw Apr 22, 2025
5a2953c
feat: add new private method, 'verifyPassword` to verify password val…
lwin-kyaw Apr 22, 2025
3aa52ba
feat: updated vault encryption scheme
lwin-kyaw Apr 22, 2025
5347ab5
feat: add new method 'addNewSeedPhraseBackup' for multi-srp
lwin-kyaw Apr 22, 2025
3301236
fix: fixed vaultEncKey and password check
lwin-kyaw Apr 22, 2025
534f04c
test: updated tests for multi-srp and new vault encryption scheme
lwin-kyaw Apr 22, 2025
57636e6
lint: removed unused imports
lwin-kyaw Apr 22, 2025
b15d1d9
feat: locked controller and clear secrets on keyring lock state
lwin-kyaw Apr 22, 2025
6cae65b
fix: removed password cache value from Controller
lwin-kyaw Apr 22, 2025
f8dd9fb
test: fixed and updated tests
lwin-kyaw Apr 22, 2025
7cbf63a
fix: updated and renamed SeedlessOnboardingController backup state
lwin-kyaw Apr 23, 2025
c4dd03b
test: updated tests for SocialBackupMetadata state
lwin-kyaw Apr 23, 2025
fc2a397
feat: add AuthConnection and SocialLoginEmail for SeedlessOnboardingC…
lwin-kyaw Apr 23, 2025
4104408
chores: make 'socialLoginEmail' as optional param in Authenticate
lwin-kyaw Apr 23, 2025
92525ee
feat: updated toprf package and fixed RatelimitError handling
lwin-kyaw Apr 23, 2025
4e3447e
Merge remote-tracking branch 'origin/feat/seedless-onboarding-control…
lwin-kyaw Apr 24, 2025
ee4c437
Merge branch 'main' into feat/seedless-onboarding-controller
chaitanyapotti Apr 24, 2025
2df1360
Merge remote-tracking branch 'origin/main' into feat/seedless-onboard…
lwin-kyaw Apr 24, 2025
7aa2764
Merge remote-tracking branch 'origin/feat/seedless-onboarding-control…
lwin-kyaw Apr 24, 2025
9198631
feat: sync SeedlessOnboardingController lock with Keyring
lwin-kyaw Apr 24, 2025
60cff9b
feat: handle password sync oudated check and recover password
tuna1207 Apr 25, 2025
9716513
feat: allow multiple backupState in updateBackupMetadataState method
lwin-kyaw Apr 25, 2025
ad56538
feat: change order of seedPhrases in fetchAllSeedPhrase method
lwin-kyaw Apr 25, 2025
88b4b6c
Merge remote-tracking branch 'origin/feat/seedless-onboarding-passwor…
lwin-kyaw Apr 25, 2025
d05d5ef
fix: correct password sync error
tuna1207 Apr 25, 2025
c1920ec
Merge commit 'ad56538c0f40e506e06fcf0fae61c0ba85e7cba9' into feat/see…
tuna1207 Apr 27, 2025
5c6fc9c
feat: add with controller lock
tuna1207 Apr 28, 2025
327f079
feat: add sync latest global password
tuna1207 Apr 28, 2025
3a06bbe
feat: add check outdated password cache
tuna1207 Apr 28, 2025
103e7fd
feat: add skip cache param for assert password in sync
tuna1207 Apr 28, 2025
6054148
feat: reset password outdated cache after password change
tuna1207 Apr 28, 2025
f2b5d96
fix: use Keyring Encryptor as vault encryptor
lwin-kyaw Apr 29, 2025
9b2cb7b
chore: added controller tgz to git
lwin-kyaw Apr 29, 2025
b22516f
fix: encryptor type
ieow Apr 29, 2025
31d7796
fix: remove un-needed typing
ieow Apr 29, 2025
4dcc584
Merge pull request #7 from Web3Auth/fix/encryptor-type
lwin-kyaw Apr 29, 2025
ea742ec
chore: updated tgz
lwin-kyaw Apr 29, 2025
885b798
fix: remove web encryptor from controller
ieow Apr 30, 2025
816abb7
feat: update package.tgz
ieow Apr 30, 2025
5de4c1d
fix: make setUnlocked public
ieow Apr 30, 2025
51da766
feat: update package.tgz
ieow Apr 30, 2025
37f7a80
fix: cannot write private member
ieow Apr 30, 2025
e26e29b
feat: update package.tgz
ieow Apr 30, 2025
084ebb8
refactor: use recoverCurrentDevicePassword method
tuna1207 Apr 30, 2025
d9a62f9
feat: increase pw oudated cache ttl to 30mins
tuna1207 Apr 30, 2025
af08c93
refactor: correct latest encKey variable name
tuna1207 Apr 30, 2025
bba8844
refactor: verify password naming
tuna1207 Apr 30, 2025
b28ca60
refactor: correct naming
tuna1207 Apr 30, 2025
63a4fa2
refactor: use noble lib to deserialize pubkey and compare curve point
tuna1207 Apr 30, 2025
eef0ebd
Merge branch 'feat/seedless-multi-srp' into feat/seedless-onboarding-…
tuna1207 Apr 30, 2025
bc23413
Merge remote-tracking branch 'origin/fix/encryptor-type' into fix/enc…
lwin-kyaw May 6, 2025
a4a6ece
feat: persist nodeAuthTokens
tuna1207 May 6, 2025
b5931c1
fix: fixed tests
lwin-kyaw May 6, 2025
3065919
Merge pull request #8 from Web3Auth/fix/encryptor-type
lwin-kyaw May 6, 2025
b678960
Merge commit '30659194bff98d3284c3607aaa814d1ac9a3068b' into feat/see…
tuna1207 May 6, 2025
69449a9
feat: removed toprf tgz packages and used npm packages
lwin-kyaw May 6, 2025
ef48697
fix: add missing catch in set locked
tuna1207 May 6, 2025
e160282
Merge remote-tracking branch 'origin/feat/seedless-onboarding-control…
lwin-kyaw May 6, 2025
b7201c3
Merge remote-tracking branch 'origin/feat/seedless-multi-srp' into fe…
lwin-kyaw May 6, 2025
c1619fc
fix: removed 'assertIsUnlocked' check in 'setLock' method
lwin-kyaw May 6, 2025
fe94eac
feat: removed tgz files and replaced with npm packcages
lwin-kyaw May 6, 2025
510912f
Merge remote-tracking branch 'origin/main' into feat/seedless-onboard…
lwin-kyaw May 6, 2025
5e776e2
fix: fixed lint
lwin-kyaw May 6, 2025
82ecfdc
fix: check password in sync skip cache in change password and add srp
tuna1207 May 6, 2025
92eb428
Merge branch 'main' into feat/seedless-onboarding-controller
chaitanyapotti May 6, 2025
09f490a
Merge remote-tracking branch 'origin/main' into feat/seedless-onboard…
lwin-kyaw May 7, 2025
6fdf76c
Merge branch 'main' into feat/seedless-onboarding-controller
lwin-kyaw May 7, 2025
6fbd735
fix: fixed lint
lwin-kyaw May 7, 2025
fcb4aa2
Merge remote-tracking branch 'origin/feat/seedless-onboarding-control…
lwin-kyaw May 7, 2025
765bfcc
feat: updated seedless-onboarding-controller tgz package
lwin-kyaw May 7, 2025
1e1c4b3
Merge branch 'feat/seedless-multi-srp' into feat/seedless-onboarding-…
tuna1207 May 8, 2025
458437b
fix: correct setlock synchronous
tuna1207 May 8, 2025
4820a8c
fix: correct test and doc
tuna1207 May 8, 2025
630ed14
chore: allow 'toprf-secure-backup' package in lavamoat
lwin-kyaw May 9, 2025
971e1a6
Merge remote-tracking branch 'origin/main' into feat/seedless-onboard…
lwin-kyaw May 10, 2025
d77a46d
feat: added new method to clear the controller state
lwin-kyaw May 12, 2025
8a04e03
Merge branch 'feat/seedless-onboarding-controller' into feat/seedless…
lwin-kyaw May 12, 2025
3887992
Merge pull request #11 from MetaMask/feat/seedless-onboarding-controller
lwin-kyaw May 12, 2025
4ea5e37
Merge remote-tracking branch 'origin/feat/seedless-onboarding-control…
lwin-kyaw May 12, 2025
e856469
chore: used 'some' instead of 'find' to check the existing backup data
lwin-kyaw May 12, 2025
264641d
feat: update metadata class to support multiple secret types
lwin-kyaw May 13, 2025
fd81fc4
test: updated tests
lwin-kyaw May 13, 2025
da85dbd
chore: updated seedless-onboarding-controller tgz package
lwin-kyaw May 13, 2025
25eef94
chore: update 'ISecretMetadata' to include SecretType
lwin-kyaw May 13, 2025
511abfc
chore: renamed 'seedPhrase' field to 'data' in SeedPhraseMetadata class
lwin-kyaw May 13, 2025
45a9104
Merge branch 'MetaMask:feat/seedless-onboarding-controller' into feat…
lwin-kyaw May 13, 2025
0aeb958
Merge remote-tracking branch 'origin/feat/seedless-onboarding-control…
lwin-kyaw May 13, 2025
ed12037
chore: updated tgz package
lwin-kyaw May 13, 2025
0b67570
feat: add 'version' to SecretMetadata
lwin-kyaw May 14, 2025
ceda10e
feat: make 'data' field to Generic in SecretMetadata
lwin-kyaw May 14, 2025
cda6764
test: updated tests
lwin-kyaw May 14, 2025
7edfcb7
Merge remote-tracking branch 'origin/feat/seedless-multi-srp' into fe…
lwin-kyaw May 14, 2025
ad2b854
Merge branch 'feat/seedless-multi-srp' into feat/seedless-onboarding-…
May 14, 2025
7104c8c
Merge pull request #12 from Web3Auth/feat/secret-metadata-type
chaitanyapotti May 14, 2025
9cf2022
Merge branch 'feat/seedless-multi-srp' into feat/seedless-onboarding-…
May 14, 2025
d823bd6
refactor: add await to follow guide line
May 14, 2025
7b0ec56
feat: setup update tgz
May 19, 2025
74c23a9
Merge remote-tracking branch 'origin/feat/seedless-onboarding-passwor…
lwin-kyaw May 20, 2025
e1a9ea1
feat: updated toprf-secure-backup sdk
lwin-kyaw May 20, 2025
7c0c403
test: updated tests
lwin-kyaw May 20, 2025
3553f10
docs: updated changelog
lwin-kyaw May 20, 2025
3119075
fix: fixed changelog
lwin-kyaw May 20, 2025
fefb8a9
feat: updated authenticate method params
lwin-kyaw May 21, 2025
1c8c271
feat: add changelog
May 21, 2025
a8373d2
feat: add test case for add new srp password outdated
May 21, 2025
61b9a66
feat: correct single lock utilization
May 21, 2025
0f7cc87
feat: update change log
May 21, 2025
2425932
docs: updated and added missing jsDocs
lwin-kyaw May 22, 2025
7688db3
chore: removed static method 'getRateLimitErrorData' to utils function
lwin-kyaw May 22, 2025
1ed1ede
chore: renamed 'SeedlessOnboardingControllerError' enum to 'SeedlessO…
lwin-kyaw May 22, 2025
cacd5bc
fix: fixed lint
lwin-kyaw May 22, 2025
607badb
Merge remote-tracking branch 'origin/feat/seedless-onboarding-control…
lwin-kyaw May 22, 2025
d00bf53
chore: removed redundant unittests
lwin-kyaw May 22, 2025
8036237
Merge remote-tracking branch 'origin/feat/seedless-multi-srp' into fe…
lwin-kyaw May 22, 2025
28db351
Merge remote-tracking branch 'origin/feat/seedless-onboarding-passwor…
lwin-kyaw May 22, 2025
bf3862a
chore: resolved conflicts
lwin-kyaw May 22, 2025
e280b1e
docs: updated ChangeLog
lwin-kyaw May 22, 2025
235e255
Merge remote-tracking branch 'origin/feat/seedless-multi-srp' into fe…
lwin-kyaw May 22, 2025
8f1c2ee
docs: updated ChangeLog
lwin-kyaw May 22, 2025
0515dab
Merge remote-tracking branch 'origin/feat/seedless-onboarding-passwor…
lwin-kyaw May 22, 2025
ee43807
chore: updated yarn.lock
lwin-kyaw May 25, 2025
c191599
feat: refactored #recoverEncKey method
lwin-kyaw May 26, 2025
109fbb8
Merge remote-tracking branch 'origin/feat/toprf-sdk-update' into feat…
lwin-kyaw May 26, 2025
4cd81ff
Merge remote-tracking branch 'origin/feat/auth-network-config' into f…
lwin-kyaw May 26, 2025
dc93ada
feat: added new state, 'recoveryRatelimitCache', and updated 'Recover…
lwin-kyaw May 26, 2025
be8fed5
test: updated tests
lwin-kyaw May 26, 2025
74d47f0
chore: updated JsDocs and exports
lwin-kyaw May 26, 2025
e6fb3a0
docs: updated ChangeLog
lwin-kyaw May 26, 2025
7320a8f
feat: fetch SeedPhrases backup with cached encryption key
lwin-kyaw May 29, 2025
0537c4f
Merge remote-tracking branch 'origin/main' into feat/seedless-multi-srp
lwin-kyaw May 29, 2025
5f8ef7b
fix: fixed lint
lwin-kyaw May 29, 2025
1f9e985
Merge remote-tracking branch 'origin/main' into feat/seedless-onboard…
lwin-kyaw May 29, 2025
eb017d9
docs: updated ChangeLog
lwin-kyaw May 29, 2025
3308a1b
Merge remote-tracking branch 'upstream/feat/seedless-onboarding-contr…
lwin-kyaw May 29, 2025
dbd6206
docs: updated change log
lwin-kyaw May 29, 2025
3013c01
Merge remote-tracking branch 'origin/feat/seedless-multi-srp' into fe…
lwin-kyaw May 29, 2025
55756f0
docs: updated change log
lwin-kyaw May 29, 2025
8d8b458
chore: removed tgz package
lwin-kyaw May 29, 2025
ae46257
chore: removed toprf-secure-backup.tgz
lwin-kyaw May 29, 2025
8c917fc
chore: update tropf-secure-backup sdk to v0.3.0
lwin-kyaw May 29, 2025
7e7c7e3
Merge pull request #17 from Web3Auth/feat/cache-recovery-ratelimit
lwin-kyaw May 29, 2025
ad7bb98
Merge pull request #16 from Web3Auth/feat/auth-network-config
lwin-kyaw May 29, 2025
3ec70ca
Merge remote-tracking branch 'upstream/feat/seedless-onboarding-passw…
lwin-kyaw May 29, 2025
df6a412
chore: updated usage of 'groupedAuthConnectionId'
lwin-kyaw May 29, 2025
4bd767a
docs: updated ChangeLog
lwin-kyaw May 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@
## Wallet UX Team
/packages/announcement-controller @MetaMask/wallet-ux

## Web3Auth Team
/packages/seedless-onboarding-controller @MetaMask/web3auth

## Joint team ownership
/packages/eth-json-rpc-provider @MetaMask/wallet-api-platform-engineers @MetaMask/wallet-framework-engineers
/packages/json-rpc-engine @MetaMask/wallet-api-platform-engineers @MetaMask/wallet-framework-engineers
Expand Down Expand Up @@ -148,3 +151,5 @@
/packages/bridge-status-controller/CHANGELOG.md @MetaMask/swaps-engineers @MetaMask/wallet-framework-engineers
/packages/app-metadata-controller/package.json @MetaMask/mobile-platform @MetaMask/wallet-framework-engineers
/packages/app-metadata-controller/CHANGELOG.md @MetaMask/mobile-platform @MetaMask/wallet-framework-engineers
/packages/seedless-onboarding-controller/package.json @MetaMask/web3auth @MetaMask/wallet-framework-engineers
/packages/seedless-onboarding-controller/CHANGELOG.md @MetaMask/web3auth @MetaMask/wallet-framework-engineers
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ Each package in this repository has its own README where you can find installati
- [`@metamask/rate-limit-controller`](packages/rate-limit-controller)
- [`@metamask/remote-feature-flag-controller`](packages/remote-feature-flag-controller)
- [`@metamask/sample-controllers`](packages/sample-controllers)
- [`@metamask/seedless-onboarding-controller`](packages/seedless-onboarding-controller)
- [`@metamask/selected-network-controller`](packages/selected-network-controller)
- [`@metamask/signature-controller`](packages/signature-controller)
- [`@metamask/token-search-discovery-controller`](packages/token-search-discovery-controller)
Expand Down Expand Up @@ -118,6 +119,7 @@ linkStyle default opacity:0.5
rate_limit_controller(["@metamask/rate-limit-controller"]);
remote_feature_flag_controller(["@metamask/remote-feature-flag-controller"]);
sample_controllers(["@metamask/sample-controllers"]);
seedless_onboarding_controller(["@metamask/seedless-onboarding-controller"]);
selected_network_controller(["@metamask/selected-network-controller"]);
signature_controller(["@metamask/signature-controller"]);
token_search_discovery_controller(["@metamask/token-search-discovery-controller"]);
Expand Down
6 changes: 6 additions & 0 deletions eslint-warning-thresholds.json
Original file line number Diff line number Diff line change
Expand Up @@ -452,6 +452,12 @@
"packages/remote-feature-flag-controller/src/utils/user-segmentation-utils.ts": {
"jsdoc/tag-lines": 2
},
"packages/seedless-onboarding-controller/src/errors.ts": {
"@typescript-eslint/no-unsafe-enum-comparison": 1
},
"packages/seedless-onboarding-controller/jest.environment.js": {
"n/no-unsupported-features/node-builtins": 1
},
"packages/selected-network-controller/src/SelectedNetworkController.ts": {
"@typescript-eslint/prefer-readonly": 1,
"prettier/prettier": 6
Expand Down
34 changes: 34 additions & 0 deletions packages/seedless-onboarding-controller/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Added

- Initial implementation of the seedless onboarding controller. ([#5874](https://github.com/MetaMask/core/pull/5874))
- Authenticate OAuth user using the seedless onboarding flow and determine if the user is already registered or not
- Create a new Toprf key and backup seed phrase
- Add a new seed phrase backup to the metadata store
- Add array of new seed phrase backups to the metadata store in batch (useful in multi-srp flow)
- Fetch seed phrase metadata from the metadata store
- Update the password of the seedless onboarding flow
- Support multi SRP sync using social login. ([#5875](https://github.com/MetaMask/core/pull/5875))
- Update Metadata to support multiple types of secrets (SRP, PrivateKey).
- Add `Controller Lock` which will sync with `Keyring Lock`.
- Updated `VaultEncryptor` type in constructor args and is compulsory to provided relevant encryptor to constructor.
- Added new non-persisted states, `encryptionKey` and `encryptionSalt` to decrypt the vault when password is not available.
- Update `password` param in `fetchAllSeedPhrases` method to optional. If password is not provided, `cached EncryptionKey` will be used.
- Password sync features implementation. ([#5877](https://github.com/MetaMask/core/pull/5877))
- checkIsPasswordOutdated to check current password is outdated compare to global password
- Add password outdated check to add SRPs / change password
- recover old password using latest global password
- sync latest global password to reset vault to use latest password and persist latest auth pubkey
- Updated `toprf-secure-backup` to `0.3.0`. ([#5880](https://github.com/MetaMask/core/pull/5880))
- added an optional constructor param, `topfKeyDeriver` to assist the `Key derivation` in `toprf-seucre-backup` sdk and adds an additinal security
- added new state value, `recoveryRatelimitCache` to the controller to parse the `RecoveryError` correctly and synchroize the error data (numberOfAttempts) across multiple devices.

[Unreleased]: https://github.com/MetaMask/core/
20 changes: 20 additions & 0 deletions packages/seedless-onboarding-controller/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
MIT License

Copyright (c) 2025 MetaMask

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
15 changes: 15 additions & 0 deletions packages/seedless-onboarding-controller/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# `@metamask/seedless-onboarding-controller`

Backup and rehydrate SRP(s) using social login and password

## Installation

`yarn add @metamask/seedless-onboarding-controller`

or

`npm install @metamask/seedless-onboarding-controller`

## Contributing

This package is part of a monorepo. Instructions for contributing can be found in the [monorepo README](https://github.com/MetaMask/core#readme).
29 changes: 29 additions & 0 deletions packages/seedless-onboarding-controller/jest.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* For a detailed explanation regarding each configuration property and type check, visit:
* https://jestjs.io/docs/configuration
*/

const merge = require('deepmerge');
const path = require('path');

const baseConfig = require('../../jest.config.packages');

const displayName = path.basename(__dirname);

module.exports = merge(baseConfig, {
// The display name when running multiple projects
displayName,

// An object that configures minimum threshold enforcement for coverage results
coverageThreshold: {
global: {
branches: 100,
functions: 100,
lines: 100,
statements: 100,
},
},

// These tests rely on the Crypto API
testEnvironment: '<rootDir>/jest.environment.js',
});
16 changes: 16 additions & 0 deletions packages/seedless-onboarding-controller/jest.environment.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
const NodeEnvironment = require('jest-environment-node');

/**
* SeedlessOnboardingController depends on @noble/hashes, which as of 1.7.1 relies on the
* Web Crypto API in Node and browsers.
*/
class CustomTestEnvironment extends NodeEnvironment {
async setup() {
await super.setup();
if (typeof this.global.crypto === 'undefined') {
this.global.crypto = require('crypto').webcrypto;
}
}
}

module.exports = CustomTestEnvironment;
92 changes: 92 additions & 0 deletions packages/seedless-onboarding-controller/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
{
"name": "@metamask/seedless-onboarding-controller",
"version": "0.0.0",
"description": "Backup and rehydrate SRP(s) using social login and password",
"keywords": [
"MetaMask",
"Ethereum"
],
"homepage": "https://github.com/MetaMask/core/tree/main/packages/seedless-onboarding-controller#readme",
"bugs": {
"url": "https://github.com/MetaMask/core/issues"
},
"repository": {
"type": "git",
"url": "https://github.com/MetaMask/core.git"
},
"license": "MIT",
"sideEffects": false,
"exports": {
".": {
"import": {
"types": "./dist/index.d.mts",
"default": "./dist/index.mjs"
},
"require": {
"types": "./dist/index.d.cts",
"default": "./dist/index.cjs"
}
},
"./package.json": "./package.json"
},
"main": "./dist/index.cjs",
"types": "./dist/index.d.cts",
"files": [
"dist/"
],
"scripts": {
"build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references",
"build:docs": "typedoc",
"changelog:update": "../../scripts/update-changelog.sh @metamask/seedless-onboarding-controller",
"changelog:validate": "../../scripts/validate-changelog.sh @metamask/seedless-onboarding-controller",
"publish:preview": "yarn npm publish --tag preview",
"test": "NODE_OPTIONS=--experimental-vm-modules jest --reporters=jest-silent-reporter",
"test:clean": "NODE_OPTIONS=--experimental-vm-modules jest --clearCache",
"test:verbose": "NODE_OPTIONS=--experimental-vm-modules jest --verbose",
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch",
"since-latest-release": "../../scripts/since-latest-release.sh"
},
"dependencies": {
"@metamask/auth-network-utils": "^0.3.0",
"@metamask/base-controller": "^8.0.1",
"@metamask/toprf-secure-backup": "^0.3.0",
"@metamask/utils": "^11.2.0",
"async-mutex": "^0.5.0"
},
"devDependencies": {
"@lavamoat/allow-scripts": "^3.0.4",
"@lavamoat/preinstall-always-fail": "^2.1.0",
"@metamask/auto-changelog": "^3.4.4",
"@metamask/browser-passworder": "^4.3.0",
"@metamask/keyring-controller": "^22.0.0",
"@noble/ciphers": "^0.5.2",
"@noble/curves": "^1.2.0",
"@noble/hashes": "^1.4.0",
"@types/elliptic": "^6",
"@types/jest": "^27.4.1",
"deepmerge": "^4.2.2",
"jest": "^27.5.1",
"jest-environment-node": "^27.5.1",
"nock": "^13.3.1",
"ts-jest": "^27.1.4",
"typedoc": "^0.24.8",
"typedoc-plugin-missing-exports": "^2.0.0",
"typescript": "~5.2.2"
},
"peerDependencies": {
"@metamask/keyring-controller": "^22.0.0"
},
"engines": {
"node": "^18.18 || >=20"
},
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org/"
},
"lavamoat": {
"allowScripts": {
"@lavamoat/preinstall-always-fail": false,
"@metamask/toprf-secure-backup": true
}
}
}
Loading