UNPKG

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