@metamask-previews/seedless-onboarding-controller 6.0.0-preview-79b6f72 → 6.0.0-preview-eee46d4b
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 +0 -4
- package/dist/SeedlessOnboardingController.cjs +10 -43
- package/dist/SeedlessOnboardingController.cjs.map +1 -1
- package/dist/SeedlessOnboardingController.d.cts +1 -1
- package/dist/SeedlessOnboardingController.d.cts.map +1 -1
- package/dist/SeedlessOnboardingController.d.mts +1 -1
- package/dist/SeedlessOnboardingController.d.mts.map +1 -1
- package/dist/SeedlessOnboardingController.mjs +11 -44
- 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 +8 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +8 -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
|
@@ -7,10 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
-
### Fixed
|
|
11
|
-
|
|
12
|
-
- Fixed `InvalidRevokeToken` issue in `refreshAuthTokens` method. ([#7012](https://github.com/MetaMask/core/pull/7012))
|
|
13
|
-
|
|
14
10
|
## [6.0.0]
|
|
15
11
|
|
|
16
12
|
### Added
|
|
@@ -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");
|
|
@@ -298,10 +298,8 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
|
|
|
298
298
|
state.socialLoginEmail = socialLoginEmail;
|
|
299
299
|
state.metadataAccessToken = metadataAccessToken;
|
|
300
300
|
state.refreshToken = refreshToken;
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
state.revokeToken = revokeToken;
|
|
304
|
-
}
|
|
301
|
+
// Temporarily store revoke token & access token in state for later vault creation
|
|
302
|
+
state.revokeToken = revokeToken;
|
|
305
303
|
state.accessToken = accessToken;
|
|
306
304
|
// we will check if the controller state is properly set with the authenticated user info
|
|
307
305
|
// before setting the isSeedlessOnboardingUserAuthenticated to true
|
|
@@ -643,7 +641,7 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
|
|
|
643
641
|
return passwordOutdatedCache.isExpiredPwd;
|
|
644
642
|
}
|
|
645
643
|
}
|
|
646
|
-
|
|
644
|
+
(0, assertions_1.assertIsAuthUserInfoValid)(this.state);
|
|
647
645
|
const { nodeAuthTokens, authConnectionId, groupedAuthConnectionId, userId, } = this.state;
|
|
648
646
|
const currentDeviceAuthPubKey = __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_recoverAuthPubKey).call(this);
|
|
649
647
|
let globalAuthPubKey = options?.globalAuthPubKey;
|
|
@@ -681,9 +679,8 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
|
|
|
681
679
|
async checkIsSeedlessOnboardingUserAuthenticated() {
|
|
682
680
|
let isAuthenticated = false;
|
|
683
681
|
try {
|
|
684
|
-
|
|
685
|
-
isAuthenticated =
|
|
686
|
-
Boolean(this.state.accessToken) && Boolean(this.state.refreshToken);
|
|
682
|
+
(0, assertions_1.assertIsSeedlessOnboardingUserAuthenticated)(this.state);
|
|
683
|
+
isAuthenticated = true;
|
|
687
684
|
}
|
|
688
685
|
catch {
|
|
689
686
|
isAuthenticated = false;
|
|
@@ -732,7 +729,7 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
|
|
|
732
729
|
*/
|
|
733
730
|
async refreshAuthTokens() {
|
|
734
731
|
__classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
|
|
735
|
-
const { refreshToken } = this.state;
|
|
732
|
+
const { refreshToken, revokeToken } = this.state;
|
|
736
733
|
const res = await __classPrivateFieldGet(this, _SeedlessOnboardingController_refreshJWTToken, "f").call(this, {
|
|
737
734
|
connection: this.state.authConnection,
|
|
738
735
|
refreshToken,
|
|
@@ -752,6 +749,7 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
|
|
|
752
749
|
groupedAuthConnectionId: this.state.groupedAuthConnectionId,
|
|
753
750
|
userId: this.state.userId,
|
|
754
751
|
refreshToken,
|
|
752
|
+
revokeToken,
|
|
755
753
|
skipLock: true,
|
|
756
754
|
});
|
|
757
755
|
}
|
|
@@ -889,9 +887,6 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
|
|
|
889
887
|
try {
|
|
890
888
|
__classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
|
|
891
889
|
const { accessToken } = this.state;
|
|
892
|
-
if (!accessToken) {
|
|
893
|
-
return true; // Consider missing token as expired
|
|
894
|
-
}
|
|
895
890
|
const decodedToken = (0, utils_3.decodeJWTToken)(accessToken);
|
|
896
891
|
return decodedToken.exp < Math.floor(Date.now() / 1000);
|
|
897
892
|
}
|
|
@@ -941,30 +936,6 @@ async function _SeedlessOnboardingController_submitGlobalPassword({ targetAuthPu
|
|
|
941
936
|
}
|
|
942
937
|
throw errors_1.PasswordSyncError.getInstance(error);
|
|
943
938
|
}
|
|
944
|
-
}, _SeedlessOnboardingController_getAccessToken =
|
|
945
|
-
/**
|
|
946
|
-
* Get the access token from the state or the vault.
|
|
947
|
-
* If the access token is not in the state, it will be retrieved from the vault by decrypting it with the password.
|
|
948
|
-
*
|
|
949
|
-
* If both the access token and the vault are not available, an error will be thrown.
|
|
950
|
-
*
|
|
951
|
-
* @param password - The optional password to unlock the vault. If not provided, the access token will be retrieved from the vault.
|
|
952
|
-
* @returns The access token.
|
|
953
|
-
*/
|
|
954
|
-
async function _SeedlessOnboardingController_getAccessToken(password) {
|
|
955
|
-
const { accessToken, vault } = this.state;
|
|
956
|
-
if (accessToken) {
|
|
957
|
-
// if the access token is in the state, return it
|
|
958
|
-
return accessToken;
|
|
959
|
-
}
|
|
960
|
-
// otherwise, check the vault availability and decrypt the access token from the vault
|
|
961
|
-
if (!vault) {
|
|
962
|
-
throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.InvalidAccessToken);
|
|
963
|
-
}
|
|
964
|
-
const { vaultData } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_decryptAndParseVaultData).call(this, {
|
|
965
|
-
password,
|
|
966
|
-
});
|
|
967
|
-
return vaultData.accessToken;
|
|
968
939
|
}, _SeedlessOnboardingController_setUnlocked = function _SeedlessOnboardingController_setUnlocked() {
|
|
969
940
|
__classPrivateFieldSet(this, _SeedlessOnboardingController_isUnlocked, true, "f");
|
|
970
941
|
}, _SeedlessOnboardingController_persistOprfKey =
|
|
@@ -1053,7 +1024,7 @@ async function _SeedlessOnboardingController_loadSeedlessEncryptionKey(encKey) {
|
|
|
1053
1024
|
* @throws RecoveryError - If failed to recover the encryption key.
|
|
1054
1025
|
*/
|
|
1055
1026
|
async function _SeedlessOnboardingController_recoverEncKey(password) {
|
|
1056
|
-
|
|
1027
|
+
(0, assertions_1.assertIsAuthUserInfoValid)(this.state);
|
|
1057
1028
|
const { nodeAuthTokens, authConnectionId, groupedAuthConnectionId, userId, } = this.state;
|
|
1058
1029
|
try {
|
|
1059
1030
|
const recoverEncKeyResult = await this.toprfClient.recoverEncKey({
|
|
@@ -1344,11 +1315,7 @@ async function _SeedlessOnboardingController_withPersistedSecretMetadataBackupsS
|
|
|
1344
1315
|
*/
|
|
1345
1316
|
async function _SeedlessOnboardingController_createNewVaultWithAuthData({ password, rawToprfEncryptionKey, rawToprfPwEncryptionKey, rawToprfAuthKeyPair, }) {
|
|
1346
1317
|
__classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
|
|
1347
|
-
const { revokeToken } = this.state;
|
|
1348
|
-
if (!revokeToken) {
|
|
1349
|
-
throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.InvalidRevokeToken);
|
|
1350
|
-
}
|
|
1351
|
-
const accessToken = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_getAccessToken).call(this, password);
|
|
1318
|
+
const { revokeToken, accessToken } = this.state;
|
|
1352
1319
|
const vaultData = {
|
|
1353
1320
|
toprfAuthKeyPair: rawToprfAuthKeyPair,
|
|
1354
1321
|
toprfEncryptionKey: rawToprfEncryptionKey,
|