pfx-load
Version:
Validate your pfx certificate in the easier way possible
70 lines (69 loc) • 2.65 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
var nodeForge = __importStar(require("node-forge"));
var fs = __importStar(require("fs"));
var errors_1 = require("./errors");
var DEFAULT_OPTIONS = {
showCerts: false,
showError: true
};
var pfxLoad = function (certPath, passphrase, _options) {
if (_options === void 0) { _options = DEFAULT_OPTIONS; }
var options = __assign({}, DEFAULT_OPTIONS, _options);
var showCerts = options.showCerts, showError = options.showError;
var validCerts = [];
var error = null;
var isPasswordOrPfxInvalid;
var isPfxOutdated;
try {
var blob = fs.readFileSync(certPath, { encoding: 'base64' });
var pkcs12 = nodeForge.pkcs12;
var p12Der = nodeForge.util.decode64(blob);
var p12Asn1 = nodeForge.asn1.fromDer(p12Der);
var certDecripted = pkcs12.pkcs12FromAsn1(p12Asn1, passphrase);
certDecripted.safeContents.map(function (safeContent) {
safeContent.safeBags.map(function (safeBag) {
if (safeBag.cert) {
validCerts.push(safeBag.cert);
}
});
});
var isOutdatedCert = validCerts.filter(function (cert) {
return cert.validity.notAfter.getTime() >= new Date().getTime();
}).length === 0;
if (isOutdatedCert) {
isPfxOutdated = isOutdatedCert;
throw errors_1.IS_OUTDATED;
}
isPasswordOrPfxInvalid = false;
}
catch (e) {
isPasswordOrPfxInvalid = e !== errors_1.IS_OUTDATED;
error = e;
}
var willWork = !isPfxOutdated && !isPasswordOrPfxInvalid;
var _validCerts = showCerts ? { validCerts: validCerts } : {};
var _error = showError ? { error: error } : {};
return __assign({ isPfxOutdated: isPfxOutdated,
isPasswordOrPfxInvalid: isPasswordOrPfxInvalid,
willWork: willWork }, _error, _validCerts);
};
exports.default = pfxLoad;