auth-server-helper/lib/KeyStore.ts
Timo Hocker 170eb8a743
Some checks failed
continuous-integration/drone/push Build is failing
improve signature structure, more tests
2020-12-13 13:37:11 +01:00

38 lines
994 B
TypeScript

/*
* 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 <timo@scode.ovh>, December 2020
*/
import { create_salt } from '@sapphirecode/crypto-helper';
class KeyStore {
private _keys: Record<string, string> = {};
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;