"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getP12CertFingerprint = getP12CertFingerprint;
exports.findP12CertSerialNumber = findP12CertSerialNumber;
function _nodeForge() {
const data = _interopRequireDefault(require("node-forge"));
_nodeForge = function () {
return data;
};
return data;
}
function _get() {
const data = _interopRequireDefault(require("lodash/get"));
_get = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function getP12CertFingerprint(p12Buffer, passwordRaw) {
const certData = _getCertData(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 certData = _getCertData(p12Buffer, passwordRaw);
const {
serialNumber
} = certData;
return serialNumber ? certData.serialNumber.replace(/^0+/, '').toUpperCase() : null;
}
function _getCertData(p12Buffer, passwordRaw) {
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 = (0, _get().default)(p12.getBags({
bagType: certBagType
}), [certBagType, 0, 'cert']);
if (!certData) {
throw new Error("_getCertData: couldn't find cert bag");
}
return certData;
}
//# sourceMappingURL=../__sourcemaps__/detach/PKCS12Utils.js.map