UNPKG

p12-info

Version:
37 lines 1.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.readRaw = void 0; const forge = require("node-forge"); const readRaw = (cert, pass) => { const p12Asn1 = forge.asn1.fromDer(cert.toString('binary')); const p12 = forge.pkcs12.pkcs12FromAsn1(p12Asn1, false, pass); const data = p12.getBags({ bagType: forge.pki.oids.certBag }); if (!data || !data?.[forge.pki.oids.certBag]?.[0]) throw new Error('Unable to parse certificate. Incorrect Password?'); // @ts-ignore return data[forge.pki.oids.certBag][0]; }; exports.readRaw = readRaw; function p12info(cert, pass) { const data = (0, exports.readRaw)(cert, pass); return { friendlyName: data.attributes.friendlyName[0], subject: data.cert.subject?.attributes.reduce((a, r) => { r.name && (a[r.name] = Buffer.from(r.value, 'latin1').toString()); return a; }, {}), issuer: data.cert.issuer?.attributes.reduce((a, r) => { r.name && (a[r.name] = Buffer.from(r.value, 'latin1').toString()); return a; }, {}), serialNumber: data.cert.serialNumber, version: data.cert.version, validity: data.cert.validity, isValid: data.cert.validity.notBefore <= new Date() && data.cert.validity.notAfter >= new Date(), altNames: data.cert.extensions .find((r) => r.name = 'subjectAltName') ?.altNames?.map((r) => r.value) }; } exports.default = p12info; //# sourceMappingURL=index.js.map