/* * Copyright (C) Sapphirecode - All Rights Reserved * This file is part of Auth-Server-Helper which is released under MIT. * See file 'LICENSE' for full license details. * Created by Timo Hocker , December 2020 */ import { create_salt } from '@sapphirecode/crypto-helper'; class KeyStore { private _keys: Record = {}; public get_key (iat: number, valid_for = 0): string { const key = Math.floor (iat / 60) .toFixed (0); if (typeof this._keys[key] === 'string') return this._keys[key]; if (valid_for !== 0) { if ((iat + valid_for) * 1000 < (new Date) .getTime ()) throw new Error ('cannot create already expired keys'); this._keys[key] = create_salt (); setTimeout (() => { delete this._keys[key]; }, (valid_for + 5) * 1000); return this._keys[key]; } throw new Error ('key could not be found'); } } const ks: KeyStore = (new KeyStore); export default ks;