all files / core/security/digital-signature/ pdf-certificate.js

19.57% Statements 9/46
0% Branches 0/25
25% Functions 2/8
20% Lines 9/45
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69                                                                                                                        
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;
});