certificate-manager/functions/pki.utils.mjs
2025-05-17 16:10:17 +02:00

51 lines
No EOL
1.3 KiB
JavaScript

import {
default as forge
} from "node-forge";
import {
readFileSync,
writeFileSync,
mkdirSync
} from "fs";
export function loadCertificate(sCertID) {
return forge.pki.certificateFromPem(
readFileSync(`datastore/certificates/${sCertID}/certificate.pem`, 'utf8')
);
}
export function loadPrivateKey(sCertID) {
return forge.pki.privateKeyFromPem(
readFileSync(`datastore/certificates/${sCertID}/privateKey.pem`, 'utf8')
);
}
export function saveCertificate(iCertificate, sCertID, sCertType) {
// encode certificates as PEM
const certificate = forge.pki.certificateToPem(iCertificate);
// create certificate directory
mkdirSync(`datastore/certificates/`, { recursive: true });
// write certificate to file
writeFileSync(`datastore/certificates/${sCertID}.crt`, certificate);
}
export function savePrivateKey(iPrivateKey, sCertID) {
// encode keys as PEM
const privateKey = forge.pki.privateKeyToPem(iPrivateKey);
// create key directory
mkdirSync(`datastore/keys/`, { recursive: true });
// write keys to file
writeFileSync(`datastore/keys/${sCertID}.key`, privateKey);
}
export function generatePublicKeyFromPrivateKey(iPrivateKey) {
return forge.pki.rsa.setPublicKey(iPrivateKey.n, iPrivateKey.e);
}