saml-login
Version:
SAML 2.0 implementation for Node.js
34 lines • 1.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.removeCertPEMHeaderAndFooter = exports.generateUniqueId = exports.certToPEM = exports.keyToPEM = void 0;
const crypto = require("crypto");
const keyToPEM = (key) => {
const bufferedKey = Buffer.from(key.replace(/[ \t\f]/g, '').replace(/-{5}.*-{5}/g, '').replace(/\r?\n/g, ''), 'base64');
const keyObject = crypto.createPrivateKey({ key: bufferedKey, format: 'der', type: 'pkcs8' });
return keyObject.export({ format: 'pem', type: 'pkcs8' });
};
exports.keyToPEM = keyToPEM;
const certToPEM = (cert) => {
if (cert.indexOf("-BEGIN CERTIFICATE-") !== -1 && cert.indexOf("-END CERTIFICATE-") !== -1) {
return cert.replace(/[ \t\f]/g, '').replace('BEGINCERTIFICATE', 'BEGIN CERTIFICATE').replace('ENDCERTIFICATE', 'END CERTIFICATE');
}
cert = cert.match(/.{1,64}/g).join("\n");
if (cert.indexOf("-BEGIN CERTIFICATE-") === -1)
cert = "-----BEGIN CERTIFICATE-----\n" + cert;
if (cert.indexOf("-END CERTIFICATE-") === -1)
cert = cert + "\n-----END CERTIFICATE-----\n";
return cert;
};
exports.certToPEM = certToPEM;
const generateUniqueId = () => {
return "_" + crypto.randomBytes(64).toString("hex");
};
exports.generateUniqueId = generateUniqueId;
const removeCertPEMHeaderAndFooter = (certificate) => {
certificate = certificate.replace(/-+BEGIN CERTIFICATE-+\r?\n?/, "");
certificate = certificate.replace(/-+END CERTIFICATE-+\r?\n?/, "");
certificate = certificate.replace(/\r\n/g, "\n");
return certificate;
};
exports.removeCertPEMHeaderAndFooter = removeCertPEMHeaderAndFooter;
//# sourceMappingURL=crypto.js.map