@metamask-previews/seedless-onboarding-controller 5.0.0-preview-e98a6769 → 5.0.0-preview-7bc334fb
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -0
- package/dist/SeedlessOnboardingController.cjs +6 -34
- package/dist/SeedlessOnboardingController.cjs.map +1 -1
- package/dist/SeedlessOnboardingController.d.cts.map +1 -1
- package/dist/SeedlessOnboardingController.d.mts.map +1 -1
- package/dist/SeedlessOnboardingController.mjs +7 -35
- package/dist/SeedlessOnboardingController.mjs.map +1 -1
- package/dist/assertions.cjs +20 -4
- package/dist/assertions.cjs.map +1 -1
- package/dist/assertions.d.cts +7 -0
- package/dist/assertions.d.cts.map +1 -1
- package/dist/assertions.d.mts +7 -0
- package/dist/assertions.d.mts.map +1 -1
- package/dist/assertions.mjs +18 -3
- package/dist/assertions.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +4 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +4 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
13
13
|
|
|
14
14
|
### Changed
|
|
15
15
|
|
|
16
|
+
- **BREAKING** Update `refreshToken` and `revokeToken` params as required in `Authenticate` method. ([#6998](https://github.com/MetaMask/core/pull/6998))
|
|
16
17
|
- Refactor `refreshAuthTokens` method, separately catch refreshJWTToken and authenticate errors. ([#6998](https://github.com/MetaMask/core/pull/6998))
|
|
17
18
|
- Bump `@metamask/toprf-secure-backup` package to `0.9.0`. ([#6998](https://github.com/MetaMask/core/pull/6998))
|
|
18
19
|
|
|
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
11
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
12
|
};
|
|
13
|
-
var _SeedlessOnboardingController_instances, _SeedlessOnboardingController_vaultEncryptor, _SeedlessOnboardingController_controllerOperationMutex, _SeedlessOnboardingController_vaultOperationMutex, _SeedlessOnboardingController_refreshJWTToken, _SeedlessOnboardingController_revokeRefreshToken, _SeedlessOnboardingController_renewRefreshToken, _SeedlessOnboardingController_passwordOutdatedCacheTTL, _SeedlessOnboardingController_isUnlocked, _SeedlessOnboardingController_cachedDecryptedVaultData, _SeedlessOnboardingController_submitGlobalPassword,
|
|
13
|
+
var _SeedlessOnboardingController_instances, _SeedlessOnboardingController_vaultEncryptor, _SeedlessOnboardingController_controllerOperationMutex, _SeedlessOnboardingController_vaultOperationMutex, _SeedlessOnboardingController_refreshJWTToken, _SeedlessOnboardingController_revokeRefreshToken, _SeedlessOnboardingController_renewRefreshToken, _SeedlessOnboardingController_passwordOutdatedCacheTTL, _SeedlessOnboardingController_isUnlocked, _SeedlessOnboardingController_cachedDecryptedVaultData, _SeedlessOnboardingController_submitGlobalPassword, _SeedlessOnboardingController_setUnlocked, _SeedlessOnboardingController_persistOprfKey, _SeedlessOnboardingController_persistAuthPubKey, _SeedlessOnboardingController_storeKeyringEncryptionKey, _SeedlessOnboardingController_loadKeyringEncryptionKey, _SeedlessOnboardingController_loadSeedlessEncryptionKey, _SeedlessOnboardingController_recoverAuthPubKey, _SeedlessOnboardingController_recoverEncKey, _SeedlessOnboardingController_fetchAllSecretDataFromMetadataStore, _SeedlessOnboardingController_changeEncryptionKey, _SeedlessOnboardingController_encryptAndStoreSecretData, _SeedlessOnboardingController_unlockVaultAndGetVaultData, _SeedlessOnboardingController_decryptAndParseVaultData, _SeedlessOnboardingController_withPersistedSecretMetadataBackupsState, _SeedlessOnboardingController_filterDupesAndUpdateSocialBackupsMetadata, _SeedlessOnboardingController_createNewVaultWithAuthData, _SeedlessOnboardingController_updateVault, _SeedlessOnboardingController_withControllerLock, _SeedlessOnboardingController_withVaultLock, _SeedlessOnboardingController_parseVaultData, _SeedlessOnboardingController_assertIsUnlocked, _SeedlessOnboardingController_assertIsAuthenticatedUser, _SeedlessOnboardingController_assertIsSRPBackedUpUser, _SeedlessOnboardingController_assertPasswordInSync, _SeedlessOnboardingController_resetPasswordOutdatedCache, _SeedlessOnboardingController_addRefreshTokenToRevokeList, _SeedlessOnboardingController_isAuthTokenError, _SeedlessOnboardingController_isMaxKeyChainLengthError, _SeedlessOnboardingController_executeWithTokenRefresh;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.SeedlessOnboardingController = exports.getInitialSeedlessOnboardingControllerStateWithDefaults = void 0;
|
|
16
16
|
const auth_network_utils_1 = require("@metamask/auth-network-utils");
|
|
@@ -629,7 +629,6 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
|
|
|
629
629
|
*/
|
|
630
630
|
async checkIsPasswordOutdated(options) {
|
|
631
631
|
const doCheckIsPasswordExpired = async () => {
|
|
632
|
-
__classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
|
|
633
632
|
// cache result to reduce load on infra
|
|
634
633
|
// Check cache first unless skipCache is true
|
|
635
634
|
if (!options?.skipCache) {
|
|
@@ -642,6 +641,7 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
|
|
|
642
641
|
return passwordOutdatedCache.isExpiredPwd;
|
|
643
642
|
}
|
|
644
643
|
}
|
|
644
|
+
(0, assertions_1.assertIsAuthUserInfoValid)(this.state);
|
|
645
645
|
const { nodeAuthTokens, authConnectionId, groupedAuthConnectionId, userId, } = this.state;
|
|
646
646
|
const currentDeviceAuthPubKey = __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_recoverAuthPubKey).call(this);
|
|
647
647
|
let globalAuthPubKey = options?.globalAuthPubKey;
|
|
@@ -883,9 +883,6 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
|
|
|
883
883
|
try {
|
|
884
884
|
__classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
|
|
885
885
|
const { accessToken } = this.state;
|
|
886
|
-
if (!accessToken) {
|
|
887
|
-
return true; // Consider missing token as expired
|
|
888
|
-
}
|
|
889
886
|
const decodedToken = (0, utils_3.decodeJWTToken)(accessToken);
|
|
890
887
|
return decodedToken.exp < Math.floor(Date.now() / 1000);
|
|
891
888
|
}
|
|
@@ -935,30 +932,6 @@ async function _SeedlessOnboardingController_submitGlobalPassword({ targetAuthPu
|
|
|
935
932
|
}
|
|
936
933
|
throw errors_1.PasswordSyncError.getInstance(error);
|
|
937
934
|
}
|
|
938
|
-
}, _SeedlessOnboardingController_getAccessToken =
|
|
939
|
-
/**
|
|
940
|
-
* Get the access token from the state or the vault.
|
|
941
|
-
* If the access token is not in the state, it will be retrieved from the vault by decrypting it with the password.
|
|
942
|
-
*
|
|
943
|
-
* If both the access token and the vault are not available, an error will be thrown.
|
|
944
|
-
*
|
|
945
|
-
* @param password - The optional password to unlock the vault. If not provided, the access token will be retrieved from the vault.
|
|
946
|
-
* @returns The access token.
|
|
947
|
-
*/
|
|
948
|
-
async function _SeedlessOnboardingController_getAccessToken(password) {
|
|
949
|
-
const { accessToken, vault } = this.state;
|
|
950
|
-
if (accessToken) {
|
|
951
|
-
// if the access token is in the state, return it
|
|
952
|
-
return accessToken;
|
|
953
|
-
}
|
|
954
|
-
// otherwise, check the vault availability and decrypt the access token from the vault
|
|
955
|
-
if (!vault) {
|
|
956
|
-
throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.InvalidAccessToken);
|
|
957
|
-
}
|
|
958
|
-
const { vaultData } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_decryptAndParseVaultData).call(this, {
|
|
959
|
-
password,
|
|
960
|
-
});
|
|
961
|
-
return vaultData.accessToken;
|
|
962
935
|
}, _SeedlessOnboardingController_setUnlocked = function _SeedlessOnboardingController_setUnlocked() {
|
|
963
936
|
__classPrivateFieldSet(this, _SeedlessOnboardingController_isUnlocked, true, "f");
|
|
964
937
|
}, _SeedlessOnboardingController_persistOprfKey =
|
|
@@ -1047,11 +1020,11 @@ async function _SeedlessOnboardingController_loadSeedlessEncryptionKey(encKey) {
|
|
|
1047
1020
|
* @throws RecoveryError - If failed to recover the encryption key.
|
|
1048
1021
|
*/
|
|
1049
1022
|
async function _SeedlessOnboardingController_recoverEncKey(password) {
|
|
1050
|
-
|
|
1051
|
-
const { authConnectionId, groupedAuthConnectionId, userId } = this.state;
|
|
1023
|
+
(0, assertions_1.assertIsAuthUserInfoValid)(this.state);
|
|
1024
|
+
const { nodeAuthTokens, authConnectionId, groupedAuthConnectionId, userId, } = this.state;
|
|
1052
1025
|
try {
|
|
1053
1026
|
const recoverEncKeyResult = await this.toprfClient.recoverEncKey({
|
|
1054
|
-
nodeAuthTokens
|
|
1027
|
+
nodeAuthTokens,
|
|
1055
1028
|
password,
|
|
1056
1029
|
authConnectionId,
|
|
1057
1030
|
groupedAuthConnectionId,
|
|
@@ -1338,8 +1311,7 @@ async function _SeedlessOnboardingController_withPersistedSecretMetadataBackupsS
|
|
|
1338
1311
|
*/
|
|
1339
1312
|
async function _SeedlessOnboardingController_createNewVaultWithAuthData({ password, rawToprfEncryptionKey, rawToprfPwEncryptionKey, rawToprfAuthKeyPair, }) {
|
|
1340
1313
|
__classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
|
|
1341
|
-
const { revokeToken } = this.state;
|
|
1342
|
-
const accessToken = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_getAccessToken).call(this, password);
|
|
1314
|
+
const { revokeToken, accessToken } = this.state;
|
|
1343
1315
|
const vaultData = {
|
|
1344
1316
|
toprfAuthKeyPair: rawToprfAuthKeyPair,
|
|
1345
1317
|
toprfEncryptionKey: rawToprfEncryptionKey,
|