@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
JavaScript
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