Skip to content
Snippets Groups Projects
keys.ts 1.08 KiB

import { readFileBuffer } from './util';
import { env } from 'process';
import { keys } from './config';

let hasKeys: boolean | null = null;

export async function usePublicAndPrivate(): Promise<boolean> {
    if (hasKeys === null) {
        try {
            await getPrivateKey();
            await getPublicKey();
            hasKeys = true;
        } catch(e) {
            hasKeys = false;
        }
    }
    return hasKeys;
}

export function getSecret(): string {
    return keys.secret;
}

let privateKey: string;

export async function getPrivateKey(): Promise<string> {
    if (env.JWT_PRIVATE_KEY) {
        return env.JWT_PRIVATE_KEY;
    } else {
        if (!privateKey) {
            privateKey = (await readFileBuffer(keys.private)).toString();
        }
        return privateKey;
    }
}

let publicKey: string;

export async function getPublicKey(): Promise<string> {
    if (env.JWT_PUBLIC_KEY) {
        return env.JWT_PUBLIC_KEY;
    } else {
        if (!publicKey) {
            publicKey = (await readFileBuffer(keys.public)).toString();
        }
        return publicKey;
    }
}