@bryopsida/key-store
Version:
A extendable TypeScript Node.JS library that provides a basic key store for data encryption keys
36 lines • 1.38 kB
JavaScript
import { writeFile, mkdir, access, readFile, unlink, rm } from 'fs/promises';
import { resolveHome } from './resolve.js';
import { BaseKeyStore, } from './baseKeyStore';
export class FileKeyStore extends BaseKeyStore {
keyStorePath;
constructor(keyStorePath, keyStorePasswordProvider, keyStoreSaltProvider, keyStoreContextProvider) {
super(keyStorePasswordProvider, keyStoreSaltProvider, keyStoreContextProvider);
this.keyStorePath = resolveHome(keyStorePath);
}
hasKeyInSlot(keySlot) {
return access(this.keyStorePath + '/' + keySlot)
.then(() => true)
.catch(() => false);
}
async createKeyStoreDirIfNotExists() {
await access(this.keyStorePath).catch(async () => {
await mkdir(this.keyStorePath, { recursive: true });
});
}
async putKeyInSlot(keySlot, key) {
await this.createKeyStoreDirIfNotExists();
await writeFile(this.keyStorePath + '/' + keySlot, key);
}
async getKeyInSlot(keySlot) {
return readFile(this.keyStorePath + '/' + keySlot);
}
async deleteKeySlot(keySlot) {
await unlink(this.keyStorePath + '/' + keySlot);
}
async clearKeySlots() {
await rm(this.keyStorePath, { recursive: true, force: true, maxRetries: 3 });
}
async close() {
}
}
//# sourceMappingURL=fileKeyStore.js.map