@metamask-previews/keyring-controller 19.0.2-preview-e218ba33 → 19.0.2-preview-9e831370
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.
|
@@ -36,7 +36,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
36
36
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
37
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
38
|
};
|
|
39
|
-
var _KeyringController_instances, _KeyringController_controllerOperationMutex, _KeyringController_vaultOperationMutex, _KeyringController_keyringBuilders, _KeyringController_keyrings, _KeyringController_unsupportedKeyrings, _KeyringController_password, _KeyringController_encryptor, _KeyringController_cacheEncryptionKey, _KeyringController_qrKeyringStateListener, _KeyringController_registerMessageHandlers, _KeyringController_getKeyringBuilderForType, _KeyringController_addQRKeyring, _KeyringController_subscribeToQRKeyringEvents, _KeyringController_unsubscribeFromQRKeyringsEvents, _KeyringController_createNewVaultWithKeyring,
|
|
39
|
+
var _KeyringController_instances, _KeyringController_controllerOperationMutex, _KeyringController_vaultOperationMutex, _KeyringController_keyringBuilders, _KeyringController_keyrings, _KeyringController_unsupportedKeyrings, _KeyringController_password, _KeyringController_encryptor, _KeyringController_cacheEncryptionKey, _KeyringController_qrKeyringStateListener, _KeyringController_registerMessageHandlers, _KeyringController_getKeyringBuilderForType, _KeyringController_addQRKeyring, _KeyringController_subscribeToQRKeyringEvents, _KeyringController_unsubscribeFromQRKeyringsEvents, _KeyringController_createNewVaultWithKeyring, _KeyringController_getUpdatedKeyrings, _KeyringController_getSerializedKeyrings, _KeyringController_restoreSerializedKeyrings, _KeyringController_unlockKeyrings, _KeyringController_updateVault, _KeyringController_getAccountsFromKeyrings, _KeyringController_createKeyringWithFirstAccount, _KeyringController_newKeyring, _KeyringController_clearKeyrings, _KeyringController_restoreKeyring, _KeyringController_destroyKeyring, _KeyringController_removeEmptyKeyrings, _KeyringController_checkForDuplicate, _KeyringController_setUnlocked, _KeyringController_persistOrRollback, _KeyringController_withRollback, _KeyringController_assertControllerMutexIsLocked, _KeyringController_withControllerLock, _KeyringController_withVaultLock;
|
|
40
40
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
41
|
exports.KeyringController = exports.getDefaultKeyringState = exports.keyringBuilderFactory = exports.SignTypedDataVersion = exports.AccountImportStrategy = exports.isCustodyKeyring = exports.KeyringTypes = void 0;
|
|
42
42
|
const util_1 = require("@ethereumjs/util");
|
|
@@ -322,7 +322,7 @@ class KeyringController extends base_controller_1.BaseController {
|
|
|
322
322
|
return existingAccount;
|
|
323
323
|
}
|
|
324
324
|
const [addedAccountAddress] = await primaryKeyring.addAccounts(1);
|
|
325
|
-
await
|
|
325
|
+
await this.verifySeedPhrase();
|
|
326
326
|
return addedAccountAddress;
|
|
327
327
|
});
|
|
328
328
|
}
|
|
@@ -840,7 +840,39 @@ class KeyringController extends base_controller_1.BaseController {
|
|
|
840
840
|
* @returns Promise resolving to the seed phrase as Uint8Array.
|
|
841
841
|
*/
|
|
842
842
|
async verifySeedPhrase() {
|
|
843
|
-
|
|
843
|
+
const primaryKeyring = this.getKeyringsByType(KeyringTypes.hd)[0];
|
|
844
|
+
if (!primaryKeyring) {
|
|
845
|
+
throw new Error('No HD keyring found.');
|
|
846
|
+
}
|
|
847
|
+
assertHasUint8ArrayMnemonic(primaryKeyring);
|
|
848
|
+
const seedWords = primaryKeyring.mnemonic;
|
|
849
|
+
const accounts = await primaryKeyring.getAccounts();
|
|
850
|
+
/* istanbul ignore if */
|
|
851
|
+
if (accounts.length === 0) {
|
|
852
|
+
throw new Error('Cannot verify an empty keyring.');
|
|
853
|
+
}
|
|
854
|
+
// The HD Keyring Builder is a default keyring builder
|
|
855
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
856
|
+
const hdKeyringBuilder = __classPrivateFieldGet(this, _KeyringController_instances, "m", _KeyringController_getKeyringBuilderForType).call(this, KeyringTypes.hd);
|
|
857
|
+
const hdKeyring = hdKeyringBuilder();
|
|
858
|
+
// @ts-expect-error @metamask/eth-hd-keyring correctly handles
|
|
859
|
+
// Uint8Array seed phrases in the `deserialize` method.
|
|
860
|
+
await hdKeyring.deserialize({
|
|
861
|
+
mnemonic: seedWords,
|
|
862
|
+
numberOfAccounts: accounts.length,
|
|
863
|
+
});
|
|
864
|
+
const testAccounts = await hdKeyring.getAccounts();
|
|
865
|
+
/* istanbul ignore if */
|
|
866
|
+
if (testAccounts.length !== accounts.length) {
|
|
867
|
+
throw new Error('Seed phrase imported incorrect number of accounts.');
|
|
868
|
+
}
|
|
869
|
+
testAccounts.forEach((account, i) => {
|
|
870
|
+
/* istanbul ignore if */
|
|
871
|
+
if (account.toLowerCase() !== accounts[i].toLowerCase()) {
|
|
872
|
+
throw new Error('Seed phrase imported different accounts.');
|
|
873
|
+
}
|
|
874
|
+
});
|
|
875
|
+
return seedWords;
|
|
844
876
|
}
|
|
845
877
|
async withKeyring(selector, operation, options = {
|
|
846
878
|
createIfMissing: false,
|
|
@@ -1124,47 +1156,6 @@ async function _KeyringController_createNewVaultWithKeyring(password, keyring) {
|
|
|
1124
1156
|
await __classPrivateFieldGet(this, _KeyringController_instances, "m", _KeyringController_clearKeyrings).call(this);
|
|
1125
1157
|
await __classPrivateFieldGet(this, _KeyringController_instances, "m", _KeyringController_createKeyringWithFirstAccount).call(this, keyring.type, keyring.opts);
|
|
1126
1158
|
__classPrivateFieldGet(this, _KeyringController_instances, "m", _KeyringController_setUnlocked).call(this);
|
|
1127
|
-
}, _KeyringController_verifySeedPhrase =
|
|
1128
|
-
/**
|
|
1129
|
-
* Internal non-exclusive method to verify the seed phrase.
|
|
1130
|
-
*
|
|
1131
|
-
* @returns A promise resolving to the seed phrase as Uint8Array.
|
|
1132
|
-
*/
|
|
1133
|
-
async function _KeyringController_verifySeedPhrase() {
|
|
1134
|
-
__classPrivateFieldGet(this, _KeyringController_instances, "m", _KeyringController_assertControllerMutexIsLocked).call(this);
|
|
1135
|
-
const primaryKeyring = this.getKeyringsByType(KeyringTypes.hd)[0];
|
|
1136
|
-
if (!primaryKeyring) {
|
|
1137
|
-
throw new Error('No HD keyring found.');
|
|
1138
|
-
}
|
|
1139
|
-
assertHasUint8ArrayMnemonic(primaryKeyring);
|
|
1140
|
-
const seedWords = primaryKeyring.mnemonic;
|
|
1141
|
-
const accounts = await primaryKeyring.getAccounts();
|
|
1142
|
-
/* istanbul ignore if */
|
|
1143
|
-
if (accounts.length === 0) {
|
|
1144
|
-
throw new Error('Cannot verify an empty keyring.');
|
|
1145
|
-
}
|
|
1146
|
-
// The HD Keyring Builder is a default keyring builder
|
|
1147
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
1148
|
-
const hdKeyringBuilder = __classPrivateFieldGet(this, _KeyringController_instances, "m", _KeyringController_getKeyringBuilderForType).call(this, KeyringTypes.hd);
|
|
1149
|
-
const hdKeyring = hdKeyringBuilder();
|
|
1150
|
-
// @ts-expect-error @metamask/eth-hd-keyring correctly handles
|
|
1151
|
-
// Uint8Array seed phrases in the `deserialize` method.
|
|
1152
|
-
await hdKeyring.deserialize({
|
|
1153
|
-
mnemonic: seedWords,
|
|
1154
|
-
numberOfAccounts: accounts.length,
|
|
1155
|
-
});
|
|
1156
|
-
const testAccounts = await hdKeyring.getAccounts();
|
|
1157
|
-
/* istanbul ignore if */
|
|
1158
|
-
if (testAccounts.length !== accounts.length) {
|
|
1159
|
-
throw new Error('Seed phrase imported incorrect number of accounts.');
|
|
1160
|
-
}
|
|
1161
|
-
testAccounts.forEach((account, i) => {
|
|
1162
|
-
/* istanbul ignore if */
|
|
1163
|
-
if (account.toLowerCase() !== accounts[i].toLowerCase()) {
|
|
1164
|
-
throw new Error('Seed phrase imported different accounts.');
|
|
1165
|
-
}
|
|
1166
|
-
});
|
|
1167
|
-
return seedWords;
|
|
1168
1159
|
}, _KeyringController_getUpdatedKeyrings =
|
|
1169
1160
|
/**
|
|
1170
1161
|
* Get the updated array of each keyring's type and
|