@metamask-previews/seedless-onboarding-controller 6.0.0-preview-cc7e30d0 → 6.0.0-preview-5460dce
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 -8
- package/dist/SeedlessOnboardingController.cjs +31 -64
- 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 +32 -65
- package/dist/SeedlessOnboardingController.mjs.map +1 -1
- package/dist/assertions.cjs +27 -11
- 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 +25 -10
- package/dist/assertions.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +9 -1
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +9 -1
- 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,14 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
-
### Changed
|
|
11
|
-
|
|
12
|
-
- Revert `revokeToken` value as optional in `authenticate` method. ([#7012](https://github.com/MetaMask/core/pull/7012))
|
|
13
|
-
|
|
14
|
-
### Fixed
|
|
15
|
-
|
|
16
|
-
- Fixed `InvalidRevokeToken` issue in `refreshAuthTokens` method. ([#7012](https://github.com/MetaMask/core/pull/7012))
|
|
17
|
-
|
|
18
10
|
## [6.0.0]
|
|
19
11
|
|
|
20
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, _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,
|
|
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
|
}
|
|
@@ -776,6 +774,9 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
|
|
|
776
774
|
password,
|
|
777
775
|
encryptionKey: vaultEncryptionKey,
|
|
778
776
|
});
|
|
777
|
+
if (!revokeToken) {
|
|
778
|
+
throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.InvalidRevokeToken);
|
|
779
|
+
}
|
|
779
780
|
const { newRevokeToken, newRefreshToken } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_renewRefreshToken, "f").call(this, {
|
|
780
781
|
connection: this.state.authConnection,
|
|
781
782
|
revokeToken,
|
|
@@ -886,9 +887,6 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
|
|
|
886
887
|
try {
|
|
887
888
|
__classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
|
|
888
889
|
const { accessToken } = this.state;
|
|
889
|
-
if (!accessToken) {
|
|
890
|
-
return true; // Consider missing token as expired
|
|
891
|
-
}
|
|
892
890
|
const decodedToken = (0, utils_3.decodeJWTToken)(accessToken);
|
|
893
891
|
return decodedToken.exp < Math.floor(Date.now() / 1000);
|
|
894
892
|
}
|
|
@@ -1026,7 +1024,7 @@ async function _SeedlessOnboardingController_loadSeedlessEncryptionKey(encKey) {
|
|
|
1026
1024
|
* @throws RecoveryError - If failed to recover the encryption key.
|
|
1027
1025
|
*/
|
|
1028
1026
|
async function _SeedlessOnboardingController_recoverEncKey(password) {
|
|
1029
|
-
|
|
1027
|
+
(0, assertions_1.assertIsAuthUserInfoValid)(this.state);
|
|
1030
1028
|
const { nodeAuthTokens, authConnectionId, groupedAuthConnectionId, userId, } = this.state;
|
|
1031
1029
|
try {
|
|
1032
1030
|
const recoverEncKeyResult = await this.toprfClient.recoverEncKey({
|
|
@@ -1316,31 +1314,25 @@ async function _SeedlessOnboardingController_withPersistedSecretMetadataBackupsS
|
|
|
1316
1314
|
* @param params.rawToprfAuthKeyPair - The authentication key pair for Toprf operations.
|
|
1317
1315
|
*/
|
|
1318
1316
|
async function _SeedlessOnboardingController_createNewVaultWithAuthData({ password, rawToprfEncryptionKey, rawToprfPwEncryptionKey, rawToprfAuthKeyPair, }) {
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
__classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_setUnlocked).call(this);
|
|
1339
|
-
}
|
|
1340
|
-
catch (error) {
|
|
1341
|
-
log('Error creating new vault with auth data', error, JSON.stringify(this.state));
|
|
1342
|
-
throw error;
|
|
1343
|
-
}
|
|
1317
|
+
__classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
|
|
1318
|
+
const { revokeToken, accessToken } = this.state;
|
|
1319
|
+
const vaultData = {
|
|
1320
|
+
toprfAuthKeyPair: rawToprfAuthKeyPair,
|
|
1321
|
+
toprfEncryptionKey: rawToprfEncryptionKey,
|
|
1322
|
+
toprfPwEncryptionKey: rawToprfPwEncryptionKey,
|
|
1323
|
+
revokeToken,
|
|
1324
|
+
accessToken,
|
|
1325
|
+
};
|
|
1326
|
+
await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_updateVault).call(this, {
|
|
1327
|
+
password,
|
|
1328
|
+
vaultData,
|
|
1329
|
+
pwEncKey: rawToprfPwEncryptionKey,
|
|
1330
|
+
});
|
|
1331
|
+
// update the authPubKey in the state
|
|
1332
|
+
__classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_persistAuthPubKey).call(this, {
|
|
1333
|
+
authPubKey: rawToprfAuthKeyPair.pk,
|
|
1334
|
+
});
|
|
1335
|
+
__classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_setUnlocked).call(this);
|
|
1344
1336
|
}, _SeedlessOnboardingController_updateVault =
|
|
1345
1337
|
/**
|
|
1346
1338
|
* Encrypt and update the vault with the given authentication data.
|
|
@@ -1371,31 +1363,6 @@ async function _SeedlessOnboardingController_updateVault({ password, vaultData,
|
|
|
1371
1363
|
state.encryptedSeedlessEncryptionKey = (0, utils_1.bytesToBase64)(encryptedKey);
|
|
1372
1364
|
});
|
|
1373
1365
|
});
|
|
1374
|
-
}, _SeedlessOnboardingController_getAccessTokenAndRevokeToken =
|
|
1375
|
-
/**
|
|
1376
|
-
* Get the access token and revoke token from the state or the vault.
|
|
1377
|
-
*
|
|
1378
|
-
* @param password - The password to decrypt the vault.
|
|
1379
|
-
* @returns The access token and revoke token.
|
|
1380
|
-
*/
|
|
1381
|
-
async function _SeedlessOnboardingController_getAccessTokenAndRevokeToken(password) {
|
|
1382
|
-
let { accessToken, revokeToken } = this.state;
|
|
1383
|
-
if (accessToken && revokeToken) {
|
|
1384
|
-
return { accessToken, revokeToken };
|
|
1385
|
-
}
|
|
1386
|
-
if (this.state.vault) {
|
|
1387
|
-
// if the access token or revoke token is not available in the state, decrypt the vault and get the access token and revoke token from the vault
|
|
1388
|
-
const { vaultData } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_decryptAndParseVaultData).call(this, { password });
|
|
1389
|
-
accessToken = accessToken || vaultData.accessToken;
|
|
1390
|
-
revokeToken = revokeToken || vaultData.revokeToken;
|
|
1391
|
-
}
|
|
1392
|
-
if (!accessToken) {
|
|
1393
|
-
throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.InvalidAccessToken);
|
|
1394
|
-
}
|
|
1395
|
-
if (!revokeToken) {
|
|
1396
|
-
throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.InvalidRevokeToken);
|
|
1397
|
-
}
|
|
1398
|
-
return { accessToken, revokeToken };
|
|
1399
1366
|
}, _SeedlessOnboardingController_withControllerLock =
|
|
1400
1367
|
/**
|
|
1401
1368
|
* Lock the controller mutex before executing the given function,
|