@metamask-previews/seedless-onboarding-controller 2.5.0-preview-bfa447b → 2.5.0-preview-a850cd0b
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/dist/SeedlessOnboardingController.cjs +54 -50
- 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 +54 -50
- package/dist/SeedlessOnboardingController.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -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_isUnlocked, _SeedlessOnboardingController_passwordOutdatedCacheTTL, _SeedlessOnboardingController_submitGlobalPassword, _SeedlessOnboardingController_getAccessToken, _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_withPersistedSecretMetadataBackupsState, _SeedlessOnboardingController_filterDupesAndUpdateSocialBackupsMetadata, _SeedlessOnboardingController_createNewVaultWithAuthData, _SeedlessOnboardingController_updateVault, _SeedlessOnboardingController_withControllerLock, _SeedlessOnboardingController_withVaultLock, _SeedlessOnboardingController_serializeKeyData, _SeedlessOnboardingController_parseVaultData, _SeedlessOnboardingController_assertIsUnlocked, _SeedlessOnboardingController_assertIsAuthenticatedUser, _SeedlessOnboardingController_assertIsSRPBackedUpUser, _SeedlessOnboardingController_assertPasswordInSync, _SeedlessOnboardingController_resetPasswordOutdatedCache, _SeedlessOnboardingController_isTokenExpiredError, _SeedlessOnboardingController_isMaxKeyChainLengthError, _SeedlessOnboardingController_executeWithTokenRefresh;
|
|
13
|
+
var _SeedlessOnboardingController_instances, _SeedlessOnboardingController_vaultEncryptor, _SeedlessOnboardingController_controllerOperationMutex, _SeedlessOnboardingController_vaultOperationMutex, _SeedlessOnboardingController_refreshJWTToken, _SeedlessOnboardingController_revokeRefreshToken, _SeedlessOnboardingController_isUnlocked, _SeedlessOnboardingController_passwordOutdatedCacheTTL, _SeedlessOnboardingController_submitGlobalPassword, _SeedlessOnboardingController_getAccessToken, _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_serializeKeyData, _SeedlessOnboardingController_parseVaultData, _SeedlessOnboardingController_assertIsUnlocked, _SeedlessOnboardingController_assertIsAuthenticatedUser, _SeedlessOnboardingController_assertIsSRPBackedUpUser, _SeedlessOnboardingController_assertPasswordInSync, _SeedlessOnboardingController_resetPasswordOutdatedCache, _SeedlessOnboardingController_isTokenExpiredError, _SeedlessOnboardingController_isMaxKeyChainLengthError, _SeedlessOnboardingController_executeWithTokenRefresh;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.SeedlessOnboardingController = exports.getDefaultSeedlessOnboardingControllerState = void 0;
|
|
16
16
|
const auth_network_utils_1 = require("@metamask/auth-network-utils");
|
|
@@ -707,11 +707,6 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
|
|
|
707
707
|
rawToprfEncryptionKey,
|
|
708
708
|
rawToprfPwEncryptionKey,
|
|
709
709
|
rawToprfAuthKeyPair,
|
|
710
|
-
revokeToken: newRevokeToken,
|
|
711
|
-
// when revoke refresh token, the vault is already unlocked
|
|
712
|
-
// and also, this method is supposed to be called asynchronously
|
|
713
|
-
// so we don't need to set the controller as unlocked
|
|
714
|
-
shouldSetUnlocked: false,
|
|
715
710
|
});
|
|
716
711
|
}
|
|
717
712
|
});
|
|
@@ -828,8 +823,8 @@ async function _SeedlessOnboardingController_getAccessToken(password) {
|
|
|
828
823
|
if (!vault) {
|
|
829
824
|
throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.InvalidAccessToken);
|
|
830
825
|
}
|
|
831
|
-
const {
|
|
832
|
-
return
|
|
826
|
+
const { parsedVaultData } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_decryptAndParseVaultData).call(this, password);
|
|
827
|
+
return parsedVaultData.accessToken;
|
|
833
828
|
}, _SeedlessOnboardingController_setUnlocked = function _SeedlessOnboardingController_setUnlocked() {
|
|
834
829
|
__classPrivateFieldSet(this, _SeedlessOnboardingController_isUnlocked, true, "f");
|
|
835
830
|
}, _SeedlessOnboardingController_persistOprfKey =
|
|
@@ -1078,42 +1073,11 @@ async function _SeedlessOnboardingController_encryptAndStoreSecretData(params) {
|
|
|
1078
1073
|
*/
|
|
1079
1074
|
async function _SeedlessOnboardingController_unlockVaultAndGetVaultData(password, encryptionKey) {
|
|
1080
1075
|
return __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_withVaultLock).call(this, async () => {
|
|
1081
|
-
|
|
1082
|
-
const {
|
|
1083
|
-
if (!encryptedVault) {
|
|
1084
|
-
throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.VaultError);
|
|
1085
|
-
}
|
|
1086
|
-
if (encryptionKey) {
|
|
1087
|
-
vaultEncryptionKey = encryptionKey;
|
|
1088
|
-
}
|
|
1089
|
-
let decryptedVaultData;
|
|
1090
|
-
const updatedState = {};
|
|
1091
|
-
if (password) {
|
|
1092
|
-
assertIsValidPassword(password);
|
|
1093
|
-
// Note that vault decryption using the password is a very costly operation as it involves deriving the encryption key
|
|
1094
|
-
// from the password using an intentionally slow key derivation function.
|
|
1095
|
-
// We should make sure that we only call it very intentionally.
|
|
1096
|
-
const result = await __classPrivateFieldGet(this, _SeedlessOnboardingController_vaultEncryptor, "f").decryptWithDetail(password, encryptedVault);
|
|
1097
|
-
decryptedVaultData = result.vault;
|
|
1098
|
-
updatedState.vaultEncryptionKey = result.exportedKeyString;
|
|
1099
|
-
updatedState.vaultEncryptionSalt = result.salt;
|
|
1100
|
-
}
|
|
1101
|
-
else {
|
|
1102
|
-
assertIsVaultEncryptionKeyDefined(vaultEncryptionKey);
|
|
1103
|
-
const parsedEncryptedVault = JSON.parse(encryptedVault);
|
|
1104
|
-
if (vaultEncryptionSalt &&
|
|
1105
|
-
vaultEncryptionSalt !== parsedEncryptedVault.salt) {
|
|
1106
|
-
throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.ExpiredCredentials);
|
|
1107
|
-
}
|
|
1108
|
-
const key = await __classPrivateFieldGet(this, _SeedlessOnboardingController_vaultEncryptor, "f").importKey(vaultEncryptionKey);
|
|
1109
|
-
decryptedVaultData = await __classPrivateFieldGet(this, _SeedlessOnboardingController_vaultEncryptor, "f").decryptWithKey(key, parsedEncryptedVault);
|
|
1110
|
-
updatedState.vaultEncryptionKey = vaultEncryptionKey;
|
|
1111
|
-
updatedState.vaultEncryptionSalt = vaultEncryptionSalt;
|
|
1112
|
-
}
|
|
1113
|
-
const { toprfEncryptionKey, toprfPwEncryptionKey, toprfAuthKeyPair, revokeToken, accessToken, } = __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_parseVaultData).call(this, decryptedVaultData);
|
|
1076
|
+
const { parsedVaultData, vaultEncryptionKey, vaultEncryptionSalt } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_decryptAndParseVaultData).call(this, password, encryptionKey);
|
|
1077
|
+
const { toprfEncryptionKey, toprfPwEncryptionKey, toprfAuthKeyPair, revokeToken, accessToken, } = parsedVaultData;
|
|
1114
1078
|
this.update((state) => {
|
|
1115
|
-
state.vaultEncryptionKey =
|
|
1116
|
-
state.vaultEncryptionSalt =
|
|
1079
|
+
state.vaultEncryptionKey = vaultEncryptionKey;
|
|
1080
|
+
state.vaultEncryptionSalt = vaultEncryptionSalt;
|
|
1117
1081
|
state.revokeToken = revokeToken;
|
|
1118
1082
|
state.accessToken = accessToken;
|
|
1119
1083
|
});
|
|
@@ -1125,6 +1089,50 @@ async function _SeedlessOnboardingController_unlockVaultAndGetVaultData(password
|
|
|
1125
1089
|
accessToken,
|
|
1126
1090
|
};
|
|
1127
1091
|
});
|
|
1092
|
+
}, _SeedlessOnboardingController_decryptAndParseVaultData =
|
|
1093
|
+
/**
|
|
1094
|
+
* Decrypts the vault data and parses it into a usable format.
|
|
1095
|
+
*
|
|
1096
|
+
* @param password - The optional password to decrypt the vault.
|
|
1097
|
+
* @param encryptionKey - The optional encryption key to decrypt the vault.
|
|
1098
|
+
* @returns A promise that resolves to an object containing:
|
|
1099
|
+
*/
|
|
1100
|
+
async function _SeedlessOnboardingController_decryptAndParseVaultData(password, encryptionKey) {
|
|
1101
|
+
let { vaultEncryptionKey, vaultEncryptionSalt } = this.state;
|
|
1102
|
+
const { vault: encryptedVault } = this.state;
|
|
1103
|
+
if (!encryptedVault) {
|
|
1104
|
+
throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.VaultError);
|
|
1105
|
+
}
|
|
1106
|
+
if (encryptionKey) {
|
|
1107
|
+
vaultEncryptionKey = encryptionKey;
|
|
1108
|
+
}
|
|
1109
|
+
let decryptedVaultData;
|
|
1110
|
+
if (password) {
|
|
1111
|
+
assertIsValidPassword(password);
|
|
1112
|
+
// Note that vault decryption using the password is a very costly operation as it involves deriving the encryption key
|
|
1113
|
+
// from the password using an intentionally slow key derivation function.
|
|
1114
|
+
// We should make sure that we only call it very intentionally.
|
|
1115
|
+
const result = await __classPrivateFieldGet(this, _SeedlessOnboardingController_vaultEncryptor, "f").decryptWithDetail(password, encryptedVault);
|
|
1116
|
+
decryptedVaultData = result.vault;
|
|
1117
|
+
vaultEncryptionKey = result.exportedKeyString;
|
|
1118
|
+
vaultEncryptionSalt = result.salt;
|
|
1119
|
+
}
|
|
1120
|
+
else {
|
|
1121
|
+
assertIsVaultEncryptionKeyDefined(vaultEncryptionKey);
|
|
1122
|
+
const parsedEncryptedVault = JSON.parse(encryptedVault);
|
|
1123
|
+
if (vaultEncryptionSalt &&
|
|
1124
|
+
vaultEncryptionSalt !== parsedEncryptedVault.salt) {
|
|
1125
|
+
throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.ExpiredCredentials);
|
|
1126
|
+
}
|
|
1127
|
+
const key = await __classPrivateFieldGet(this, _SeedlessOnboardingController_vaultEncryptor, "f").importKey(vaultEncryptionKey);
|
|
1128
|
+
decryptedVaultData = await __classPrivateFieldGet(this, _SeedlessOnboardingController_vaultEncryptor, "f").decryptWithKey(key, parsedEncryptedVault);
|
|
1129
|
+
}
|
|
1130
|
+
const parsedVaultData = __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_parseVaultData).call(this, decryptedVaultData);
|
|
1131
|
+
return {
|
|
1132
|
+
parsedVaultData,
|
|
1133
|
+
vaultEncryptionKey,
|
|
1134
|
+
vaultEncryptionSalt,
|
|
1135
|
+
};
|
|
1128
1136
|
}, _SeedlessOnboardingController_withPersistedSecretMetadataBackupsState =
|
|
1129
1137
|
/**
|
|
1130
1138
|
* Executes a callback function that creates or restores secret data and persists their hashes in the controller state.
|
|
@@ -1192,13 +1200,11 @@ async function _SeedlessOnboardingController_withPersistedSecretMetadataBackupsS
|
|
|
1192
1200
|
* @param params.rawToprfEncryptionKey - The encryption key to encrypt the vault.
|
|
1193
1201
|
* @param params.rawToprfPwEncryptionKey - The encryption key to encrypt the password.
|
|
1194
1202
|
* @param params.rawToprfAuthKeyPair - The authentication key pair for Toprf operations.
|
|
1195
|
-
* @param params.revokeToken - The optional revoke token.
|
|
1196
|
-
* @param params.shouldSetUnlocked - Whether to set the controller as unlocked. @default true
|
|
1197
1203
|
*/
|
|
1198
|
-
async function _SeedlessOnboardingController_createNewVaultWithAuthData({ password, rawToprfEncryptionKey, rawToprfPwEncryptionKey, rawToprfAuthKeyPair,
|
|
1204
|
+
async function _SeedlessOnboardingController_createNewVaultWithAuthData({ password, rawToprfEncryptionKey, rawToprfPwEncryptionKey, rawToprfAuthKeyPair, }) {
|
|
1199
1205
|
__classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
|
|
1206
|
+
const { revokeToken } = this.state;
|
|
1200
1207
|
const accessToken = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_getAccessToken).call(this, password);
|
|
1201
|
-
const revokeToken = _revokeToken || this.state.revokeToken;
|
|
1202
1208
|
const { toprfEncryptionKey, toprfPwEncryptionKey, toprfAuthKeyPair } = __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_serializeKeyData).call(this, rawToprfEncryptionKey, rawToprfPwEncryptionKey, rawToprfAuthKeyPair);
|
|
1203
1209
|
const serializedVaultData = JSON.stringify({
|
|
1204
1210
|
toprfEncryptionKey,
|
|
@@ -1216,9 +1222,7 @@ async function _SeedlessOnboardingController_createNewVaultWithAuthData({ passwo
|
|
|
1216
1222
|
__classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_persistAuthPubKey).call(this, {
|
|
1217
1223
|
authPubKey: rawToprfAuthKeyPair.pk,
|
|
1218
1224
|
});
|
|
1219
|
-
|
|
1220
|
-
__classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_setUnlocked).call(this);
|
|
1221
|
-
}
|
|
1225
|
+
__classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_setUnlocked).call(this);
|
|
1222
1226
|
}, _SeedlessOnboardingController_updateVault =
|
|
1223
1227
|
/**
|
|
1224
1228
|
* Encrypt and update the vault with the given authentication data.
|