You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
2.3 KiB

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.findP12CertSerialNumber = findP12CertSerialNumber;
exports.getCertData = getCertData;
exports.getP12CertFingerprint = getP12CertFingerprint;
function _nodeForge() {
const data = _interopRequireDefault(require("node-forge"));
_nodeForge = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function getP12CertFingerprint(p12Buffer, passwordRaw) {
const certData = getRawCertData(p12Buffer, passwordRaw);
const certAsn1 = _nodeForge().default.pki.certificateToAsn1(certData);
const certDer = _nodeForge().default.asn1.toDer(certAsn1).getBytes();
return _nodeForge().default.md.sha1.create().update(certDer).digest().toHex().toUpperCase();
}
function findP12CertSerialNumber(p12Buffer, passwordRaw) {
const {
serialNumber
} = getCertData(p12Buffer, passwordRaw);
return serialNumber;
}
function getCertData(p12Buffer, passwordRaw) {
const certData = getRawCertData(p12Buffer, passwordRaw);
return {
...certData,
serialNumber: certData.serialNumber.replace(/^0+/, '').toUpperCase()
};
}
function getRawCertData(p12Buffer, passwordRaw) {
var _p12$getBags, _p12$getBags$certBagT, _p12$getBags$certBagT2;
if (Buffer.isBuffer(p12Buffer)) {
p12Buffer = p12Buffer.toString('base64');
} else if (typeof p12Buffer !== 'string') {
throw new Error('getCertData only takes strings and buffers.');
}
const password = String(passwordRaw || '');
const p12Der = _nodeForge().default.util.decode64(p12Buffer);
const p12Asn1 = _nodeForge().default.asn1.fromDer(p12Der);
const p12 = _nodeForge().default.pkcs12.pkcs12FromAsn1(p12Asn1, password);
const certBagType = _nodeForge().default.pki.oids.certBag;
const certData = (_p12$getBags = p12.getBags({
bagType: certBagType
})) === null || _p12$getBags === void 0 ? void 0 : (_p12$getBags$certBagT = _p12$getBags[certBagType]) === null || _p12$getBags$certBagT === void 0 ? void 0 : (_p12$getBags$certBagT2 = _p12$getBags$certBagT[0]) === null || _p12$getBags$certBagT2 === void 0 ? void 0 : _p12$getBags$certBagT2.cert;
if (!certData) {
throw new Error("getRawCertData: couldn't find cert bag");
}
return certData;
}
//# sourceMappingURL=p12Certificate.js.map