@nomicfoundation/hardhat-keystore
Version:
A module for managing keystore files that store a map from IDs to encrypted string values.
50 lines • 2.34 kB
JavaScript
import { deriveMasterKeyFromKeystore } from "../keystores/encryption.js";
import { getPasswordHandlers } from "../keystores/password.js";
import { UserDisplayMessages } from "../ui/user-display-messages.js";
import { setupKeystoreLoaderFrom } from "../utils/setup-keystore-loader-from.js";
import { validateKey } from "../utils/validate-key.js";
const taskRename = async (args, hre) => {
const keystoreLoader = setupKeystoreLoaderFrom(hre, args.dev);
await rename(args, keystoreLoader, hre.interruptions.requestSecretInput.bind(hre.interruptions));
};
export const rename = async ({ dev, force, oldKey, newKey }, keystoreLoader, requestSecretInput, consoleLog = console.log) => {
if (!(await validateKey(oldKey))) {
consoleLog(UserDisplayMessages.displayInvalidKeyErrorMessage(oldKey));
process.exitCode = 1;
return;
}
if (!(await validateKey(newKey))) {
consoleLog(UserDisplayMessages.displayInvalidKeyErrorMessage(newKey));
process.exitCode = 1;
return;
}
if (!(await keystoreLoader.isKeystoreInitialized())) {
consoleLog(UserDisplayMessages.displayNoKeystoreSetErrorMessage(dev));
process.exitCode = 1;
return;
}
const keystore = await keystoreLoader.loadKeystore();
const { askPassword } = getPasswordHandlers(requestSecretInput, consoleLog, dev, keystoreLoader.getKeystoreDevPasswordFilePath());
const password = await askPassword();
const masterKey = deriveMasterKeyFromKeystore({
encryptedKeystore: keystore.toJSON(),
password,
});
if (!(await keystore.hasKey(oldKey, masterKey))) {
consoleLog(UserDisplayMessages.displayKeyNotFoundErrorMessage(oldKey, dev));
process.exitCode = 1;
return;
}
if (!force && (await keystore.hasKey(newKey, masterKey))) {
consoleLog(UserDisplayMessages.displayKeyAlreadyExistsWarning(newKey, dev));
process.exitCode = 1;
return;
}
const value = await keystore.readValue(oldKey, masterKey);
await keystore.addNewValue(newKey, value, masterKey);
await keystore.removeKey(oldKey, masterKey);
await keystoreLoader.saveKeystoreToFile();
consoleLog(UserDisplayMessages.displayKeyRenamedInfoMessage(oldKey, newKey, dev));
};
export default taskRename;
//# sourceMappingURL=rename.js.map