@bryopsida/key-store
Version:
A extendable TypeScript Node.JS library that provides a basic key store for data encryption keys
37 lines (36 loc) • 2.09 kB
TypeScript
/// <reference types="node" />
/// <reference types="node" />
import { BinaryLike } from 'crypto';
import { IKeyStore } from './dataEncryption.js';
export interface IKeyStoreValueProvider {
(): Promise<Buffer>;
}
export interface IKeyStoreContextProvider {
(id: string): Promise<Buffer>;
}
export declare abstract class BaseKeyStore implements IKeyStore {
protected readonly keyStorePasswordProvider: IKeyStoreValueProvider;
protected readonly keyStoreSaltProvider: IKeyStoreValueProvider;
protected readonly keyStoreContextProvider: IKeyStoreContextProvider;
constructor(keyStorePasswordProvider: IKeyStoreValueProvider, keyStoreSaltProvider: IKeyStoreValueProvider, keyStoreContextProvider: IKeyStoreContextProvider);
hasSealedRootKey(rootKeyId: string): Promise<boolean>;
saveSealedRootKey(rootKeyId: string, key: Buffer): Promise<void>;
saveSealedDataEncKey(keyId: string, key: Buffer): Promise<void>;
hasSealedDataEncKey(keyId: string): Promise<boolean>;
fetchSealedRootKey(rootKeyId: string): Promise<Buffer>;
fetchSealedDataEncKey(keyId: string): Promise<Buffer>;
destroySealedRootKey(rootKeyId: string): Promise<void>;
destroySealedDataEncKey(keyId: string): Promise<void>;
destroyAllKeys(): Promise<void>;
protected getScryptKey(password: BinaryLike, salt: BinaryLike, context: Buffer): Promise<Buffer>;
protected getKeySlot(type: string, keyId: string, salt: Buffer): Promise<string>;
protected saveSealedKey(type: string, keyId: string, key: Buffer): Promise<void>;
protected fetchSealedKey(type: string, keyId: string): Promise<Buffer>;
protected deleteSealedKey(type: string, keyId: string): Promise<void>;
protected abstract putKeyInSlot(keySlot: string, key: Buffer): Promise<void>;
protected abstract getKeyInSlot(keySlot: string): Promise<Buffer>;
protected abstract hasKeyInSlot(keySlot: string): Promise<boolean>;
protected abstract deleteKeySlot(keySlot: string): Promise<void>;
protected abstract clearKeySlots(): Promise<void>;
abstract close(): Promise<void>;
}