UNPKG

@nomicfoundation/hardhat-keystore

Version:

A module for managing keystore files that store a map from IDs to encrypted string values.

70 lines (55 loc) 1.93 kB
import type { KeystoreLoader } from "../types.js"; import type { HardhatRuntimeEnvironment } from "hardhat/types/hre"; import type { NewTaskActionFunction } from "hardhat/types/tasks"; import { deriveMasterKeyFromKeystore } from "../keystores/encryption.js"; import { askPassword } from "../keystores/password.js"; import { UserDisplayMessages } from "../ui/user-display-messages.js"; import { setupKeystoreLoaderFrom } from "../utils/setup-keystore-loader-from.js"; interface TaskDeleteArguments { key: string; force: boolean; } const taskDelete: NewTaskActionFunction<TaskDeleteArguments> = async ( setArgs, hre: HardhatRuntimeEnvironment, ): Promise<void> => { const keystoreLoader = setupKeystoreLoaderFrom(hre); await remove( setArgs, keystoreLoader, hre.interruptions.requestSecretInput.bind(hre.interruptions), ); }; export const remove = async ( { key, force }: TaskDeleteArguments, keystoreLoader: KeystoreLoader, requestSecretInput: ( interruptor: string, inputDescription: string, ) => Promise<string>, consoleLog: (text: string) => void = console.log, ): Promise<void> => { if (!(await keystoreLoader.isKeystoreInitialized())) { consoleLog(UserDisplayMessages.displayNoKeystoreSetErrorMessage()); process.exitCode = 1; return; } const keystore = await keystoreLoader.loadKeystore(); const password = await askPassword(requestSecretInput); const masterKey = deriveMasterKeyFromKeystore({ encryptedKeystore: keystore.toJSON(), password, }); if (!(await keystore.hasKey(key, masterKey))) { if (force) { return; } consoleLog(UserDisplayMessages.displayKeyNotFoundErrorMessage(key)); process.exitCode = 1; return; } await keystore.removeKey(key, masterKey); await keystoreLoader.saveKeystoreToFile(); consoleLog(UserDisplayMessages.displayKeyRemovedInfoMessage(key)); }; export default taskDelete;