UNPKG

@nomicfoundation/hardhat-keystore

Version:

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

49 lines 1.77 kB
import { assertHardhatInvariant } from "@nomicfoundation/hardhat-errors"; import { addSecretToKeystore, decryptSecret, doesKeyExist, removeSecretFromKeystore, } from "./encryption.js"; export class Keystore { #keystoreData; constructor(keystoreData) { this.#keystoreData = keystoreData; } toJSON() { return this.#keystoreData; } async listUnverifiedKeys() { // In this scenario the keystore is not validated for integrity, so the returned keys might have been tampered with. // This is acceptable if the keys are only listed for display purposes. // This risk is considered acceptable for this use case. return Object.keys(this.#keystoreData.secrets); } async hasKey(key, masterKey) { return doesKeyExist({ masterKey, encryptedKeystore: this.#keystoreData, key, }); } async readValue(key, masterKey) { assertHardhatInvariant(key in this.#keystoreData.secrets, "Unknown key should never be read"); return decryptSecret({ masterKey, encryptedKeystore: this.#keystoreData, key, }); } async removeKey(key, masterKey) { assertHardhatInvariant(key in this.#keystoreData.secrets, "Unknown key should never be removed"); this.#keystoreData = removeSecretFromKeystore({ masterKey, encryptedKeystore: this.#keystoreData, keyToRemove: key, }); } async addNewValue(key, value, masterKey) { this.#keystoreData = addSecretToKeystore({ masterKey, encryptedKeystore: this.#keystoreData, key, value, }); } } //# sourceMappingURL=keystore.js.map