import * as crypto from "node:crypto"; import * as util from "node:util"; const generateKeyPair = util.promisify(crypto.generateKeyPair); export async function genRsaKeyPair(modulusLength = 2048) { return await generateKeyPair("rsa", { modulusLength, publicKeyEncoding: { type: "spki", format: "pem", }, privateKeyEncoding: { type: "pkcs8", format: "pem", cipher: undefined, passphrase: undefined, }, }); } export async function genEcKeyPair( namedCurve: | "prime256v1" | "secp384r1" | "secp521r1" | "curve25519" = "prime256v1", ) { return await generateKeyPair("ec", { namedCurve, publicKeyEncoding: { type: "spki", format: "pem", }, privateKeyEncoding: { type: "pkcs8", format: "pem", cipher: undefined, passphrase: undefined, }, }); }