define(["require", "exports", "./pdf-cryptography-certificate", "./x509/x509-certificate"], function (require, exports, pdf_cryptography_certificate_1, x509_certificate_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var _PdfCertificate = (function () {
function _PdfCertificate(certificate, password) {
this._chains = [];
this._objectIdentifierToAttributeMap = {
'2.5.4.3': 'CN',
'2.5.4.6': 'C',
'2.5.4.7': 'L',
'2.5.4.8': 'ST',
'2.5.4.10': 'O',
'2.5.4.11': 'OU'
};
if (certificate instanceof Uint8Array && password !== null && typeof password !== 'undefined') {
this._initializePublicKeyCryptographyCertificate(certificate, password);
}
else if (certificate instanceof x509_certificate_1._PdfX509Certificate) {
this._loadDetailsFromCertificate(certificate);
}
}
_PdfCertificate.prototype._initializePublicKeyCryptographyCertificate = function (certificateBytes, password) {
var pkcsCertificate = new pdf_cryptography_certificate_1._PdfPublicKeyCryptographyCertificate(certificateBytes, password);
if (pkcsCertificate) {
this._publicKeyCryptographyCertificate = pkcsCertificate;
var certificateAlias_1 = '';
pkcsCertificate._keys.forEach(function (keyEntry, alias) {
if (keyEntry && certificateAlias_1 === '') {
certificateAlias_1 = alias;
}
});
var certificates = pkcsCertificate._getCertificate(certificateAlias_1);
if (certificates) {
this._loadDetailsFromCertificate(certificates._certificate);
}
}
};
_PdfCertificate.prototype._loadDetailsFromCertificate = function (certificate) {
var structure = certificate._structure;
var signature = structure._getSignedCertificate();
this._issuerName = this._getUniqueAttributes(signature._issuer, 'CN');
if (this._issuerName === '') {
this._issuerName = this._getUniqueAttributes(signature._issuer, 'OU');
}
this._subjectName = this._getUniqueAttributes(signature._subject, 'CN');
this._validFrom = signature._startDate._toDate();
this._validTo = signature._endDate._toDate();
this._version = signature._getVersion();
var serialNumberBytes = signature._serialNumber;
this._serialNumber = serialNumberBytes;
this._isPublicKeyCryptographyCertificate = true;
};
_PdfCertificate.prototype._getUniqueAttributes = function (x509Name, attribute) {
var _this = this;
var targetOid = Object.keys(this._objectIdentifierToAttributeMap).find(function (oid) { return _this._objectIdentifierToAttributeMap[oid] === attribute || oid === attribute; }) || attribute;
for (var i = 0; i < x509Name._ordering.length; i++) {
var oid = x509Name._ordering[i];
if (oid.toString() === targetOid) {
var val = x509Name._values[i];
return val ? val.trim() : '';
}
}
return '';
};
return _PdfCertificate;
}());
exports._PdfCertificate = _PdfCertificate;
});
|