myrtex-mf-signer 1.1.23 → 1.1.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/sign-modal/sign-modal.component.mjs +3 -2
- package/esm2020/lib/models/sign-request.model.mjs +1 -1
- package/esm2020/lib/services/certificate.adjuster.mjs +6 -6
- package/fesm2015/myrtex-mf-signer.mjs +7 -6
- package/fesm2015/myrtex-mf-signer.mjs.map +1 -1
- package/fesm2020/myrtex-mf-signer.mjs +7 -6
- package/fesm2020/myrtex-mf-signer.mjs.map +1 -1
- package/lib/components/sign-modal/sign-modal.component.d.ts +2 -1
- package/lib/models/sign-request.model.d.ts +2 -1
- package/package.json +1 -1
|
@@ -56,7 +56,8 @@ export class SignModalComponent extends SimpleModalComponent {
|
|
|
56
56
|
skipServerCheck: this.skipServerCheck,
|
|
57
57
|
checkFio: this.checkFio,
|
|
58
58
|
checkOgrn: this.checkOgrn,
|
|
59
|
-
|
|
59
|
+
checkOrganizationFullName: this.checkOrganizationFullName,
|
|
60
|
+
checkOrganizationShortName: this.checkOrganizationShortName,
|
|
60
61
|
checkInn: this.checkInn
|
|
61
62
|
})
|
|
62
63
|
.then((ok) => {
|
|
@@ -145,4 +146,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
145
146
|
type: Component,
|
|
146
147
|
args: [{ selector: 'lib-sign-modal', template: "<div class=\"modal-content accent-head xl\">\n <div class=\"modal-header\">\n <div class=\"modal-title uppercase\">\n <h4 class=\"ng-binding\">{{title || '\u041D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430 \u043D\u0430 \u043F\u043E\u0434\u043F\u0438\u0441\u0430\u043D\u0438\u0435'}}</h4>\n </div>\n <span class=\"close close-click\" (click)=\"close()\">\n <svg width=\"14\" height=\"14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M13 1L1 13M1 1l12 12\" stroke=\"#3A3A3A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n </div>\n\n <div class=\"modal-body text-center\">\n <div class=\"widget\">\n <my-tabs>\n <app-tab tabTitle=\"\u0412\u0438\u0437\u0443\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\" *ngIf=\"pdfUrl\">\n <pre *ngIf=\"downloadingPdf\">\n \u041F\u043E\u0434\u043E\u0436\u0434\u0438\u0442\u0435, \u0438\u0434\u0435\u0442 \u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\n </pre>\n <iframe *ngIf=\"!downloadingPdf\" [src]=\"pdfViewUrl | safeurl\"\n title=\"webviewer\" frameborder=\"0\" width=\"100%\" height=\"800\"></iframe>\n </app-tab>\n <app-tab tabTitle=\"\u041F\u043E\u0434\u043F\u0438\u0441\u044B\u0432\u0430\u0435\u043C\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435\" *ngIf=\"xmlUrl\">\n <pre [innerText]=\"xmlToSign\"></pre>\n </app-tab>\n </my-tabs>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <div *ngIf=\"pdfUrl || xmlUrl\"\n class=\"modal-footer-item\">\n <a *ngIf=\"pdfUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"pdfUrl\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M18 21.25H6C5.30964 21.25 4.75 20.6904 4.75 20V4C4.75 3.30964 5.30964 2.75 6 2.75H13.1893L19.25 8.81066V20C19.25 20.6904 18.6904 21.25 18 21.25Z\"\n stroke=\"#282828\" stroke-width=\"1.5\"/>\n </svg>\n <span>\u0421\u043A\u0430\u0447\u0430\u0442\u044C \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442</span>\n </a>\n <a *ngIf=\"xmlUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"xmlUrl\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 16L2 12L6 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M18 16L22 12L18 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"/>\n <path d=\"M7.56689 19.1782L15.5669 5.32182\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"/>\n </svg>\n <span>\u0421\u043A\u0430\u0447\u0430\u0442\u044C XML-\u0434\u0430\u043D\u043D\u044B\u0435</span>\n </a>\n </div>\n <div class=\"modal-footer-item\">\n <button\n class=\"mrx-btn mrx-btn-secondary mrx-btn-md wpx-120 mr-3\"\n (click)=\"cancel()\"\n >\n <div class=\"mrx-btn-label\">{{cancelLabel || '\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C'}}</div>\n </button>\n <button\n class=\"mrx-btn mrx-btn-primary mrx-btn-md wpx-120\"\n [disabled]=\"disabled\"\n (click)=\"ok()\"\n >\n <div class=\"mrx-btn-label\">{{okLabel || '\u041F\u043E\u0434\u043F\u0438\u0441\u0430\u0442\u044C'}}</div>\n </button>\n </div>\n </div>\n</div>\n", styles: [":host{display:contents}:host pre{width:100%;height:600px;border:0;text-align:left;overflow-y:scroll}.modal-footer{justify-content:space-between;align-items:center}.modal-footer-item__link{display:inline-flex;align-items:center;font-family:PT Sans,sans-serif;font-weight:700;font-size:14px;line-height:160%;color:var(--Main1);margin-right:16px}.modal-footer-item__link svg{margin-right:4px}.modal-body iframe{height:600px}pre{height:600px;overflow:scroll}\n"] }]
|
|
147
148
|
}], ctorParameters: function () { return [{ type: i1.SignProviderFactory }, { type: i2.DownloadService }, { type: i3.AlertService }]; } });
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtbWYtc2lnbmVyL3NyYy9saWIvY29tcG9uZW50cy9zaWduLW1vZGFsL3NpZ24tbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LW1mLXNpZ25lci9zcmMvbGliL2NvbXBvbmVudHMvc2lnbi1tb2RhbC9zaWduLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFnQixXQUFXLEVBQUUsVUFBVSxFQUFhLE1BQU0sd0JBQXdCLENBQUM7QUFDMUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7O0FBa0JuQyxNQUFNLE9BQU8sa0JBQ1gsU0FBUSxvQkFBMkQ7SUF1Qm5FLFlBQW9CLG1CQUF3QyxFQUNsRCxlQUFnQyxFQUNoQyxZQUEwQjtRQUNsQyxLQUFLLEVBQUUsQ0FBQztRQUhVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBdkI3QixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBS2pCLGFBQVEsR0FBcUIsT0FBTyxDQUFDO1FBQ3JDLGFBQVEsR0FBYSxLQUFLLENBQUM7UUFFM0IsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFRdEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFNckIsSUFBSSxDQUFDLE1BQU0s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O1lBQ2hDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0IsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUU7Z0JBQ3RCLElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFnQixDQUFDO2dCQUN6QyxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFFcEUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQztpQkFDekM7Z0JBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7WUFDOUIsQ0FBQyxDQUFBO1FBQ0gsQ0FBQyxFQUFFLEdBQUcsRUFBRTtZQUNOLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7Z0hBbEtVLGtCQUFrQjtvR0FBbEIsa0JBQWtCLDZFQ3JCL0IsaTNIQTJFQTs0RkR0RGEsa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBEaWFsb2dDb2xvciwgRGlhbG9nVHlwZSwgVXRpbGl0aWVzIH0gZnJvbSAnbXlydGV4LW1mLXVpLWNvbXBvc2l0ZSc7XG5pbXBvcnQgeyBTaW1wbGVNb2RhbENvbXBvbmVudCB9IGZyb20gJ25neC1zaW1wbGUtbW9kYWwnO1xuaW1wb3J0IHsgQmFzZTY0IH0gZnJvbSAnanMtYmFzZTY0JztcbmltcG9ydCB7IFNpZ25Qcm92aWRlclR5cGUsIFNpZ25UeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFNpZ25lZFJlc3VsdE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NpZ25lZC1yZXN1bHQubW9kZWwnO1xuaW1wb3J0IHsgU2lnblJlcXVlc3RNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zaWduLXJlcXVlc3QubW9kZWwnO1xuaW1wb3J0IHsgRG93bmxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZG93bmxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBTaWduUHJvdmlkZXJGYWN0b3J5IH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL3NpZ25wcm92aWRlci5mYWN0b3J5JztcbmltcG9ydCB7IE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmVkUmVzcG9uc2VNb2RlbCB7XG4gIHJlc3VsdDogYm9vbGVhbjtcbiAgbW9kZWw/OiBTaWduZWRSZXN1bHRNb2RlbDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXNpZ24tbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lnbi1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpZ24tbW9kYWwuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNpZ25Nb2RhbENvbXBvbmVudFxuICBleHRlbmRzIFNpbXBsZU1vZGFsQ29tcG9uZW50PFNpZ25SZXF1ZXN0TW9kZWwsIFNpZ25lZFJlc3BvbnNlTW9kZWw+IGltcGxlbWVudHMgT25Jbml0LCBTaWduUmVxdWVzdE1vZGVsIHtcblxuICBwdWJsaWMgdGl0bGUgPSAnJztcbiAgcHVibGljIG9rTGFiZWwgPSAnJztcbiAgcHVibGljIGNhbmNlbExhYmVsID0gJyc7XG5cbiAgcHVibGljIHhtbFVybD86IHN0cmluZztcbiAgcHVibGljIHBkZlVybD86IHN0cmluZztcblxuICBwdWJsaWMgcHJvdmlkZXI6IFNpZ25Qcm92aWRlclR5cGUgPSAnZW1wdHknO1xuICBwdWJsaWMgc2lnblR5cGU6IFNpZ25UeXBlID0gJ3htbCc7XG5cbiAgcHVibGljIHhtbFRvU2lnbiA9ICcnO1xuICBwdWJsaWMgcGRmVG9TaWduID0gJyc7XG4gIHB1YmxpYyB3aXRoTG9nPzogYm9vbGVhbjtcbiAgcHVibGljIHNraXBTZXJ2ZXJDaGVjaz86IGJvb2xlYW47XG4gIHB1YmxpYyBjaGVja0Zpbz86IHN0cmluZztcbiAgcHVibGljIGNoZWNrT2dybj86IHN0cmluZztcbiAgcHVibGljIGNoZWNrT3JnYW5pemF0aW9uPzogc3RyaW5nO1xuICBwdWJsaWMgY2hlY2tJbm4/OiBzdHJpbmc7XG5cbiAgZG93bmxvYWRpbmdQZGYgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNpZ25Qcm92aWRlckZhY3Rvcnk6IFNpZ25Qcm92aWRlckZhY3RvcnksXG4gICAgcHJpdmF0ZSBkb3dubG9hZFNlcnZpY2U6IERvd25sb2FkU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlc3VsdCA9IHsgcmVzdWx0OiBmYWxzZSB9O1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCkge1xuICAgIC8vIHRvZG8g0LrQsNC6INC80L7QttC90L4g0LTQuNC30LXQsdC70LjRgtGMINC60L3QvtC/0YNcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgcGRmVmlld1VybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBkZlVybCA/XG4gICAgICBgL3NpZ25lci9wZGZqcy93ZWIvdmlld2VyLmh0bWw/ZmlsZT0ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLnBkZlVybCl9YCA6ICcnO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kb3dubG9hZFhtbCgpO1xuICAgIHRoaXMuZG93bmxvYWRQZGYoKTtcbiAgfVxuXG4gIHB1YmxpYyBvaygpIHtcblxuICAgIGlmICghdGhpcy5zaWduVHlwZSkge1xuICAgICAgdGhpcy5zaWduVHlwZSA9ICd4bWwnO1xuICAgIH1cblxuICAgIGxldCBzaWduRGF0YSA9IHRoaXMueG1sVG9TaWduO1xuXG4gICAgc3dpdGNoICh0aGlzLnNpZ25UeXBlKSB7XG4gICAgY2FzZSAneG1sJzpcbiAgICAgIHNpZ25EYXRhID0gQmFzZTY0LmVuY29kZSh0aGlzLnhtbFRvU2lnbik7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwZGYnOlxuICAgICAgc2lnbkRhdGEgPSB0aGlzLnBkZlRvU2lnbjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3htbHRzJzpcbiAgICAgIHNpZ25EYXRhID0gdGhpcy54bWxUb1NpZ247XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLnNpZ25Qcm92aWRlckZhY3RvcnkuY3JlYXRlKHRoaXMucHJvdmlkZXIpXG4gICAgICAuc2lnbihzaWduRGF0YSwgdGhpcy53aXRoTG9nLCB7XG4gICAgICAgIHNraXBTZXJ2ZXJDaGVjazogdGhpcy5za2lwU2VydmVyQ2hlY2ssXG4gICAgICAgIGNoZWNrRmlvOiB0aGlzLmNoZWNrRmlvLFxuICAgICAgICBjaGVja09ncm46IHRoaXMuY2hlY2tPZ3JuLFxuICAgICAgICBjaGVja09yZ2FuaXphdGlvbjogdGhpcy5jaGVja09yZ2FuaXphdGlvbixcbiAgICAgICAgY2hlY2tJbm46IHRoaXMuY2hlY2tJbm5cbiAgICAgIH0pXG4gICAgICAudGhlbigob2s6IFNpZ25lZFJlc3VsdE1vZGVsKSA9PiB7XG4gICAgICAgIHRoaXMucHJvY2Vzc1Jlc3VsdChvayk7XG4gICAgICB9KS5jYXRjaCgoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcihlcnJvcik7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWwoKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzUmVzdWx0KHNpZ25SZXN1bHQ6IFNpZ25lZFJlc3VsdE1vZGVsKTogdm9pZCB7XG4gICAgaWYgKHNpZ25SZXN1bHQuc3VjY2Vzcykge1xuICAgICAgdGhpcy5yZXN1bHQgPSB7IG1vZGVsOiBzaWduUmVzdWx0LCByZXN1bHQ6IHRydWUgfTtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyh7XG4gICAgICAgIHRpdGxlOiAn0J7RiNC40LHQutCwINC/0YDQvtCy0LXRgNC60Lgg0L/QvtC00L/QuNGB0LgnLFxuICAgICAgICBtZXNzYWdlOiAn0J/QvtC00L/QuNGB0Ywg0L3QtSDQstCw0LvQuNC00L3QsCcsXG4gICAgICAgIGNvbG9yOiBEaWFsb2dDb2xvci5yZWQsXG4gICAgICAgIHR5cGU6IERpYWxvZ1R5cGUuYWxlcnQsXG4gICAgICAgIG9rQ2FsbGJhY2s6IChvaykgPT4ge1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NFcnJvcihlcnJvcjogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMud2l0aExvZykge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgfVxuXG4gICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyh7XG4gICAgICB0aXRsZTogJ9Ce0YjQuNCx0LrQsCDQv9GA0L7QstC10YDQutC4INC/0L7QtNC/0LjRgdC4JyxcbiAgICAgIG1lc3NhZ2U6IEpTT04uc3RyaW5naWZ5KGVycm9yKSxcbiAgICAgIGNvbG9yOiBEaWFsb2dDb2xvci5yZWQsXG4gICAgICB0eXBlOiBEaWFsb2dUeXBlLmFsZXJ0LFxuICAgICAgb2tDYWxsYmFjazogKG9rKSA9PiB7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRvd25sb2FkWG1sKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy54bWxVcmwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy53aXRoTG9nKSB7XG4gICAgICBjb25zb2xlLmxvZygnRG93bmxvYWRpbmcgeG1sJyk7XG4gICAgfVxuXG4gICAgdGhpcy5kb3dubG9hZFNlcnZpY2UueG1sKHRoaXMueG1sVXJsKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIGlmICh0aGlzLndpdGhMb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ3htbFRvU2lnbiA9ICcsIHJlc3VsdCk7XG4gICAgICB9XG4gICAgICB0aGlzLnhtbFRvU2lnbiA9IHJlc3VsdDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZG93bmxvYWRQZGYoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnBkZlVybCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLndpdGhMb2cpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdEb3dubG9hZGluZyBwZGYnKTtcbiAgICB9XG5cbiAgICB0aGlzLmRvd25sb2FkaW5nUGRmID0gdHJ1ZTtcbiAgICB0aGlzLmRvd25sb2FkU2VydmljZS5wZGYodGhpcy5wZGZVcmwpXG4gICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgIHRoaXMuZG93bmxvYWRpbmdQZGYgPSBmYWxzZTtcbiAgICAgICAgLy8gdG9kbyDQv9C+0LTRg9C80LDRgtGMLCDQutCw0Log0L/RgNCw0LLQuNC70YzQvdC+INGH0LjRgtCw0YLRjCDRhNCw0LnQu1xuICAgICAgICAvLyBjb25zdCBibG9iID0gbmV3IEJsb2IoW3Jlc3VsdF0sIHt0eXBlOiAnYXBwbGljYXRpb24vcGRmJ30pO1xuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChyZXN1bHQpO1xuICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKCkgPT4ge1xuICAgICAgICAgIGxldCBiYXNlNjRkYXRhID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XG4gICAgICAgICAgYmFzZTY0ZGF0YSA9IGJhc2U2NGRhdGEucmVwbGFjZSgnZGF0YTphcHBsaWNhdGlvbi9wZGY7YmFzZTY0LCcsICcnKTtcblxuICAgICAgICAgIGlmICh0aGlzLndpdGhMb2cpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwZGZUb1NpZ24gPSAnLCBiYXNlNjRkYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5wZGZUb1NpZ24gPSBiYXNlNjRkYXRhO1xuICAgICAgICB9XG4gICAgICB9LCAoKSA9PiB7XG4gICAgICAgIHRoaXMuZG93bmxvYWRpbmdQZGYgPSBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudCBhY2NlbnQtaGVhZCB4bFwiPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLXRpdGxlIHVwcGVyY2FzZVwiPlxuICAgICAgPGg0IGNsYXNzPVwibmctYmluZGluZ1wiPnt7dGl0bGUgfHwgJ9Cd0LDQv9GA0LDQstC70LXQvdC40LUg0LTQvtC60YPQvNC10L3RgtCwINC90LAg0L/QvtC00L/QuNGB0LDQvdC40LUnfX08L2g0PlxuICAgIDwvZGl2PlxuICAgIDxzcGFuIGNsYXNzPVwiY2xvc2UgY2xvc2UtY2xpY2tcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzIDFMMSAxM00xIDFsMTIgMTJcIiBzdHJva2U9XCIjM0EzQTNBXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9zcGFuPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSB0ZXh0LWNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3aWRnZXRcIj5cbiAgICAgIDxteS10YWJzPlxuICAgICAgICA8YXBwLXRhYiB0YWJUaXRsZT1cItCS0LjQt9GD0LDQu9C40LfQsNGG0LjRjyDQtNC+0LrRg9C80LXQvdGC0LBcIiAqbmdJZj1cInBkZlVybFwiPlxuICAgICAgICAgIDxwcmUgKm5nSWY9XCJkb3dubG9hZGluZ1BkZlwiPlxuICAgICAgICAgICAg0J/QvtC00L7QttC00LjRgtC1LCDQuNC00LXRgiDRhNC+0YDQvNC40YDQvtCy0LDQvdC40LUg0LTQvtC60YPQvNC10L3RgtCwXG4gICAgICAgICAgPC9wcmU+XG4gICAgICAgICAgPGlmcmFtZSAqbmdJZj1cIiFkb3dubG9hZGluZ1BkZlwiIFtzcmNdPVwicGRmVmlld1VybCB8IHNhZmV1cmxcIlxuICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ3ZWJ2aWV3ZXJcIiBmcmFtZWJvcmRlcj1cIjBcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI4MDBcIj48L2lmcmFtZT5cbiAgICAgICAgPC9hcHAtdGFiPlxuICAgICAgICA8YXBwLXRhYiB0YWJUaXRsZT1cItCf0L7QtNC/0LjRgdGL0LLQsNC10LzRi9C1INC00LDQvdC90YvQtVwiICpuZ0lmPVwieG1sVXJsXCI+XG4gICAgICAgICAgPHByZSBbaW5uZXJUZXh0XT1cInhtbFRvU2lnblwiPjwvcHJlPlxuICAgICAgICA8L2FwcC10YWI+XG4gICAgICA8L215LXRhYnM+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICA8ZGl2ICpuZ0lmPVwicGRmVXJsIHx8IHhtbFVybFwiXG4gICAgICAgICBjbGFzcz1cIm1vZGFsLWZvb3Rlci1pdGVtXCI+XG4gICAgICA8YSAqbmdJZj1cInBkZlVybFwiXG4gICAgICAgICBjbGFzcz1cIm1vZGFsLWZvb3Rlci1pdGVtX19saW5rXCJcbiAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICBbaHJlZl09XCJwZGZVcmxcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMTggMjEuMjVINkM1LjMwOTY0IDIxLjI1IDQuNzUgMjAuNjkwNCA0Ljc1IDIwVjRDNC43NSAzLjMwOTY0IDUuMzA5NjQgMi43NSA2IDIuNzVIMTMuMTg5M0wxOS4yNSA4LjgxMDY2VjIwQzE5LjI1IDIwLjY5MDQgMTguNjkwNCAyMS4yNSAxOCAyMS4yNVpcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiIzI4MjgyOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDxzcGFuPtCh0LrQsNGH0LDRgtGMINC00L7QutGD0LzQtdC90YI8L3NwYW4+XG4gICAgICA8L2E+XG4gICAgICA8YSAqbmdJZj1cInhtbFVybFwiXG4gICAgICAgICBjbGFzcz1cIm1vZGFsLWZvb3Rlci1pdGVtX19saW5rXCJcbiAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICBbaHJlZl09XCJ4bWxVcmxcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk02IDE2TDIgMTJMNiA4XCIgc3Ryb2tlPVwiIzI4MjgyOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICA8cGF0aCBkPVwiTTE4IDE2TDIyIDEyTDE4IDhcIiBzdHJva2U9XCIjMjgyODI4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgPHBhdGggZD1cIk03LjU2Njg5IDE5LjE3ODJMMTUuNTY2OSA1LjMyMTgyXCIgc3Ryb2tlPVwiIzI4MjgyOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICAgPHNwYW4+0KHQutCw0YfQsNGC0YwgWE1MLdC00LDQvdC90YvQtTwvc3Bhbj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyLWl0ZW1cIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cIm1yeC1idG4gbXJ4LWJ0bi1zZWNvbmRhcnkgbXJ4LWJ0bi1tZCB3cHgtMTIwIG1yLTNcIlxuICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtYnRuLWxhYmVsXCI+e3tjYW5jZWxMYWJlbCB8fCAn0J7RgtC80LXQvdC40YLRjCd9fTwvZGl2PlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJtcngtYnRuIG1yeC1idG4tcHJpbWFyeSBtcngtYnRuLW1kIHdweC0xMjBcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9rKClcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWJ0bi1sYWJlbFwiPnt7b2tMYWJlbCB8fCAn0J/QvtC00L/QuNGB0LDRgtGMJ319PC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtbWYtc2lnbmVyL3NyYy9saWIvY29tcG9uZW50cy9zaWduLW1vZGFsL3NpZ24tbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LW1mLXNpZ25lci9zcmMvbGliL2NvbXBvbmVudHMvc2lnbi1tb2RhbC9zaWduLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFnQixXQUFXLEVBQUUsVUFBVSxFQUFhLE1BQU0sd0JBQXdCLENBQUM7QUFDMUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7O0FBa0JuQyxNQUFNLE9BQU8sa0JBQ1gsU0FBUSxvQkFBMkQ7SUF3Qm5FLFlBQW9CLG1CQUF3QyxFQUNsRCxlQUFnQyxFQUNoQyxZQUEwQjtRQUNsQyxLQUFLLEVBQUUsQ0FBQztRQUhVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBeEI3QixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBS2pCLGFBQVEsR0FBcUIsT0FBTyxDQUFDO1FBQ3JDLGFBQVEsR0FBYSxLQUFLLENBQUM7UUFFM0IsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFTdEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFNckIsSUFBSSxDQUFDLE1BQU0s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LE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QixNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRTtnQkFDdEIsSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQWdCLENBQUM7Z0JBQ3pDLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLDhCQUE4QixFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUVwRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2lCQUN6QztnQkFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztZQUM5QixDQUFDLENBQUE7UUFDSCxDQUFDLEVBQUUsR0FBRyxFQUFFO1lBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztnSEFwS1Usa0JBQWtCO29HQUFsQixrQkFBa0IsNkVDckIvQixpM0hBMkVBOzRGRHREYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIERpYWxvZ0NvbG9yLCBEaWFsb2dUeXBlLCBVdGlsaXRpZXMgfSBmcm9tICdteXJ0ZXgtbWYtdWktY29tcG9zaXRlJztcbmltcG9ydCB7IFNpbXBsZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnbmd4LXNpbXBsZS1tb2RhbCc7XG5pbXBvcnQgeyBCYXNlNjQgfSBmcm9tICdqcy1iYXNlNjQnO1xuaW1wb3J0IHsgU2lnblByb3ZpZGVyVHlwZSwgU2lnblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgU2lnbmVkUmVzdWx0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2lnbmVkLXJlc3VsdC5tb2RlbCc7XG5pbXBvcnQgeyBTaWduUmVxdWVzdE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NpZ24tcmVxdWVzdC5tb2RlbCc7XG5pbXBvcnQgeyBEb3dubG9hZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kb3dubG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7IFNpZ25Qcm92aWRlckZhY3RvcnkgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvc2lnbnByb3ZpZGVyLmZhY3RvcnknO1xuaW1wb3J0IHsgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBTaWduZWRSZXNwb25zZU1vZGVsIHtcbiAgcmVzdWx0OiBib29sZWFuO1xuICBtb2RlbD86IFNpZ25lZFJlc3VsdE1vZGVsO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc2lnbi1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWduLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2lnbi1tb2RhbC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2lnbk1vZGFsQ29tcG9uZW50XG4gIGV4dGVuZHMgU2ltcGxlTW9kYWxDb21wb25lbnQ8U2lnblJlcXVlc3RNb2RlbCwgU2lnbmVkUmVzcG9uc2VNb2RlbD4gaW1wbGVtZW50cyBPbkluaXQsIFNpZ25SZXF1ZXN0TW9kZWwge1xuXG4gIHB1YmxpYyB0aXRsZSA9ICcnO1xuICBwdWJsaWMgb2tMYWJlbCA9ICcnO1xuICBwdWJsaWMgY2FuY2VsTGFiZWwgPSAnJztcblxuICBwdWJsaWMgeG1sVXJsPzogc3RyaW5nO1xuICBwdWJsaWMgcGRmVXJsPzogc3RyaW5nO1xuXG4gIHB1YmxpYyBwcm92aWRlcjogU2lnblByb3ZpZGVyVHlwZSA9ICdlbXB0eSc7XG4gIHB1YmxpYyBzaWduVHlwZTogU2lnblR5cGUgPSAneG1sJztcblxuICBwdWJsaWMgeG1sVG9TaWduID0gJyc7XG4gIHB1YmxpYyBwZGZUb1NpZ24gPSAnJztcbiAgcHVibGljIHdpdGhMb2c/OiBib29sZWFuO1xuICBwdWJsaWMgc2tpcFNlcnZlckNoZWNrPzogYm9vbGVhbjtcbiAgcHVibGljIGNoZWNrRmlvPzogc3RyaW5nO1xuICBwdWJsaWMgY2hlY2tPZ3JuPzogc3RyaW5nO1xuICBwdWJsaWMgY2hlY2tPcmdhbml6YXRpb25GdWxsTmFtZT86IHN0cmluZztcbiAgcHVibGljIGNoZWNrT3JnYW5pemF0aW9uU2hvcnROYW1lPzogc3RyaW5nO1xuICBwdWJsaWMgY2hlY2tJbm4/OiBzdHJpbmc7XG5cbiAgZG93bmxvYWRpbmdQZGYgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNpZ25Qcm92aWRlckZhY3Rvcnk6IFNpZ25Qcm92aWRlckZhY3RvcnksXG4gICAgcHJpdmF0ZSBkb3dubG9hZFNlcnZpY2U6IERvd25sb2FkU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlc3VsdCA9IHsgcmVzdWx0OiBmYWxzZSB9O1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCkge1xuICAgIC8vIHRvZG8g0LrQsNC6INC80L7QttC90L4g0LTQuNC30LXQsdC70LjRgtGMINC60L3QvtC/0YNcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgcGRmVmlld1VybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBkZlVybCA/XG4gICAgICBgL3NpZ25lci9wZGZqcy93ZWIvdmlld2VyLmh0bWw/ZmlsZT0ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLnBkZlVybCl9YCA6ICcnO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kb3dubG9hZFhtbCgpO1xuICAgIHRoaXMuZG93bmxvYWRQZGYoKTtcbiAgfVxuXG4gIHB1YmxpYyBvaygpIHtcblxuICAgIGlmICghdGhpcy5zaWduVHlwZSkge1xuICAgICAgdGhpcy5zaWduVHlwZSA9ICd4bWwnO1xuICAgIH1cblxuICAgIGxldCBzaWduRGF0YSA9IHRoaXMueG1sVG9TaWduO1xuXG4gICAgc3dpdGNoICh0aGlzLnNpZ25UeXBlKSB7XG4gICAgY2FzZSAneG1sJzpcbiAgICAgIHNpZ25EYXRhID0gQmFzZTY0LmVuY29kZSh0aGlzLnhtbFRvU2lnbik7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwZGYnOlxuICAgICAgc2lnbkRhdGEgPSB0aGlzLnBkZlRvU2lnbjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3htbHRzJzpcbiAgICAgIHNpZ25EYXRhID0gdGhpcy54bWxUb1NpZ247XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLnNpZ25Qcm92aWRlckZhY3RvcnkuY3JlYXRlKHRoaXMucHJvdmlkZXIpXG4gICAgICAuc2lnbihzaWduRGF0YSwgdGhpcy53aXRoTG9nLCB7XG4gICAgICAgIHNraXBTZXJ2ZXJDaGVjazogdGhpcy5za2lwU2VydmVyQ2hlY2ssXG4gICAgICAgIGNoZWNrRmlvOiB0aGlzLmNoZWNrRmlvLFxuICAgICAgICBjaGVja09ncm46IHRoaXMuY2hlY2tPZ3JuLFxuICAgICAgICBjaGVja09yZ2FuaXphdGlvbkZ1bGxOYW1lOiB0aGlzLmNoZWNrT3JnYW5pemF0aW9uRnVsbE5hbWUsXG4gICAgICAgIGNoZWNrT3JnYW5pemF0aW9uU2hvcnROYW1lOiB0aGlzLmNoZWNrT3JnYW5pemF0aW9uU2hvcnROYW1lLFxuICAgICAgICBjaGVja0lubjogdGhpcy5jaGVja0lublxuICAgICAgfSlcbiAgICAgIC50aGVuKChvazogU2lnbmVkUmVzdWx0TW9kZWwpID0+IHtcbiAgICAgICAgdGhpcy5wcm9jZXNzUmVzdWx0KG9rKTtcbiAgICAgIH0pLmNhdGNoKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0Vycm9yKGVycm9yKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NSZXN1bHQoc2lnblJlc3VsdDogU2lnbmVkUmVzdWx0TW9kZWwpOiB2b2lkIHtcbiAgICBpZiAoc2lnblJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICB0aGlzLnJlc3VsdCA9IHsgbW9kZWw6IHNpZ25SZXN1bHQsIHJlc3VsdDogdHJ1ZSB9O1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93RGlhbG9nKHtcbiAgICAgICAgdGl0bGU6ICfQntGI0LjQsdC60LAg0L/RgNC+0LLQtdGA0LrQuCDQv9C+0LTQv9C40YHQuCcsXG4gICAgICAgIG1lc3NhZ2U6ICfQn9C+0LTQv9C40YHRjCDQvdC1INCy0LDQu9C40LTQvdCwJyxcbiAgICAgICAgY29sb3I6IERpYWxvZ0NvbG9yLnJlZCxcbiAgICAgICAgdHlwZTogRGlhbG9nVHlwZS5hbGVydCxcbiAgICAgICAgb2tDYWxsYmFjazogKG9rKSA9PiB7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0Vycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy53aXRoTG9nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG5cbiAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93RGlhbG9nKHtcbiAgICAgIHRpdGxlOiAn0J7RiNC40LHQutCwINC/0YDQvtCy0LXRgNC60Lgg0L/QvtC00L/QuNGB0LgnLFxuICAgICAgbWVzc2FnZTogSlNPTi5zdHJpbmdpZnkoZXJyb3IpLFxuICAgICAgY29sb3I6IERpYWxvZ0NvbG9yLnJlZCxcbiAgICAgIHR5cGU6IERpYWxvZ1R5cGUuYWxlcnQsXG4gICAgICBva0NhbGxiYWNrOiAob2spID0+IHtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZG93bmxvYWRYbWwoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnhtbFVybCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLndpdGhMb2cpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdEb3dubG9hZGluZyB4bWwnKTtcbiAgICB9XG5cbiAgICB0aGlzLmRvd25sb2FkU2VydmljZS54bWwodGhpcy54bWxVcmwpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHRoaXMud2l0aExvZykge1xuICAgICAgICBjb25zb2xlLmxvZygneG1sVG9TaWduID0gJywgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMueG1sVG9TaWduID0gcmVzdWx0O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkb3dubG9hZFBkZigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucGRmVXJsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMud2l0aExvZykge1xuICAgICAgY29uc29sZS5sb2coJ0Rvd25sb2FkaW5nIHBkZicpO1xuICAgIH1cblxuICAgIHRoaXMuZG93bmxvYWRpbmdQZGYgPSB0cnVlO1xuICAgIHRoaXMuZG93bmxvYWRTZXJ2aWNlLnBkZih0aGlzLnBkZlVybClcbiAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgdGhpcy5kb3dubG9hZGluZ1BkZiA9IGZhbHNlO1xuICAgICAgICAvLyB0b2RvINC/0L7QtNGD0LzQsNGC0YwsINC60LDQuiDQv9GA0LDQstC40LvRjNC90L4g0YfQuNGC0LDRgtGMINGE0LDQudC7XG4gICAgICAgIC8vIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbcmVzdWx0XSwge3R5cGU6ICdhcHBsaWNhdGlvbi9wZGYnfSk7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKHJlc3VsdCk7XG4gICAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiB7XG4gICAgICAgICAgbGV0IGJhc2U2NGRhdGEgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcbiAgICAgICAgICBiYXNlNjRkYXRhID0gYmFzZTY0ZGF0YS5yZXBsYWNlKCdkYXRhOmFwcGxpY2F0aW9uL3BkZjtiYXNlNjQsJywgJycpO1xuXG4gICAgICAgICAgaWYgKHRoaXMud2l0aExvZykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3BkZlRvU2lnbiA9ICcsIGJhc2U2NGRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnBkZlRvU2lnbiA9IGJhc2U2NGRhdGE7XG4gICAgICAgIH1cbiAgICAgIH0sICgpID0+IHtcbiAgICAgICAgdGhpcy5kb3dubG9hZGluZ1BkZiA9IGZhbHNlO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50IGFjY2VudC1oZWFkIHhsXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGUgdXBwZXJjYXNlXCI+XG4gICAgICA8aDQgY2xhc3M9XCJuZy1iaW5kaW5nXCI+e3t0aXRsZSB8fCAn0J3QsNC/0YDQsNCy0LvQtdC90LjQtSDQtNC+0LrRg9C80LXQvdGC0LAg0L3QsCDQv9C+0LTQv9C40YHQsNC90LjQtSd9fTwvaDQ+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gY2xhc3M9XCJjbG9zZSBjbG9zZS1jbGlja1wiIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMgMUwxIDEzTTEgMWwxMiAxMlwiIHN0cm9rZT1cIiMzQTNBM0FcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHRleHQtY2VudGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIndpZGdldFwiPlxuICAgICAgPG15LXRhYnM+XG4gICAgICAgIDxhcHAtdGFiIHRhYlRpdGxlPVwi0JLQuNC30YPQsNC70LjQt9Cw0YbQuNGPINC00L7QutGD0LzQtdC90YLQsFwiICpuZ0lmPVwicGRmVXJsXCI+XG4gICAgICAgICAgPHByZSAqbmdJZj1cImRvd25sb2FkaW5nUGRmXCI+XG4gICAgICAgICAgICDQn9C+0LTQvtC20LTQuNGC0LUsINC40LTQtdGCINGE0L7RgNC80LjRgNC+0LLQsNC90LjQtSDQtNC+0LrRg9C80LXQvdGC0LBcbiAgICAgICAgICA8L3ByZT5cbiAgICAgICAgICA8aWZyYW1lICpuZ0lmPVwiIWRvd25sb2FkaW5nUGRmXCIgW3NyY109XCJwZGZWaWV3VXJsIHwgc2FmZXVybFwiXG4gICAgICAgICAgICAgICAgICB0aXRsZT1cIndlYnZpZXdlclwiIGZyYW1lYm9yZGVyPVwiMFwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjgwMFwiPjwvaWZyYW1lPlxuICAgICAgICA8L2FwcC10YWI+XG4gICAgICAgIDxhcHAtdGFiIHRhYlRpdGxlPVwi0J/QvtC00L/QuNGB0YvQstCw0LXQvNGL0LUg0LTQsNC90L3Ri9C1XCIgKm5nSWY9XCJ4bWxVcmxcIj5cbiAgICAgICAgICA8cHJlIFtpbm5lclRleHRdPVwieG1sVG9TaWduXCI+PC9wcmU+XG4gICAgICAgIDwvYXBwLXRhYj5cbiAgICAgIDwvbXktdGFicz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgIDxkaXYgKm5nSWY9XCJwZGZVcmwgfHwgeG1sVXJsXCJcbiAgICAgICAgIGNsYXNzPVwibW9kYWwtZm9vdGVyLWl0ZW1cIj5cbiAgICAgIDxhICpuZ0lmPVwicGRmVXJsXCJcbiAgICAgICAgIGNsYXNzPVwibW9kYWwtZm9vdGVyLWl0ZW1fX2xpbmtcIlxuICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgIFtocmVmXT1cInBkZlVybFwiPlxuICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk0xOCAyMS4yNUg2QzUuMzA5NjQgMjEuMjUgNC43NSAyMC42OTA0IDQuNzUgMjBWNEM0Ljc1IDMuMzA5NjQgNS4zMDk2NCAyLjc1IDYgMi43NUgxMy4xODkzTDE5LjI1IDguODEwNjZWMjBDMTkuMjUgMjAuNjkwNCAxOC42OTA0IDIxLjI1IDE4IDIxLjI1WlwiXG4gICAgICAgICAgICBzdHJva2U9XCIjMjgyODI4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICAgPHNwYW4+0KHQutCw0YfQsNGC0Ywg0LTQvtC60YPQvNC10L3Rgjwvc3Bhbj5cbiAgICAgIDwvYT5cbiAgICAgIDxhICpuZ0lmPVwieG1sVXJsXCJcbiAgICAgICAgIGNsYXNzPVwibW9kYWwtZm9vdGVyLWl0ZW1fX2xpbmtcIlxuICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgIFtocmVmXT1cInhtbFVybFwiPlxuICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTYgMTZMMiAxMkw2IDhcIiBzdHJva2U9XCIjMjgyODI4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTggMTZMMjIgMTJMMTggOFwiIHN0cm9rZT1cIiMyODI4MjhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICA8cGF0aCBkPVwiTTcuNTY2ODkgMTkuMTc4MkwxNS41NjY5IDUuMzIxODJcIiBzdHJva2U9XCIjMjgyODI4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8c3Bhbj7QodC60LDRh9Cw0YLRjCBYTUwt0LTQsNC90L3Ri9C1PC9zcGFuPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXItaXRlbVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwibXJ4LWJ0biBtcngtYnRuLXNlY29uZGFyeSBtcngtYnRuLW1kIHdweC0xMjAgbXItM1wiXG4gICAgICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1idG4tbGFiZWxcIj57e2NhbmNlbExhYmVsIHx8ICfQntGC0LzQtdC90LjRgtGMJ319PC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cIm1yeC1idG4gbXJ4LWJ0bi1wcmltYXJ5IG1yeC1idG4tbWQgd3B4LTEyMFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAoY2xpY2spPVwib2soKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtYnRuLWxhYmVsXCI+e3tva0xhYmVsIHx8ICfQn9C+0LTQv9C40YHQsNGC0YwnfX08L2Rpdj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1yZXF1ZXN0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LW1mLXNpZ25lci9zcmMvbGliL21vZGVscy9zaWduLXJlcXVlc3QubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNpZ25Qcm92aWRlclR5cGUgPSAnZW1wdHknIHwgJ2NyeXB0b3RzJyB8ICdjcnlwdG8nIHwgJ2NyeXB0b2ppbm4nO1xuZXhwb3J0IHR5cGUgU2lnblR5cGUgPSAneG1sJyB8ICd4bWx0cycgfCAncGRmJztcblxuZXhwb3J0IGludGVyZmFjZSBTaWduUmVxdWVzdE1vZGVsIHtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIG9rTGFiZWw/OiBzdHJpbmc7XG4gIGNhbmNlbExhYmVsPzogc3RyaW5nO1xuICB4bWxVcmw/OiBzdHJpbmc7XG4gIHBkZlVybD86IHN0cmluZztcbiAgcHJvdmlkZXI6IFNpZ25Qcm92aWRlclR5cGU7XG4gIHNpZ25UeXBlPzogU2lnblR5cGU7XG4gIHdpdGhMb2c/OiBib29sZWFuO1xuICBza2lwU2VydmVyQ2hlY2s/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1yZXF1ZXN0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LW1mLXNpZ25lci9zcmMvbGliL21vZGVscy9zaWduLXJlcXVlc3QubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNpZ25Qcm92aWRlclR5cGUgPSAnZW1wdHknIHwgJ2NyeXB0b3RzJyB8ICdjcnlwdG8nIHwgJ2NyeXB0b2ppbm4nO1xuZXhwb3J0IHR5cGUgU2lnblR5cGUgPSAneG1sJyB8ICd4bWx0cycgfCAncGRmJztcblxuZXhwb3J0IGludGVyZmFjZSBTaWduUmVxdWVzdE1vZGVsIHtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIG9rTGFiZWw/OiBzdHJpbmc7XG4gIGNhbmNlbExhYmVsPzogc3RyaW5nO1xuICB4bWxVcmw/OiBzdHJpbmc7XG4gIHBkZlVybD86IHN0cmluZztcbiAgcHJvdmlkZXI6IFNpZ25Qcm92aWRlclR5cGU7XG4gIHNpZ25UeXBlPzogU2lnblR5cGU7XG4gIHdpdGhMb2c/OiBib29sZWFuO1xuICBza2lwU2VydmVyQ2hlY2s/OiBib29sZWFuO1xuICBjaGVja0Zpbz86IHN0cmluZztcbiAgY2hlY2tPZ3JuPzogc3RyaW5nO1xuICBjaGVja09yZ2FuaXphdGlvbkZ1bGxOYW1lPzogc3RyaW5nO1xuICBjaGVja09yZ2FuaXphdGlvblNob3J0TmFtZT86IHN0cmluZztcbiAgY2hlY2tJbm4/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -4,11 +4,11 @@ class CertificateAdjuster {
|
|
|
4
4
|
name = [name];
|
|
5
5
|
}
|
|
6
6
|
for (var i = 0; i < name.length; i++) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
if (
|
|
11
|
-
let r =
|
|
7
|
+
let n = name[i];
|
|
8
|
+
let re = new RegExp(n + '\\s*=\\s*(?<value>[^=]+)([^,\\/]|$)', 'g');
|
|
9
|
+
let m = re.exec(s);
|
|
10
|
+
if (m !== null && m.groups !== undefined && m.groups !== null) {
|
|
11
|
+
let r = m.groups.value;
|
|
12
12
|
r = r.replace(/^\"?/, '');
|
|
13
13
|
r = r.replace(/\"$/, '');
|
|
14
14
|
r = r.replace(/\"\"/g, '"');
|
|
@@ -67,4 +67,4 @@ class CertificateAdjuster {
|
|
|
67
67
|
}
|
|
68
68
|
const instance = new CertificateAdjuster();
|
|
69
69
|
export { instance as CertificateAdjuster };
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUuYWRqdXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtbWYtc2lnbmVyL3NyYy9saWIvc2VydmljZXMvY2VydGlmaWNhdGUuYWRqdXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxtQkFBbUI7SUFDdkIsT0FBTyxDQUFDLENBQVMsRUFBRSxJQUF1QjtRQUN4QyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDOUIsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDZjtRQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQixJQUFJLEVBQUUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEdBQUcscUNBQXFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUU7Z0JBQzdELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUN2QixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzFCLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDekIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFD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c3MgQ2VydGlmaWNhdGVBZGp1c3RlciB7XG4gIGV4dHJhY3Qoczogc3RyaW5nLCBuYW1lOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiAobmFtZSkgPT09ICdzdHJpbmcnKSB7XG4gICAgICBuYW1lID0gW25hbWVdO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG4gPSBuYW1lW2ldO1xuICAgICAgbGV0IHJlID0gbmV3IFJlZ0V4cChuICsgJ1xcXFxzKj1cXFxccyooPzx2YWx1ZT5bXj1dKykoW14sXFxcXC9dfCQpJywgJ2cnKTtcbiAgICAgIGxldCBtID0gcmUuZXhlYyhzKTtcbiAgICAgIGlmIChtICE9PSBudWxsICYmIG0uZ3JvdXBzICE9PSB1bmRlZmluZWQgJiYgbS5ncm91cHMgIT09IG51bGwpIHtcbiAgICAgICAgbGV0IHIgPSBtLmdyb3Vwcy52YWx1ZTtcbiAgICAgICAgciA9IHIucmVwbGFjZSgvXlxcXCI/LywgJycpO1xuICAgICAgICByID0gci5yZXBsYWNlKC9cXFwiJC8sICcnKTtcbiAgICAgICAgciA9IHIucmVwbGFjZSgvXFxcIlxcXCIvZywgJ1wiJyk7XG4gICAgICAgIHJldHVybiByO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfTtcblxuICBQcmludDJEaWdpdChkaWdpdDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIChkaWdpdCA8IDEwKSA/ICcwJyArIGRpZ2l0IDogZGlnaXQ7XG4gIH07XG5cbiAgR2V0Q2VydERhdGUocGFyYW1EYXRlOiBhbnkpIHtcbiAgICBsZXQgY2VydERhdGUgPSBuZXcgRGF0ZShwYXJhbURhdGUpO1xuICAgIHJldHVybiB0aGlzLlByaW50MkRpZ2l0KGNlcnREYXRlLmdldFVUQ0RhdGUoKSkgKyAnLicgKyB0aGlzLlByaW50MkRpZ2l0KGNlcnREYXRlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAnLicgKyBjZXJ0RGF0ZS5nZXRGdWxsWWVhcigpICsgJyAnICtcbiAgICAgIHRoaXMuUHJpbnQyRGlnaXQoY2VydERhdGUuZ2V0VVRDSG91cnMoKSkgKyAnOicgKyB0aGlzLlByaW50MkRpZ2l0KGNlcnREYXRlLmdldFVUQ01pbnV0ZXMoKSkgK1xuICAgICAgJzonICsgdGhpcy5QcmludDJEaWdpdChjZXJ0RGF0ZS5nZXRVVENTZWNvbmRzKCkpO1xuICB9O1xuXG4gIEdldENlcnRGaW8oY2VydFN1YmplY3ROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBsYXN0TmFtZSA9IHRoaXMuZXh0cmFjdChjZXJ0U3ViamVjdE5hbWUsICdTTicpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmV4dHJhY3QoY2VydFN1YmplY3ROYW1lLCAnRycpO1xuXG4gICAgcmV0dXJuIGxhc3ROYW1lICsgJyAnICsgbmFtZTtcbiAgfTtcblxuICBHZXRDZXJ0UG9zdChjZXJ0U3ViamVjdE5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmV4dHJhY3QoY2VydFN1YmplY3ROYW1lLCAnVCcpO1xuICB9O1xuXG4gIEdldENlcnRPZ3JuKGNlcnRTdWJqZWN0TmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0cmFjdChjZXJ0U3ViamVjdE5hbWUsIFsnT0dSTicsICfQntCT0KDQnScsICfQntCT0KDQndCY0J8nLCdPR1JOSVAnLCAnMS4yLjY0My4xMDAuMSddKTtcbiAgfTtcblxuICBHZXRDZXJ0T3JnKGNlcnRTdWJqZWN0TmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0cmFjdChjZXJ0U3ViamVjdE5hbWUsICdPJyk7XG4gIH07XG5cbiAgR2V0Q2VydElubihjZXJ0U3ViamVjdE5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmV4dHJhY3QoY2VydFN1YmplY3ROYW1lLCBbJ0lOTicsICfQmNCd0J0nLCAnMS4yLjY0My4zLjEzMS4xLjEnXSk7XG4gIH07XG5cbiAgR2V0Q2VydE5hbWUoY2VydFN1YmplY3ROYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5leHRyYWN0KGNlcnRTdWJqZWN0TmFtZSwgJ0NOJyk7XG4gIH07XG5cbiAgR2V0SXNzdWVyKGNlcnRJc3N1ZXJOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5leHRyYWN0KGNlcnRJc3N1ZXJOYW1lLCAnQ04nKTtcbiAgfTtcblxuICBHZXRDZXJ0SW5mb1N0cmluZyhjZXJ0U3ViamVjdE5hbWU6IHN0cmluZywgY2VydEZyb21EYXRlOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5leHRyYWN0KGNlcnRTdWJqZWN0TmFtZSwgJ0NOJykgKyAnOyDQktGL0LTQsNC9OiAnICsgdGhpcy5HZXRDZXJ0RGF0ZShjZXJ0RnJvbURhdGUpO1xuICB9O1xufVxuXG5jb25zdCBpbnN0YW5jZSA9IG5ldyBDZXJ0aWZpY2F0ZUFkanVzdGVyKCk7XG5leHBvcnQgeyBpbnN0YW5jZSBhcyBDZXJ0aWZpY2F0ZUFkanVzdGVyIH07Il19
|
|
@@ -35,11 +35,11 @@ class CertificateAdjuster {
|
|
|
35
35
|
name = [name];
|
|
36
36
|
}
|
|
37
37
|
for (var i = 0; i < name.length; i++) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (
|
|
42
|
-
let r =
|
|
38
|
+
let n = name[i];
|
|
39
|
+
let re = new RegExp(n + '\\s*=\\s*(?<value>[^=]+)([^,\\/]|$)', 'g');
|
|
40
|
+
let m = re.exec(s);
|
|
41
|
+
if (m !== null && m.groups !== undefined && m.groups !== null) {
|
|
42
|
+
let r = m.groups.value;
|
|
43
43
|
r = r.replace(/^\"?/, '');
|
|
44
44
|
r = r.replace(/\"$/, '');
|
|
45
45
|
r = r.replace(/\"\"/g, '"');
|
|
@@ -707,7 +707,8 @@ class SignModalComponent extends SimpleModalComponent {
|
|
|
707
707
|
skipServerCheck: this.skipServerCheck,
|
|
708
708
|
checkFio: this.checkFio,
|
|
709
709
|
checkOgrn: this.checkOgrn,
|
|
710
|
-
|
|
710
|
+
checkOrganizationFullName: this.checkOrganizationFullName,
|
|
711
|
+
checkOrganizationShortName: this.checkOrganizationShortName,
|
|
711
712
|
checkInn: this.checkInn
|
|
712
713
|
})
|
|
713
714
|
.then((ok) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"myrtex-mf-signer.mjs","sources":["../../../projects/myrtex-mf-signer/src/lib/services/crypto.base.service.ts","../../../projects/myrtex-mf-signer/src/lib/services/certificate.adjuster.ts","../../../projects/myrtex-mf-signer/src/lib/services/cryptopro/crypto.pro.base.service.ts","../../../projects/myrtex-mf-signer/src/lib/services/cryptopro/crypto.pro.async.service.ts","../../../projects/myrtex-mf-signer/src/lib/components/certificate-select/certificate-select.component.ts","../../../projects/myrtex-mf-signer/src/lib/components/certificate-select/certificate-select.component.html","../../../projects/myrtex-mf-signer/src/lib/services/cryptopro/crypto.pro.ts.service.ts","../../../projects/myrtex-mf-signer/src/lib/services/crypto.service.ts","../../../projects/myrtex-mf-signer/src/lib/services/crypto.api.service.ts","../../../projects/myrtex-mf-signer/src/lib/providers/crypto.provider.ts","../../../projects/myrtex-mf-signer/src/lib/providers/cryptojinn.provider.ts","../../../projects/myrtex-mf-signer/src/lib/providers/cryptots.provider.ts","../../../projects/myrtex-mf-signer/src/lib/providers/empty.provider.ts","../../../projects/myrtex-mf-signer/src/lib/providers/signprovider.factory.ts","../../../projects/myrtex-mf-signer/src/lib/services/download.service.ts","../../../projects/myrtex-mf-signer/src/lib/components/sign-modal/sign-modal.component.ts","../../../projects/myrtex-mf-signer/src/lib/components/sign-modal/sign-modal.component.html","../../../projects/myrtex-mf-signer/src/lib/services/public.sign.service.ts","../../../projects/myrtex-mf-signer/src/lib/myrtex-signer.module.ts","../../../projects/myrtex-mf-signer/src/public-api.ts","../../../projects/myrtex-mf-signer/src/myrtex-mf-signer.ts"],"sourcesContent":["export class CryptoBaseService {\n\n public available = false;\n options: any = {};\n\n init(): Promise<CryptoBaseService> {\n return Promise.reject('Not implemented');\n };\n\n auth(): Promise<boolean> {\n return Promise.resolve(true);\n };\n}\n","class CertificateAdjuster {\n extract(s: string, name: string | string[]): string {\n if (typeof (name) === 'string') {\n name = [name];\n }\n\n for (var i = 0; i < name.length; i++) {\n var n = name[i];\n var re = new RegExp(n + '\\s*=\\s*([^,\\\\/]+)');\n var matches = s.match(re);\n if (matches && matches.length > 1) {\n let r = matches[1].trim();\n r = r.replace(/^\\\"?/, '');\n r = r.replace(/\\\"$/, '');\n r = r.replace(/\\\"\\\"/g, '\"');\n return r;\n }\n }\n\n return '';\n };\n\n Print2Digit(digit: number) {\n return (digit < 10) ? '0' + digit : digit;\n };\n\n GetCertDate(paramDate: any) {\n let certDate = new Date(paramDate);\n return this.Print2Digit(certDate.getUTCDate()) + '.' + this.Print2Digit(certDate.getMonth() + 1) +\n '.' + certDate.getFullYear() + ' ' +\n this.Print2Digit(certDate.getUTCHours()) + ':' + this.Print2Digit(certDate.getUTCMinutes()) +\n ':' + this.Print2Digit(certDate.getUTCSeconds());\n };\n\n GetCertFio(certSubjectName: string) {\n const lastName = this.extract(certSubjectName, 'SN');\n const name = this.extract(certSubjectName, 'G');\n\n return lastName + ' ' + name;\n };\n\n GetCertPost(certSubjectName: string) {\n return this.extract(certSubjectName, 'T');\n };\n\n GetCertOgrn(certSubjectName: string) {\n return this.extract(certSubjectName, ['OGRN', 'ОГРН', 'ОГРНИП','OGRNIP', '1.2.643.100.1']);\n };\n\n GetCertOrg(certSubjectName: string) {\n return this.extract(certSubjectName, 'O');\n };\n\n GetCertInn(certSubjectName: string) {\n return this.extract(certSubjectName, ['INN', 'ИНН', '1.2.643.3.131.1.1']);\n };\n\n GetCertName(certSubjectName: string) {\n return this.extract(certSubjectName, 'CN');\n };\n\n GetIssuer(certIssuerName: string) {\n return this.extract(certIssuerName, 'CN');\n };\n\n GetCertInfoString(certSubjectName: string, certFromDate: any) {\n return this.extract(certSubjectName, 'CN') + '; Выдан: ' + this.GetCertDate(certFromDate);\n };\n}\n\nconst instance = new CertificateAdjuster();\nexport { instance as CertificateAdjuster };","import {\n CADESCOM_STORE_LOCATION,\n CAPICOM_STORE_NAMES,\n CAPICOM_STORE_OPEN_MODE,\n ProgIds,\n Async\n} from 'cadesplugin-types';\nimport { CertificateModel } from '../../models';\n// @ts-ignore\nimport getCadesplugin from 'async-cadesplugin';\nimport { CryptoBaseService } from '../crypto.base.service';\nimport { CertificateAdjuster } from '../certificate.adjuster';\n\ndeclare global {\n interface Window {\n cadesplugin: Async.IWebClassFactory;\n }\n}\n\nexport class CryptoProBaseService extends CryptoBaseService {\n\n constructor() {\n super();\n }\n\n public async init(): Promise<CryptoBaseService> {\n await getCadesplugin();\n return Promise.resolve(this);\n };\n\n public async getCertificates(): Promise<CertificateModel[]> {\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\n\n let storeCerts = await store.Certificates;\n let count = await storeCerts.Count;\n let certificates: Array<CertificateModel> = [];\n\n for (let i = 1; i <= count; i++) {\n let cert = await storeCerts.Item(i);\n let validFromDate = new Date(await cert.ValidFromDate);\n let validToDate = new Date(await cert.ValidToDate);\n const subjectName = await cert.SubjectName;\n\n certificates.push({\n id: i,\n certificate: cert,\n subjectName: subjectName,\n name: CertificateAdjuster.GetCertInfoString(subjectName, validFromDate),\n cn: CertificateAdjuster.GetCertName(subjectName),\n fio: CertificateAdjuster.GetCertFio(subjectName),\n post: CertificateAdjuster.GetCertPost(subjectName),\n ogrn: CertificateAdjuster.GetCertOgrn(subjectName),\n organization: CertificateAdjuster.GetCertOrg(subjectName),\n inn: CertificateAdjuster.GetCertInn(subjectName),\n validFromDate: validFromDate.toLocaleDateString('ru-RU'),\n validToDate: validToDate.toLocaleDateString('ru-RU'),\n thumbprint: await cert.Thumbprint,\n issuerName: await cert.IssuerName,\n serialNumber: await cert.SerialNumber,\n isExpired: validToDate < new Date()\n });\n }\n await store.Close();\n return certificates;\n }\n}\n","import {\n Async,\n CADESCOM_CADES_TYPE,\n CADESCOM_CONTENT_ENCODING_TYPE,\n CADESCOM_STORE_LOCATION, CAPICOM_STORE_NAMES, CAPICOM_STORE_OPEN_MODE,\n ProgIds\n} from 'cadesplugin-types';\nimport { CryptoProBaseService } from './crypto.pro.base.service';\n\nexport class CryptoProAsyncService extends CryptoProBaseService {\n\n public static readonly key = 'cryptoproasync';\n\n constructor() {\n super();\n }\n\n public async signXml(certificate: any, data: string): Promise<string> {\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let timestamp_service_url = 'http://testca.cryptopro.ru/tsp/tsp.srf';\n await signer.propset_TSAAddress(timestamp_service_url);\n\n let signed: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\n\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\n await signed.propset_Content(encodedXml);\n\n let cades_xml_signature_type_enveloped = 80;\n await signed.propset_SignatureType(cades_xml_signature_type_enveloped);\n\n const signedData = await signed.Sign(signer);\n \n return signedData;\n }\n\n public async signBase64(certificate: any, data: string, detached: boolean = false): Promise<string> {\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let signed: Async.ICPSignedData5 = await window.cadesplugin.CreateObjectAsync(ProgIds.CadesSignedData);\n\n await signed.propset_ContentEncoding(CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY);\n await signed.propset_Content(data);\n\n const signedData = await signed.SignCades(signer, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, detached);\n\n return signedData;\n }\n}\n","import { Component } from '@angular/core';\nimport { SimpleModalComponent } from 'ngx-simple-modal';\nimport { CertificateModel } from '../../models';\n\nexport interface CertificateSelectModel {\n certificates: CertificateModel[];\n}\n\nexport interface CertificateSelectResultModel {\n selected?: CertificateModel;\n}\n\n@Component({\n selector: 'lib-certificate-select',\n templateUrl: './certificate-select.component.html',\n styleUrls: ['./certificate-select.component.css']\n})\nexport class CertificateSelectComponent extends SimpleModalComponent<CertificateSelectModel, CertificateSelectResultModel>\n implements CertificateSelectModel {\n\n certificates: CertificateModel[] = [];\n\n constructor() {\n super();\n this.result = {};\n }\n\n ok(cert: CertificateModel) {\n this.result = {selected: cert};\n this.close();\n }\n}\n","<div class=\"modal-content open accent-head certificate\">\n <div class=\"modal-header\">\n <div class=\"modal-title\" [innerHTML]=\"'Выберите сертификат'\">\n </div>\n <span class='close close-click' (click)=\"close()\">\n <svg width='14' height='14' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <path d='M13 1L1 13M1 1l12 12' stroke='#3A3A3A' stroke-width='1.5' stroke-linecap='round'\n stroke-linejoin='round' />\n </svg>\n </span>\n </div>\n <div class=\"modal-body text-center\">\n\n <div class=\"modal-body-other\">\n <div *ngFor=\"let cert of certificates\">\n <div class=\"modal-body-info\" *ngIf=\"!cert.isExpired\">\n <div class=\"modal-body-info__item\">\n <span class=\"text\">\n Владелец:\n </span>\n <span class=\"text\">\n {{cert.cn}}<br/>\n {{cert.fio}}<span *ngIf=\"cert.post\">, {{cert.post}}</span>\n </span>\n </div>\n <div class=\"modal-body-info__item\">\n <span class=\"text\">\n Срок действия:\n </span>\n <span class=\"text\">\n {{cert.validFromDate}} - {{cert.validToDate}}\n </span>\n </div>\n <div class=\"modal-body-info__item\">\n <span class=\"text hash\">\n {{cert.thumbprint}} {{cert.isExpired ? \"(истек)\" : \"\"}}\n </span>\n </div>\n <button\n (click)=\"ok(cert)\"\n [disabled]=\"cert.isExpired\"\n class=\"btn btn-md\">Создать подпись</button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n </div>\n</div>","import {\n Async,\n CADESCOM_STORE_LOCATION, CADESCOM_XML_SIGNATURE_TYPE,\n CAPICOM_STORE_NAMES,\n CAPICOM_STORE_OPEN_MODE,\n ProgIds\n} from 'cadesplugin-types';\nimport { CryptoProBaseService } from './crypto.pro.base.service';\n\nexport class CryptoProTsService extends CryptoProBaseService {\n\n public static readonly key = 'cryptoprots';\n\n constructor() {\n super();\n }\n\n private get TIMESTAMP_SERVICE_URL(): string {\n return 'http://testca.cryptopro.ru/tsp/tsp.srf';\n }\n\n public async sign(certificate: any, data: string): Promise<string> {\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\n\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let signedXML: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\n\n let publicKey: Async.IPublicKey = await certificate.PublicKey();\n let algorithm: Async.IOID = await publicKey.Algorithm;\n let algorithmOid = await algorithm.Value;\n\n let {signMethod, digestMethod} = this.getSigningMethods(algorithmOid);\n\n //await signer.propset_Options(api.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN);\n\n await signer.propset_TSAAddress(this.TIMESTAMP_SERVICE_URL);\n\n if (data) {\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\n await signedXML.propset_Content(encodedXml);\n }\n\n await signedXML.propset_SignatureType(CADESCOM_XML_SIGNATURE_TYPE.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED);\n await signedXML.propset_SignatureMethod(signMethod);\n await signedXML.propset_DigestMethod(digestMethod);\n\n let signature = await signedXML.Sign(signer);\n\n await store.Close();\n\n return signature;\n }\n\n private getSigningMethods(algorithmOid: string): { signMethod: string, digestMethod: string } {\n let signMethod = '', digestMethod = '';\n\n if (algorithmOid == '1.2.643.7.1.1.1.1') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 256 бит\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\n } else if (algorithmOid == '1.2.643.7.1.1.1.2') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 512 бит\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512';\n } else if (algorithmOid == '1.2.643.2.2.19') { // алгоритм ГОСТ Р 34.10-2001\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\n }\n\n return {signMethod, digestMethod};\n }\n}\n","import { CryptoProAsyncService } from './cryptopro/crypto.pro.async.service';\nimport { Injectable } from '@angular/core';\nimport { CryptoBaseService } from './crypto.base.service';\nimport { CryptoProTsService } from './cryptopro/crypto.pro.ts.service';\n\nexport interface CryptoHandler {\n key: string;\n name: string;\n service: CryptoBaseService;\n sign: boolean;\n default: boolean;\n disabled?: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoService {\n\n handlers: Map<string, CryptoHandler> = new Map<string, CryptoHandler>();\n selectPromise: any = null;\n private _initialized = false;\n private _withLog = false;\n\n public async startUp(withLog? : boolean): Promise<void> {\n this._withLog = !!withLog;\n\n if (!this._initialized) {\n this.registerHandler({\n key: CryptoProAsyncService.key,\n name: 'КриптоПро',\n service: new CryptoProAsyncService(),\n sign: true,\n default: true\n });\n this.registerHandler({\n key: CryptoProTsService.key,\n name: 'КриптоПро',\n service: new CryptoProTsService(),\n sign: true,\n default: false\n });\n await this.init();\n this._initialized = true;\n }\n this.log('Handlers init completed');\n return Promise.resolve();\n }\n\n public registerHandler(options: CryptoHandler) {\n this.log('Register handler', options);\n\n options.disabled = false;\n this.handlers.set(options.key, options);\n };\n\n public disableHandler(key: string): void {\n const handler = this.handlers.get(key);\n if (handler) {\n handler.disabled = true;\n }\n };\n\n public getHandler(key: string): Promise<CryptoHandler> {\n const handler = this.getActiveHandlers()\n .find(x => x.key == key);\n\n if (handler) {\n return Promise.resolve(handler);\n }\n return Promise.reject(`Not found ${key} handler`);\n };\n\n public getDefaultHandler() : Promise<CryptoHandler> {\n const handler = this.getActiveHandlers()\n .find(x => x.default);\n\n if (handler) {\n return Promise.resolve(handler);\n }\n return Promise.reject(`Not found default handler`);\n };\n\n public getService<T extends CryptoBaseService>(key: string): Promise<T> {\n const handler = this.handlers.get(key);\n if (handler) {\n return Promise.resolve(handler.service as T);\n }\n return Promise.reject(`Not found ${key}`);\n };\n\n public getActiveHandlers(): Array<CryptoHandler> {\n const active = new Array<CryptoHandler>();\n this.handlers.forEach(s => {\n if (!s.disabled) {\n active.push(s);\n }\n });\n return active;\n };\n\n private log(...args: any[]) {\n if (this._withLog) {\n console.log(args);\n }\n };\n\n private async init(): Promise<any> {\n this.log('Initialize handlers');\n\n const promises: Array<Promise<any>> = [];\n this.handlers.forEach(handler => {\n handler.service.available = false;\n\n this.log('Initialize ' + handler.name);\n\n const promise = handler.service.init().then((result) => {\n result.available = true;\n this.log('Handler init success', result);\n }).catch(reason => {\n this.log('Handler init fail', reason);\n });\n\n promises.push(promise);\n });\n\n return await Promise.all(promises);\n };\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\nimport { SignValidateResponse } from '../models';\nimport { VerifyCertModel } from '../models/internal/verify.cert.model';\nimport { VerifyCertResponseModel } from '../models/internal/verify.cert.response.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoApiService extends EndpointBaseService {\n\n private urlCrypto = '/cryptopro/api';\n private urlSigner = '/signer/api/v1';\n\n constructor(protected http: HttpClient, protected injector: Injector) {\n super(http, injector);\n }\n\n public verify(data: VerifyCertModel): Observable<VerifyCertResponseModel> {\n return this.http.post<VerifyCertResponseModel>(`${this.urlCrypto}/cryptopro/verify`, data);\n }\n\n public validate(data: string): Observable<SignValidateResponse> {\n return this.http.post<SignValidateResponse>(`${this.urlSigner}/jinn/validate`, {data});\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Base64 } from 'js-base64';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { ISignProvider } from './interfaces/isign.provider';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { SignedResultModel } from '../models';\nimport { AlertService, DialogColor, DialogType } from 'myrtex-mf-ui-composite';\n\ndeclare const window: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private alertService: AlertService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, withLog?: boolean, options?: any): Promise<SignedResultModel> {\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, { certificates: list }).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n let certificateFail = 0;\n if (window.CRYPTO_SKIP_CHECK !== true) {\n if (options.checkFio &&\n modalResult.selected.fio.toLowerCase() !== options.checkFio.toLowerCase()) {\n certificateFail = 1;\n }\n\n\n var ogrnIsValid = modalResult.selected.ogrn?.toLowerCase() == options.checkOgrn?.toLowerCase();\n\n if (options.checkOgrn && !ogrnIsValid) {\n certificateFail = 2;\n }\n\n if (options.checkOrganizationFullName || options.checkOrganizationShortName) {\n var organization = modalResult.selected.organization;\n if (!organization) {\n organization = modalResult.selected.cn;\n }\n\n var orgIsValid = organization?.toLowerCase() == options.checkOrganizationFullName?.toLowerCase()\n || organization?.toLowerCase() == options.checkOrganizationShortName?.toLowerCase();\n if (!orgIsValid) {\n certificateFail = 2;\n }\n }\n }\n\n if (certificateFail > 0) {\n this.alertService.showDialog({\n title: 'Ошибка сертификата',\n message: certificateFail == 1 ?\n 'Данные лица, подписывающего заявку не совпадают с данными усиленной квалифицированной подписи.' :\n 'Данные организации не совпадают с данными усиленной квалифицированной подписи. ' +\n 'Убедитесь, что вы используете сертификат, выданные от организации.',\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n //\n }\n });\n\n return Promise.reject();\n }\n\n if (withLog) {\n console.log('Signing data', data);\n }\n\n const signedData = await service.signBase64(modalResult.selected.certificate, data, true);\n\n if (withLog) {\n console.log('Signing data', data);\n }\n\n if (!options.skipServerCheck) {\n const verifyResult = await this.cryptoApiService.verify({\n data: data,\n signature: Base64.encode(signedData),\n detached: true\n }).toPromise();\n\n return {\n data,\n success: verifyResult.success,\n signed: signedData,\n certificate: modalResult.selected,\n };\n } else {\n return {\n data,\n success: true,\n signed: signedData,\n certificate: modalResult.selected,\n };\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { ISignProvider } from './interfaces/isign.provider';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoJinnProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, withLog?: boolean, options?: any): Promise<SignedResultModel> {\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, { certificates: list }).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n if (withLog) {\n console.log('Signing data', data);\n }\n\n const signedData = await service.signXml(modalResult.selected.certificate, data);\n\n const verifyResult = await this.cryptoApiService.validate(signedData).toPromise();\n\n return {\n data: signedData,\n success: verifyResult.success,\n certificate: modalResult.selected,\n validateResult: verifyResult.validateResult\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ISignProvider } from './interfaces/isign.provider';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoProTsService } from '../services/cryptopro/crypto.pro.ts.service';\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoTsProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, withLog?: boolean, options?: any): Promise<SignedResultModel> {\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProTsService>(CryptoProTsService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n const signedData = await service.sign(modalResult.selected.certificate, data);\n\n if (!options.skipServerCheck) {\n const validateResult = await this.cryptoApiService.validate(signedData).toPromise();\n\n return {\n data,\n signed: signedData,\n success: validateResult.success,\n validateResult: validateResult.validateResult,\n certificate: modalResult.selected,\n };\n } else {\n return {\n data,\n signed: signedData,\n success: true,\n validateResult: '',\n certificate: modalResult.selected,\n };\n }\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { ISignProvider } from \"./interfaces/isign.provider\";\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EmptyProvider implements ISignProvider {\n\n public async sign(data: string, withLog?: boolean, options?: any): Promise<SignedResultModel> {\n return Promise.resolve({\n data: data,\n success: true\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CryptoProvider } from './crypto.provider';\nimport { CryptoJinnProvider } from './cryptojinn.provider';\nimport { EmptyProvider } from './empty.provider';\nimport { CryptoTsProvider } from './cryptots.provider';\nimport { SignProviderType } from '../models';\nimport { ISignProvider } from './interfaces/isign.provider';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SignProviderFactory {\n constructor(\n protected cryptoProvider: CryptoProvider,\n protected cryptoJinnProvider: CryptoJinnProvider,\n protected cryptoTsProvider: CryptoTsProvider,\n protected emptyProvider: EmptyProvider) {\n }\n\n create(providerType: SignProviderType): ISignProvider {\n switch (providerType) {\n case 'crypto':\n return this.cryptoProvider;\n case 'cryptojinn':\n return this.cryptoJinnProvider;\n case 'cryptots':\n return this.cryptoTsProvider;\n case 'empty':\n return this.emptyProvider;\n }\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DownloadService extends EndpointBaseService {\n\n private url = '/signer/api/v1/download';\n\n constructor(protected http: HttpClient, protected injector: Injector) {\n super(http, injector);\n }\n\n public xml(url: string): Observable<any> {\n return this.http.get(url,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'text/xml'),\n responseType: 'text'\n });\n }\n\n public pdf(url: string): Observable<any> {\n return this.http.get(url,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'application/pdf'),\n responseType: 'blob'\n });\n }\n\n /*public xml(url: string): Observable<any> {\n return this.http.get(`${this.url}/xml?url=${encodeURIComponent(url)}`,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'text/xml'),\n responseType: 'text'\n });\n }\n\n public pdf(url: string): Observable<any> {\n return this.http.get(`${this.url}/pdf?url=${encodeURIComponent(url)}`,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'application/pdf'),\n responseType: 'blob'\n });\n }*/\n}\n","import { Component } from '@angular/core';\nimport { AlertService, DialogColor, DialogType, Utilities } from 'myrtex-mf-ui-composite';\nimport { SimpleModalComponent } from 'ngx-simple-modal';\nimport { Base64 } from 'js-base64';\nimport { SignProviderType, SignType } from '../../models';\nimport { SignedResultModel } from '../../models/signed-result.model';\nimport { SignRequestModel } from '../../models/sign-request.model';\nimport { DownloadService } from '../../services/download.service';\nimport { SignProviderFactory } from '../../providers/signprovider.factory';\nimport { OnInit } from '@angular/core/core';\n\nexport interface SignedResponseModel {\n result: boolean;\n model?: SignedResultModel;\n}\n\n@Component({\n selector: 'lib-sign-modal',\n templateUrl: './sign-modal.component.html',\n styleUrls: ['./sign-modal.component.css']\n})\nexport class SignModalComponent\n extends SimpleModalComponent<SignRequestModel, SignedResponseModel> implements OnInit, SignRequestModel {\n\n public title = '';\n public okLabel = '';\n public cancelLabel = '';\n\n public xmlUrl?: string;\n public pdfUrl?: string;\n\n public provider: SignProviderType = 'empty';\n public signType: SignType = 'xml';\n\n public xmlToSign = '';\n public pdfToSign = '';\n public withLog?: boolean;\n public skipServerCheck?: boolean;\n public checkFio?: string;\n public checkOgrn?: string;\n public checkOrganization?: string;\n public checkInn?: string;\n\n downloadingPdf = false;\n\n constructor(private signProviderFactory: SignProviderFactory,\n private downloadService: DownloadService,\n private alertService: AlertService) {\n super();\n this.result = { result: false };\n }\n\n get disabled() {\n // todo как можно дизеблить кнопу\n return false;\n }\n\n get pdfViewUrl(): string {\n return this.pdfUrl ?\n `/signer/pdfjs/web/viewer.html?file=${encodeURIComponent(this.pdfUrl)}` : '';\n }\n\n ngOnInit(): void {\n this.downloadXml();\n this.downloadPdf();\n }\n\n public ok() {\n\n if (!this.signType) {\n this.signType = 'xml';\n }\n\n let signData = this.xmlToSign;\n\n switch (this.signType) {\n case 'xml':\n signData = Base64.encode(this.xmlToSign);\n break;\n case 'pdf':\n signData = this.pdfToSign;\n break;\n case 'xmlts':\n signData = this.xmlToSign;\n break;\n }\n\n this.signProviderFactory.create(this.provider)\n .sign(signData, this.withLog, {\n skipServerCheck: this.skipServerCheck,\n checkFio: this.checkFio,\n checkOgrn: this.checkOgrn,\n checkOrganization: this.checkOrganization,\n checkInn: this.checkInn\n })\n .then((ok: SignedResultModel) => {\n this.processResult(ok);\n }).catch((error: any) => {\n this.processError(error);\n });\n }\n\n public cancel() {\n this.close();\n }\n\n private processResult(signResult: SignedResultModel): void {\n if (signResult.success) {\n this.result = { model: signResult, result: true };\n this.close();\n } else {\n this.alertService.showDialog({\n title: 'Ошибка проверки подписи',\n message: 'Подпись не валидна',\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n }\n });\n }\n }\n\n private processError(error: any): void {\n if (this.withLog) {\n console.error(error);\n }\n\n this.alertService.showDialog({\n title: 'Ошибка проверки подписи',\n message: JSON.stringify(error),\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n }\n });\n }\n\n private downloadXml(): void {\n if (!this.xmlUrl) {\n return;\n }\n\n if (this.withLog) {\n console.log('Downloading xml');\n }\n\n this.downloadService.xml(this.xmlUrl).subscribe(result => {\n if (this.withLog) {\n console.log('xmlToSign = ', result);\n }\n this.xmlToSign = result;\n });\n }\n\n private downloadPdf(): void {\n if (!this.pdfUrl) {\n return;\n }\n\n if (this.withLog) {\n console.log('Downloading pdf');\n }\n\n this.downloadingPdf = true;\n this.downloadService.pdf(this.pdfUrl)\n .subscribe(result => {\n this.downloadingPdf = false;\n // todo подумать, как правильно читать файл\n // const blob = new Blob([result], {type: 'application/pdf'});\n const reader = new FileReader();\n reader.readAsDataURL(result);\n reader.onloadend = () => {\n let base64data = reader.result as string;\n base64data = base64data.replace('data:application/pdf;base64,', '');\n\n if (this.withLog) {\n console.log('pdfToSign = ', base64data);\n }\n this.pdfToSign = base64data;\n }\n }, () => {\n this.downloadingPdf = false;\n });\n }\n}\n","<div class=\"modal-content accent-head xl\">\n <div class=\"modal-header\">\n <div class=\"modal-title uppercase\">\n <h4 class=\"ng-binding\">{{title || 'Направление документа на подписание'}}</h4>\n </div>\n <span class=\"close close-click\" (click)=\"close()\">\n <svg width=\"14\" height=\"14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M13 1L1 13M1 1l12 12\" stroke=\"#3A3A3A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n </div>\n\n <div class=\"modal-body text-center\">\n <div class=\"widget\">\n <my-tabs>\n <app-tab tabTitle=\"Визуализация документа\" *ngIf=\"pdfUrl\">\n <pre *ngIf=\"downloadingPdf\">\n Подождите, идет формирование документа\n </pre>\n <iframe *ngIf=\"!downloadingPdf\" [src]=\"pdfViewUrl | safeurl\"\n title=\"webviewer\" frameborder=\"0\" width=\"100%\" height=\"800\"></iframe>\n </app-tab>\n <app-tab tabTitle=\"Подписываемые данные\" *ngIf=\"xmlUrl\">\n <pre [innerText]=\"xmlToSign\"></pre>\n </app-tab>\n </my-tabs>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <div *ngIf=\"pdfUrl || xmlUrl\"\n class=\"modal-footer-item\">\n <a *ngIf=\"pdfUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"pdfUrl\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M18 21.25H6C5.30964 21.25 4.75 20.6904 4.75 20V4C4.75 3.30964 5.30964 2.75 6 2.75H13.1893L19.25 8.81066V20C19.25 20.6904 18.6904 21.25 18 21.25Z\"\n stroke=\"#282828\" stroke-width=\"1.5\"/>\n </svg>\n <span>Скачать документ</span>\n </a>\n <a *ngIf=\"xmlUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"xmlUrl\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 16L2 12L6 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M18 16L22 12L18 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"/>\n <path d=\"M7.56689 19.1782L15.5669 5.32182\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"/>\n </svg>\n <span>Скачать XML-данные</span>\n </a>\n </div>\n <div class=\"modal-footer-item\">\n <button\n class=\"mrx-btn mrx-btn-secondary mrx-btn-md wpx-120 mr-3\"\n (click)=\"cancel()\"\n >\n <div class=\"mrx-btn-label\">{{cancelLabel || 'Отменить'}}</div>\n </button>\n <button\n class=\"mrx-btn mrx-btn-primary mrx-btn-md wpx-120\"\n [disabled]=\"disabled\"\n (click)=\"ok()\"\n >\n <div class=\"mrx-btn-label\">{{okLabel || 'Подписать'}}</div>\n </button>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { SignedResultModel, SignRequestModel } from '../models';\nimport { SignModalComponent } from '../components/sign-modal/sign-modal.component';\nimport { TmpTokenService, Utilities } from 'myrtex-mf-ui-composite';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SignService {\n\n constructor(private simpleModalService: SimpleModalService, private tmpTokenService: TmpTokenService) {\n }\n\n public sign(request: SignRequestModel,\n ok: (result?: SignedResultModel) => void,\n cancel?: () => void): void {\n\n const baseUrl = Utilities.commonPart(request.xmlUrl, request.pdfUrl);\n\n this.tmpTokenService.generate(baseUrl).subscribe(token => {\n\n const ph = `${window.location.protocol}//${window.location.host}`;\n if (request.xmlUrl) {\n request.xmlUrl = ph + Utilities.updateQueryStringParameter(request.xmlUrl, 'authToken', token);\n }\n\n if (request.pdfUrl) {\n request.pdfUrl = ph + Utilities.updateQueryStringParameter(request.pdfUrl, 'authToken', token);\n }\n\n this.simpleModalService.addModal(SignModalComponent, request, { wrapperClass: 'in xl' })\n .subscribe(result => {\n if (result && result.result) {\n ok(result.model);\n } else {\n if (cancel) {\n cancel();\n }\n }\n });\n\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SignModalComponent } from './components/sign-modal/sign-modal.component';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MyrtexMfUiCompositeModule } from 'myrtex-mf-ui-composite';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { SignService } from './services/public.sign.service';\nimport { DownloadService } from './services/download.service';\nimport { CertificateSelectComponent } from './components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from './services/crypto.api.service';\nimport { SignProviderFactory } from './providers/signprovider.factory';\nimport { CryptoProvider } from './providers/crypto.provider';\nimport { CryptoJinnProvider } from './providers/cryptojinn.provider';\nimport { CryptoTsProvider } from './providers/cryptots.provider';\nimport { EmptyProvider } from './providers/empty.provider';\n\n@NgModule({\n declarations: [\n SignModalComponent,\n CertificateSelectComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n NgSelectModule,\n MyrtexMfUiCompositeModule\n ],\n exports: [\n SignModalComponent\n ],\n providers: [\n SignProviderFactory,\n CryptoProvider,\n CryptoJinnProvider,\n CryptoTsProvider,\n EmptyProvider,\n\n CryptoApiService,\n SignService,\n DownloadService\n ]\n})\nexport class MyrtexSignerModule { }\n","/*\n * Public API Surface of myrtex-mf-signer\n */\n// models\nexport * from './lib/models/index';\n\n// components\nexport * from './lib/components/sign-modal/sign-modal.component';\n\n// modules\nexport * from './lib/myrtex-signer.module';\n\n// services\nexport * from './lib/services/public.sign.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CertificateAdjuster","i1","i2.CryptoService","i4.CryptoApiService","i3.CryptoApiService","i1.CryptoProvider","i2.CryptoJinnProvider","i3.CryptoTsProvider","i4.EmptyProvider","i1.SignProviderFactory","i2.DownloadService","i4","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"myrtex-mf-signer.mjs","sources":["../../../projects/myrtex-mf-signer/src/lib/services/crypto.base.service.ts","../../../projects/myrtex-mf-signer/src/lib/services/certificate.adjuster.ts","../../../projects/myrtex-mf-signer/src/lib/services/cryptopro/crypto.pro.base.service.ts","../../../projects/myrtex-mf-signer/src/lib/services/cryptopro/crypto.pro.async.service.ts","../../../projects/myrtex-mf-signer/src/lib/components/certificate-select/certificate-select.component.ts","../../../projects/myrtex-mf-signer/src/lib/components/certificate-select/certificate-select.component.html","../../../projects/myrtex-mf-signer/src/lib/services/cryptopro/crypto.pro.ts.service.ts","../../../projects/myrtex-mf-signer/src/lib/services/crypto.service.ts","../../../projects/myrtex-mf-signer/src/lib/services/crypto.api.service.ts","../../../projects/myrtex-mf-signer/src/lib/providers/crypto.provider.ts","../../../projects/myrtex-mf-signer/src/lib/providers/cryptojinn.provider.ts","../../../projects/myrtex-mf-signer/src/lib/providers/cryptots.provider.ts","../../../projects/myrtex-mf-signer/src/lib/providers/empty.provider.ts","../../../projects/myrtex-mf-signer/src/lib/providers/signprovider.factory.ts","../../../projects/myrtex-mf-signer/src/lib/services/download.service.ts","../../../projects/myrtex-mf-signer/src/lib/components/sign-modal/sign-modal.component.ts","../../../projects/myrtex-mf-signer/src/lib/components/sign-modal/sign-modal.component.html","../../../projects/myrtex-mf-signer/src/lib/services/public.sign.service.ts","../../../projects/myrtex-mf-signer/src/lib/myrtex-signer.module.ts","../../../projects/myrtex-mf-signer/src/public-api.ts","../../../projects/myrtex-mf-signer/src/myrtex-mf-signer.ts"],"sourcesContent":["export class CryptoBaseService {\n\n public available = false;\n options: any = {};\n\n init(): Promise<CryptoBaseService> {\n return Promise.reject('Not implemented');\n };\n\n auth(): Promise<boolean> {\n return Promise.resolve(true);\n };\n}\n","class CertificateAdjuster {\n extract(s: string, name: string | string[]): string {\n if (typeof (name) === 'string') {\n name = [name];\n }\n\n for (var i = 0; i < name.length; i++) {\n let n = name[i];\n let re = new RegExp(n + '\\\\s*=\\\\s*(?<value>[^=]+)([^,\\\\/]|$)', 'g');\n let m = re.exec(s);\n if (m !== null && m.groups !== undefined && m.groups !== null) {\n let r = m.groups.value;\n r = r.replace(/^\\\"?/, '');\n r = r.replace(/\\\"$/, '');\n r = r.replace(/\\\"\\\"/g, '\"');\n return r;\n }\n }\n\n return '';\n };\n\n Print2Digit(digit: number) {\n return (digit < 10) ? '0' + digit : digit;\n };\n\n GetCertDate(paramDate: any) {\n let certDate = new Date(paramDate);\n return this.Print2Digit(certDate.getUTCDate()) + '.' + this.Print2Digit(certDate.getMonth() + 1) +\n '.' + certDate.getFullYear() + ' ' +\n this.Print2Digit(certDate.getUTCHours()) + ':' + this.Print2Digit(certDate.getUTCMinutes()) +\n ':' + this.Print2Digit(certDate.getUTCSeconds());\n };\n\n GetCertFio(certSubjectName: string) {\n const lastName = this.extract(certSubjectName, 'SN');\n const name = this.extract(certSubjectName, 'G');\n\n return lastName + ' ' + name;\n };\n\n GetCertPost(certSubjectName: string) {\n return this.extract(certSubjectName, 'T');\n };\n\n GetCertOgrn(certSubjectName: string) {\n return this.extract(certSubjectName, ['OGRN', 'ОГРН', 'ОГРНИП','OGRNIP', '1.2.643.100.1']);\n };\n\n GetCertOrg(certSubjectName: string) {\n return this.extract(certSubjectName, 'O');\n };\n\n GetCertInn(certSubjectName: string) {\n return this.extract(certSubjectName, ['INN', 'ИНН', '1.2.643.3.131.1.1']);\n };\n\n GetCertName(certSubjectName: string) {\n return this.extract(certSubjectName, 'CN');\n };\n\n GetIssuer(certIssuerName: string) {\n return this.extract(certIssuerName, 'CN');\n };\n\n GetCertInfoString(certSubjectName: string, certFromDate: any) {\n return this.extract(certSubjectName, 'CN') + '; Выдан: ' + this.GetCertDate(certFromDate);\n };\n}\n\nconst instance = new CertificateAdjuster();\nexport { instance as CertificateAdjuster };","import {\n CADESCOM_STORE_LOCATION,\n CAPICOM_STORE_NAMES,\n CAPICOM_STORE_OPEN_MODE,\n ProgIds,\n Async\n} from 'cadesplugin-types';\nimport { CertificateModel } from '../../models';\n// @ts-ignore\nimport getCadesplugin from 'async-cadesplugin';\nimport { CryptoBaseService } from '../crypto.base.service';\nimport { CertificateAdjuster } from '../certificate.adjuster';\n\ndeclare global {\n interface Window {\n cadesplugin: Async.IWebClassFactory;\n }\n}\n\nexport class CryptoProBaseService extends CryptoBaseService {\n\n constructor() {\n super();\n }\n\n public async init(): Promise<CryptoBaseService> {\n await getCadesplugin();\n return Promise.resolve(this);\n };\n\n public async getCertificates(): Promise<CertificateModel[]> {\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\n\n let storeCerts = await store.Certificates;\n let count = await storeCerts.Count;\n let certificates: Array<CertificateModel> = [];\n\n for (let i = 1; i <= count; i++) {\n let cert = await storeCerts.Item(i);\n let validFromDate = new Date(await cert.ValidFromDate);\n let validToDate = new Date(await cert.ValidToDate);\n const subjectName = await cert.SubjectName;\n\n certificates.push({\n id: i,\n certificate: cert,\n subjectName: subjectName,\n name: CertificateAdjuster.GetCertInfoString(subjectName, validFromDate),\n cn: CertificateAdjuster.GetCertName(subjectName),\n fio: CertificateAdjuster.GetCertFio(subjectName),\n post: CertificateAdjuster.GetCertPost(subjectName),\n ogrn: CertificateAdjuster.GetCertOgrn(subjectName),\n organization: CertificateAdjuster.GetCertOrg(subjectName),\n inn: CertificateAdjuster.GetCertInn(subjectName),\n validFromDate: validFromDate.toLocaleDateString('ru-RU'),\n validToDate: validToDate.toLocaleDateString('ru-RU'),\n thumbprint: await cert.Thumbprint,\n issuerName: await cert.IssuerName,\n serialNumber: await cert.SerialNumber,\n isExpired: validToDate < new Date()\n });\n }\n await store.Close();\n return certificates;\n }\n}\n","import {\n Async,\n CADESCOM_CADES_TYPE,\n CADESCOM_CONTENT_ENCODING_TYPE,\n CADESCOM_STORE_LOCATION, CAPICOM_STORE_NAMES, CAPICOM_STORE_OPEN_MODE,\n ProgIds\n} from 'cadesplugin-types';\nimport { CryptoProBaseService } from './crypto.pro.base.service';\n\nexport class CryptoProAsyncService extends CryptoProBaseService {\n\n public static readonly key = 'cryptoproasync';\n\n constructor() {\n super();\n }\n\n public async signXml(certificate: any, data: string): Promise<string> {\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let timestamp_service_url = 'http://testca.cryptopro.ru/tsp/tsp.srf';\n await signer.propset_TSAAddress(timestamp_service_url);\n\n let signed: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\n\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\n await signed.propset_Content(encodedXml);\n\n let cades_xml_signature_type_enveloped = 80;\n await signed.propset_SignatureType(cades_xml_signature_type_enveloped);\n\n const signedData = await signed.Sign(signer);\n \n return signedData;\n }\n\n public async signBase64(certificate: any, data: string, detached: boolean = false): Promise<string> {\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let signed: Async.ICPSignedData5 = await window.cadesplugin.CreateObjectAsync(ProgIds.CadesSignedData);\n\n await signed.propset_ContentEncoding(CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY);\n await signed.propset_Content(data);\n\n const signedData = await signed.SignCades(signer, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, detached);\n\n return signedData;\n }\n}\n","import { Component } from '@angular/core';\nimport { SimpleModalComponent } from 'ngx-simple-modal';\nimport { CertificateModel } from '../../models';\n\nexport interface CertificateSelectModel {\n certificates: CertificateModel[];\n}\n\nexport interface CertificateSelectResultModel {\n selected?: CertificateModel;\n}\n\n@Component({\n selector: 'lib-certificate-select',\n templateUrl: './certificate-select.component.html',\n styleUrls: ['./certificate-select.component.css']\n})\nexport class CertificateSelectComponent extends SimpleModalComponent<CertificateSelectModel, CertificateSelectResultModel>\n implements CertificateSelectModel {\n\n certificates: CertificateModel[] = [];\n\n constructor() {\n super();\n this.result = {};\n }\n\n ok(cert: CertificateModel) {\n this.result = {selected: cert};\n this.close();\n }\n}\n","<div class=\"modal-content open accent-head certificate\">\n <div class=\"modal-header\">\n <div class=\"modal-title\" [innerHTML]=\"'Выберите сертификат'\">\n </div>\n <span class='close close-click' (click)=\"close()\">\n <svg width='14' height='14' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <path d='M13 1L1 13M1 1l12 12' stroke='#3A3A3A' stroke-width='1.5' stroke-linecap='round'\n stroke-linejoin='round' />\n </svg>\n </span>\n </div>\n <div class=\"modal-body text-center\">\n\n <div class=\"modal-body-other\">\n <div *ngFor=\"let cert of certificates\">\n <div class=\"modal-body-info\" *ngIf=\"!cert.isExpired\">\n <div class=\"modal-body-info__item\">\n <span class=\"text\">\n Владелец:\n </span>\n <span class=\"text\">\n {{cert.cn}}<br/>\n {{cert.fio}}<span *ngIf=\"cert.post\">, {{cert.post}}</span>\n </span>\n </div>\n <div class=\"modal-body-info__item\">\n <span class=\"text\">\n Срок действия:\n </span>\n <span class=\"text\">\n {{cert.validFromDate}} - {{cert.validToDate}}\n </span>\n </div>\n <div class=\"modal-body-info__item\">\n <span class=\"text hash\">\n {{cert.thumbprint}} {{cert.isExpired ? \"(истек)\" : \"\"}}\n </span>\n </div>\n <button\n (click)=\"ok(cert)\"\n [disabled]=\"cert.isExpired\"\n class=\"btn btn-md\">Создать подпись</button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n </div>\n</div>","import {\n Async,\n CADESCOM_STORE_LOCATION, CADESCOM_XML_SIGNATURE_TYPE,\n CAPICOM_STORE_NAMES,\n CAPICOM_STORE_OPEN_MODE,\n ProgIds\n} from 'cadesplugin-types';\nimport { CryptoProBaseService } from './crypto.pro.base.service';\n\nexport class CryptoProTsService extends CryptoProBaseService {\n\n public static readonly key = 'cryptoprots';\n\n constructor() {\n super();\n }\n\n private get TIMESTAMP_SERVICE_URL(): string {\n return 'http://testca.cryptopro.ru/tsp/tsp.srf';\n }\n\n public async sign(certificate: any, data: string): Promise<string> {\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\n\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let signedXML: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\n\n let publicKey: Async.IPublicKey = await certificate.PublicKey();\n let algorithm: Async.IOID = await publicKey.Algorithm;\n let algorithmOid = await algorithm.Value;\n\n let {signMethod, digestMethod} = this.getSigningMethods(algorithmOid);\n\n //await signer.propset_Options(api.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN);\n\n await signer.propset_TSAAddress(this.TIMESTAMP_SERVICE_URL);\n\n if (data) {\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\n await signedXML.propset_Content(encodedXml);\n }\n\n await signedXML.propset_SignatureType(CADESCOM_XML_SIGNATURE_TYPE.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED);\n await signedXML.propset_SignatureMethod(signMethod);\n await signedXML.propset_DigestMethod(digestMethod);\n\n let signature = await signedXML.Sign(signer);\n\n await store.Close();\n\n return signature;\n }\n\n private getSigningMethods(algorithmOid: string): { signMethod: string, digestMethod: string } {\n let signMethod = '', digestMethod = '';\n\n if (algorithmOid == '1.2.643.7.1.1.1.1') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 256 бит\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\n } else if (algorithmOid == '1.2.643.7.1.1.1.2') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 512 бит\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512';\n } else if (algorithmOid == '1.2.643.2.2.19') { // алгоритм ГОСТ Р 34.10-2001\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\n }\n\n return {signMethod, digestMethod};\n }\n}\n","import { CryptoProAsyncService } from './cryptopro/crypto.pro.async.service';\nimport { Injectable } from '@angular/core';\nimport { CryptoBaseService } from './crypto.base.service';\nimport { CryptoProTsService } from './cryptopro/crypto.pro.ts.service';\n\nexport interface CryptoHandler {\n key: string;\n name: string;\n service: CryptoBaseService;\n sign: boolean;\n default: boolean;\n disabled?: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoService {\n\n handlers: Map<string, CryptoHandler> = new Map<string, CryptoHandler>();\n selectPromise: any = null;\n private _initialized = false;\n private _withLog = false;\n\n public async startUp(withLog? : boolean): Promise<void> {\n this._withLog = !!withLog;\n\n if (!this._initialized) {\n this.registerHandler({\n key: CryptoProAsyncService.key,\n name: 'КриптоПро',\n service: new CryptoProAsyncService(),\n sign: true,\n default: true\n });\n this.registerHandler({\n key: CryptoProTsService.key,\n name: 'КриптоПро',\n service: new CryptoProTsService(),\n sign: true,\n default: false\n });\n await this.init();\n this._initialized = true;\n }\n this.log('Handlers init completed');\n return Promise.resolve();\n }\n\n public registerHandler(options: CryptoHandler) {\n this.log('Register handler', options);\n\n options.disabled = false;\n this.handlers.set(options.key, options);\n };\n\n public disableHandler(key: string): void {\n const handler = this.handlers.get(key);\n if (handler) {\n handler.disabled = true;\n }\n };\n\n public getHandler(key: string): Promise<CryptoHandler> {\n const handler = this.getActiveHandlers()\n .find(x => x.key == key);\n\n if (handler) {\n return Promise.resolve(handler);\n }\n return Promise.reject(`Not found ${key} handler`);\n };\n\n public getDefaultHandler() : Promise<CryptoHandler> {\n const handler = this.getActiveHandlers()\n .find(x => x.default);\n\n if (handler) {\n return Promise.resolve(handler);\n }\n return Promise.reject(`Not found default handler`);\n };\n\n public getService<T extends CryptoBaseService>(key: string): Promise<T> {\n const handler = this.handlers.get(key);\n if (handler) {\n return Promise.resolve(handler.service as T);\n }\n return Promise.reject(`Not found ${key}`);\n };\n\n public getActiveHandlers(): Array<CryptoHandler> {\n const active = new Array<CryptoHandler>();\n this.handlers.forEach(s => {\n if (!s.disabled) {\n active.push(s);\n }\n });\n return active;\n };\n\n private log(...args: any[]) {\n if (this._withLog) {\n console.log(args);\n }\n };\n\n private async init(): Promise<any> {\n this.log('Initialize handlers');\n\n const promises: Array<Promise<any>> = [];\n this.handlers.forEach(handler => {\n handler.service.available = false;\n\n this.log('Initialize ' + handler.name);\n\n const promise = handler.service.init().then((result) => {\n result.available = true;\n this.log('Handler init success', result);\n }).catch(reason => {\n this.log('Handler init fail', reason);\n });\n\n promises.push(promise);\n });\n\n return await Promise.all(promises);\n };\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\nimport { SignValidateResponse } from '../models';\nimport { VerifyCertModel } from '../models/internal/verify.cert.model';\nimport { VerifyCertResponseModel } from '../models/internal/verify.cert.response.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoApiService extends EndpointBaseService {\n\n private urlCrypto = '/cryptopro/api';\n private urlSigner = '/signer/api/v1';\n\n constructor(protected http: HttpClient, protected injector: Injector) {\n super(http, injector);\n }\n\n public verify(data: VerifyCertModel): Observable<VerifyCertResponseModel> {\n return this.http.post<VerifyCertResponseModel>(`${this.urlCrypto}/cryptopro/verify`, data);\n }\n\n public validate(data: string): Observable<SignValidateResponse> {\n return this.http.post<SignValidateResponse>(`${this.urlSigner}/jinn/validate`, {data});\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Base64 } from 'js-base64';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { ISignProvider } from './interfaces/isign.provider';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { SignedResultModel } from '../models';\nimport { AlertService, DialogColor, DialogType } from 'myrtex-mf-ui-composite';\n\ndeclare const window: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private alertService: AlertService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, withLog?: boolean, options?: any): Promise<SignedResultModel> {\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, { certificates: list }).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n let certificateFail = 0;\n if (window.CRYPTO_SKIP_CHECK !== true) {\n if (options.checkFio &&\n modalResult.selected.fio.toLowerCase() !== options.checkFio.toLowerCase()) {\n certificateFail = 1;\n }\n\n\n var ogrnIsValid = modalResult.selected.ogrn?.toLowerCase() == options.checkOgrn?.toLowerCase();\n\n if (options.checkOgrn && !ogrnIsValid) {\n certificateFail = 2;\n }\n\n if (options.checkOrganizationFullName || options.checkOrganizationShortName) {\n var organization = modalResult.selected.organization;\n if (!organization) {\n organization = modalResult.selected.cn;\n }\n\n var orgIsValid = organization?.toLowerCase() == options.checkOrganizationFullName?.toLowerCase()\n || organization?.toLowerCase() == options.checkOrganizationShortName?.toLowerCase();\n if (!orgIsValid) {\n certificateFail = 2;\n }\n }\n }\n\n if (certificateFail > 0) {\n this.alertService.showDialog({\n title: 'Ошибка сертификата',\n message: certificateFail == 1 ?\n 'Данные лица, подписывающего заявку не совпадают с данными усиленной квалифицированной подписи.' :\n 'Данные организации не совпадают с данными усиленной квалифицированной подписи. ' +\n 'Убедитесь, что вы используете сертификат, выданные от организации.',\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n //\n }\n });\n\n return Promise.reject();\n }\n\n if (withLog) {\n console.log('Signing data', data);\n }\n\n const signedData = await service.signBase64(modalResult.selected.certificate, data, true);\n\n if (withLog) {\n console.log('Signing data', data);\n }\n\n if (!options.skipServerCheck) {\n const verifyResult = await this.cryptoApiService.verify({\n data: data,\n signature: Base64.encode(signedData),\n detached: true\n }).toPromise();\n\n return {\n data,\n success: verifyResult.success,\n signed: signedData,\n certificate: modalResult.selected,\n };\n } else {\n return {\n data,\n success: true,\n signed: signedData,\n certificate: modalResult.selected,\n };\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { ISignProvider } from './interfaces/isign.provider';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoJinnProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, withLog?: boolean, options?: any): Promise<SignedResultModel> {\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, { certificates: list }).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n if (withLog) {\n console.log('Signing data', data);\n }\n\n const signedData = await service.signXml(modalResult.selected.certificate, data);\n\n const verifyResult = await this.cryptoApiService.validate(signedData).toPromise();\n\n return {\n data: signedData,\n success: verifyResult.success,\n certificate: modalResult.selected,\n validateResult: verifyResult.validateResult\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ISignProvider } from './interfaces/isign.provider';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoProTsService } from '../services/cryptopro/crypto.pro.ts.service';\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoTsProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, withLog?: boolean, options?: any): Promise<SignedResultModel> {\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProTsService>(CryptoProTsService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n const signedData = await service.sign(modalResult.selected.certificate, data);\n\n if (!options.skipServerCheck) {\n const validateResult = await this.cryptoApiService.validate(signedData).toPromise();\n\n return {\n data,\n signed: signedData,\n success: validateResult.success,\n validateResult: validateResult.validateResult,\n certificate: modalResult.selected,\n };\n } else {\n return {\n data,\n signed: signedData,\n success: true,\n validateResult: '',\n certificate: modalResult.selected,\n };\n }\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { ISignProvider } from \"./interfaces/isign.provider\";\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EmptyProvider implements ISignProvider {\n\n public async sign(data: string, withLog?: boolean, options?: any): Promise<SignedResultModel> {\n return Promise.resolve({\n data: data,\n success: true\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CryptoProvider } from './crypto.provider';\nimport { CryptoJinnProvider } from './cryptojinn.provider';\nimport { EmptyProvider } from './empty.provider';\nimport { CryptoTsProvider } from './cryptots.provider';\nimport { SignProviderType } from '../models';\nimport { ISignProvider } from './interfaces/isign.provider';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SignProviderFactory {\n constructor(\n protected cryptoProvider: CryptoProvider,\n protected cryptoJinnProvider: CryptoJinnProvider,\n protected cryptoTsProvider: CryptoTsProvider,\n protected emptyProvider: EmptyProvider) {\n }\n\n create(providerType: SignProviderType): ISignProvider {\n switch (providerType) {\n case 'crypto':\n return this.cryptoProvider;\n case 'cryptojinn':\n return this.cryptoJinnProvider;\n case 'cryptots':\n return this.cryptoTsProvider;\n case 'empty':\n return this.emptyProvider;\n }\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DownloadService extends EndpointBaseService {\n\n private url = '/signer/api/v1/download';\n\n constructor(protected http: HttpClient, protected injector: Injector) {\n super(http, injector);\n }\n\n public xml(url: string): Observable<any> {\n return this.http.get(url,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'text/xml'),\n responseType: 'text'\n });\n }\n\n public pdf(url: string): Observable<any> {\n return this.http.get(url,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'application/pdf'),\n responseType: 'blob'\n });\n }\n\n /*public xml(url: string): Observable<any> {\n return this.http.get(`${this.url}/xml?url=${encodeURIComponent(url)}`,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'text/xml'),\n responseType: 'text'\n });\n }\n\n public pdf(url: string): Observable<any> {\n return this.http.get(`${this.url}/pdf?url=${encodeURIComponent(url)}`,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'application/pdf'),\n responseType: 'blob'\n });\n }*/\n}\n","import { Component } from '@angular/core';\nimport { AlertService, DialogColor, DialogType, Utilities } from 'myrtex-mf-ui-composite';\nimport { SimpleModalComponent } from 'ngx-simple-modal';\nimport { Base64 } from 'js-base64';\nimport { SignProviderType, SignType } from '../../models';\nimport { SignedResultModel } from '../../models/signed-result.model';\nimport { SignRequestModel } from '../../models/sign-request.model';\nimport { DownloadService } from '../../services/download.service';\nimport { SignProviderFactory } from '../../providers/signprovider.factory';\nimport { OnInit } from '@angular/core/core';\n\nexport interface SignedResponseModel {\n result: boolean;\n model?: SignedResultModel;\n}\n\n@Component({\n selector: 'lib-sign-modal',\n templateUrl: './sign-modal.component.html',\n styleUrls: ['./sign-modal.component.css']\n})\nexport class SignModalComponent\n extends SimpleModalComponent<SignRequestModel, SignedResponseModel> implements OnInit, SignRequestModel {\n\n public title = '';\n public okLabel = '';\n public cancelLabel = '';\n\n public xmlUrl?: string;\n public pdfUrl?: string;\n\n public provider: SignProviderType = 'empty';\n public signType: SignType = 'xml';\n\n public xmlToSign = '';\n public pdfToSign = '';\n public withLog?: boolean;\n public skipServerCheck?: boolean;\n public checkFio?: string;\n public checkOgrn?: string;\n public checkOrganizationFullName?: string;\n public checkOrganizationShortName?: string;\n public checkInn?: string;\n\n downloadingPdf = false;\n\n constructor(private signProviderFactory: SignProviderFactory,\n private downloadService: DownloadService,\n private alertService: AlertService) {\n super();\n this.result = { result: false };\n }\n\n get disabled() {\n // todo как можно дизеблить кнопу\n return false;\n }\n\n get pdfViewUrl(): string {\n return this.pdfUrl ?\n `/signer/pdfjs/web/viewer.html?file=${encodeURIComponent(this.pdfUrl)}` : '';\n }\n\n ngOnInit(): void {\n this.downloadXml();\n this.downloadPdf();\n }\n\n public ok() {\n\n if (!this.signType) {\n this.signType = 'xml';\n }\n\n let signData = this.xmlToSign;\n\n switch (this.signType) {\n case 'xml':\n signData = Base64.encode(this.xmlToSign);\n break;\n case 'pdf':\n signData = this.pdfToSign;\n break;\n case 'xmlts':\n signData = this.xmlToSign;\n break;\n }\n\n this.signProviderFactory.create(this.provider)\n .sign(signData, this.withLog, {\n skipServerCheck: this.skipServerCheck,\n checkFio: this.checkFio,\n checkOgrn: this.checkOgrn,\n checkOrganizationFullName: this.checkOrganizationFullName,\n checkOrganizationShortName: this.checkOrganizationShortName,\n checkInn: this.checkInn\n })\n .then((ok: SignedResultModel) => {\n this.processResult(ok);\n }).catch((error: any) => {\n this.processError(error);\n });\n }\n\n public cancel() {\n this.close();\n }\n\n private processResult(signResult: SignedResultModel): void {\n if (signResult.success) {\n this.result = { model: signResult, result: true };\n this.close();\n } else {\n this.alertService.showDialog({\n title: 'Ошибка проверки подписи',\n message: 'Подпись не валидна',\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n }\n });\n }\n }\n\n private processError(error: any): void {\n if (this.withLog) {\n console.error(error);\n }\n\n this.alertService.showDialog({\n title: 'Ошибка проверки подписи',\n message: JSON.stringify(error),\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n }\n });\n }\n\n private downloadXml(): void {\n if (!this.xmlUrl) {\n return;\n }\n\n if (this.withLog) {\n console.log('Downloading xml');\n }\n\n this.downloadService.xml(this.xmlUrl).subscribe(result => {\n if (this.withLog) {\n console.log('xmlToSign = ', result);\n }\n this.xmlToSign = result;\n });\n }\n\n private downloadPdf(): void {\n if (!this.pdfUrl) {\n return;\n }\n\n if (this.withLog) {\n console.log('Downloading pdf');\n }\n\n this.downloadingPdf = true;\n this.downloadService.pdf(this.pdfUrl)\n .subscribe(result => {\n this.downloadingPdf = false;\n // todo подумать, как правильно читать файл\n // const blob = new Blob([result], {type: 'application/pdf'});\n const reader = new FileReader();\n reader.readAsDataURL(result);\n reader.onloadend = () => {\n let base64data = reader.result as string;\n base64data = base64data.replace('data:application/pdf;base64,', '');\n\n if (this.withLog) {\n console.log('pdfToSign = ', base64data);\n }\n this.pdfToSign = base64data;\n }\n }, () => {\n this.downloadingPdf = false;\n });\n }\n}\n","<div class=\"modal-content accent-head xl\">\n <div class=\"modal-header\">\n <div class=\"modal-title uppercase\">\n <h4 class=\"ng-binding\">{{title || 'Направление документа на подписание'}}</h4>\n </div>\n <span class=\"close close-click\" (click)=\"close()\">\n <svg width=\"14\" height=\"14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M13 1L1 13M1 1l12 12\" stroke=\"#3A3A3A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n </div>\n\n <div class=\"modal-body text-center\">\n <div class=\"widget\">\n <my-tabs>\n <app-tab tabTitle=\"Визуализация документа\" *ngIf=\"pdfUrl\">\n <pre *ngIf=\"downloadingPdf\">\n Подождите, идет формирование документа\n </pre>\n <iframe *ngIf=\"!downloadingPdf\" [src]=\"pdfViewUrl | safeurl\"\n title=\"webviewer\" frameborder=\"0\" width=\"100%\" height=\"800\"></iframe>\n </app-tab>\n <app-tab tabTitle=\"Подписываемые данные\" *ngIf=\"xmlUrl\">\n <pre [innerText]=\"xmlToSign\"></pre>\n </app-tab>\n </my-tabs>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <div *ngIf=\"pdfUrl || xmlUrl\"\n class=\"modal-footer-item\">\n <a *ngIf=\"pdfUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"pdfUrl\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M18 21.25H6C5.30964 21.25 4.75 20.6904 4.75 20V4C4.75 3.30964 5.30964 2.75 6 2.75H13.1893L19.25 8.81066V20C19.25 20.6904 18.6904 21.25 18 21.25Z\"\n stroke=\"#282828\" stroke-width=\"1.5\"/>\n </svg>\n <span>Скачать документ</span>\n </a>\n <a *ngIf=\"xmlUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"xmlUrl\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 16L2 12L6 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M18 16L22 12L18 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"/>\n <path d=\"M7.56689 19.1782L15.5669 5.32182\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"/>\n </svg>\n <span>Скачать XML-данные</span>\n </a>\n </div>\n <div class=\"modal-footer-item\">\n <button\n class=\"mrx-btn mrx-btn-secondary mrx-btn-md wpx-120 mr-3\"\n (click)=\"cancel()\"\n >\n <div class=\"mrx-btn-label\">{{cancelLabel || 'Отменить'}}</div>\n </button>\n <button\n class=\"mrx-btn mrx-btn-primary mrx-btn-md wpx-120\"\n [disabled]=\"disabled\"\n (click)=\"ok()\"\n >\n <div class=\"mrx-btn-label\">{{okLabel || 'Подписать'}}</div>\n </button>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { SignedResultModel, SignRequestModel } from '../models';\nimport { SignModalComponent } from '../components/sign-modal/sign-modal.component';\nimport { TmpTokenService, Utilities } from 'myrtex-mf-ui-composite';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SignService {\n\n constructor(private simpleModalService: SimpleModalService, private tmpTokenService: TmpTokenService) {\n }\n\n public sign(request: SignRequestModel,\n ok: (result?: SignedResultModel) => void,\n cancel?: () => void): void {\n\n const baseUrl = Utilities.commonPart(request.xmlUrl, request.pdfUrl);\n\n this.tmpTokenService.generate(baseUrl).subscribe(token => {\n\n const ph = `${window.location.protocol}//${window.location.host}`;\n if (request.xmlUrl) {\n request.xmlUrl = ph + Utilities.updateQueryStringParameter(request.xmlUrl, 'authToken', token);\n }\n\n if (request.pdfUrl) {\n request.pdfUrl = ph + Utilities.updateQueryStringParameter(request.pdfUrl, 'authToken', token);\n }\n\n this.simpleModalService.addModal(SignModalComponent, request, { wrapperClass: 'in xl' })\n .subscribe(result => {\n if (result && result.result) {\n ok(result.model);\n } else {\n if (cancel) {\n cancel();\n }\n }\n });\n\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SignModalComponent } from './components/sign-modal/sign-modal.component';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MyrtexMfUiCompositeModule } from 'myrtex-mf-ui-composite';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { SignService } from './services/public.sign.service';\nimport { DownloadService } from './services/download.service';\nimport { CertificateSelectComponent } from './components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from './services/crypto.api.service';\nimport { SignProviderFactory } from './providers/signprovider.factory';\nimport { CryptoProvider } from './providers/crypto.provider';\nimport { CryptoJinnProvider } from './providers/cryptojinn.provider';\nimport { CryptoTsProvider } from './providers/cryptots.provider';\nimport { EmptyProvider } from './providers/empty.provider';\n\n@NgModule({\n declarations: [\n SignModalComponent,\n CertificateSelectComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n NgSelectModule,\n MyrtexMfUiCompositeModule\n ],\n exports: [\n SignModalComponent\n ],\n providers: [\n SignProviderFactory,\n CryptoProvider,\n CryptoJinnProvider,\n CryptoTsProvider,\n EmptyProvider,\n\n CryptoApiService,\n SignService,\n DownloadService\n ]\n})\nexport class MyrtexSignerModule { }\n","/*\n * Public API Surface of myrtex-mf-signer\n */\n// models\nexport * from './lib/models/index';\n\n// components\nexport * from './lib/components/sign-modal/sign-modal.component';\n\n// modules\nexport * from './lib/myrtex-signer.module';\n\n// services\nexport * from './lib/services/public.sign.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CertificateAdjuster","i1","i2.CryptoService","i4.CryptoApiService","i3.CryptoApiService","i1.CryptoProvider","i2.CryptoJinnProvider","i3.CryptoTsProvider","i4.EmptyProvider","i1.SignProviderFactory","i2.DownloadService","i4","i2"],"mappings":"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"}
|
|
@@ -34,11 +34,11 @@ class CertificateAdjuster {
|
|
|
34
34
|
name = [name];
|
|
35
35
|
}
|
|
36
36
|
for (var i = 0; i < name.length; i++) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (
|
|
41
|
-
let r =
|
|
37
|
+
let n = name[i];
|
|
38
|
+
let re = new RegExp(n + '\\s*=\\s*(?<value>[^=]+)([^,\\/]|$)', 'g');
|
|
39
|
+
let m = re.exec(s);
|
|
40
|
+
if (m !== null && m.groups !== undefined && m.groups !== null) {
|
|
41
|
+
let r = m.groups.value;
|
|
42
42
|
r = r.replace(/^\"?/, '');
|
|
43
43
|
r = r.replace(/\"$/, '');
|
|
44
44
|
r = r.replace(/\"\"/g, '"');
|
|
@@ -684,7 +684,8 @@ class SignModalComponent extends SimpleModalComponent {
|
|
|
684
684
|
skipServerCheck: this.skipServerCheck,
|
|
685
685
|
checkFio: this.checkFio,
|
|
686
686
|
checkOgrn: this.checkOgrn,
|
|
687
|
-
|
|
687
|
+
checkOrganizationFullName: this.checkOrganizationFullName,
|
|
688
|
+
checkOrganizationShortName: this.checkOrganizationShortName,
|
|
688
689
|
checkInn: this.checkInn
|
|
689
690
|
})
|
|
690
691
|
.then((ok) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"myrtex-mf-signer.mjs","sources":["../../../projects/myrtex-mf-signer/src/lib/services/crypto.base.service.ts","../../../projects/myrtex-mf-signer/src/lib/services/certificate.adjuster.ts","../../../projects/myrtex-mf-signer/src/lib/services/cryptopro/crypto.pro.base.service.ts","../../../projects/myrtex-mf-signer/src/lib/services/cryptopro/crypto.pro.async.service.ts","../../../projects/myrtex-mf-signer/src/lib/components/certificate-select/certificate-select.component.ts","../../../projects/myrtex-mf-signer/src/lib/components/certificate-select/certificate-select.component.html","../../../projects/myrtex-mf-signer/src/lib/services/cryptopro/crypto.pro.ts.service.ts","../../../projects/myrtex-mf-signer/src/lib/services/crypto.service.ts","../../../projects/myrtex-mf-signer/src/lib/services/crypto.api.service.ts","../../../projects/myrtex-mf-signer/src/lib/providers/crypto.provider.ts","../../../projects/myrtex-mf-signer/src/lib/providers/cryptojinn.provider.ts","../../../projects/myrtex-mf-signer/src/lib/providers/cryptots.provider.ts","../../../projects/myrtex-mf-signer/src/lib/providers/empty.provider.ts","../../../projects/myrtex-mf-signer/src/lib/providers/signprovider.factory.ts","../../../projects/myrtex-mf-signer/src/lib/services/download.service.ts","../../../projects/myrtex-mf-signer/src/lib/components/sign-modal/sign-modal.component.ts","../../../projects/myrtex-mf-signer/src/lib/components/sign-modal/sign-modal.component.html","../../../projects/myrtex-mf-signer/src/lib/services/public.sign.service.ts","../../../projects/myrtex-mf-signer/src/lib/myrtex-signer.module.ts","../../../projects/myrtex-mf-signer/src/public-api.ts","../../../projects/myrtex-mf-signer/src/myrtex-mf-signer.ts"],"sourcesContent":["export class CryptoBaseService {\n\n public available = false;\n options: any = {};\n\n init(): Promise<CryptoBaseService> {\n return Promise.reject('Not implemented');\n };\n\n auth(): Promise<boolean> {\n return Promise.resolve(true);\n };\n}\n","class CertificateAdjuster {\n extract(s: string, name: string | string[]): string {\n if (typeof (name) === 'string') {\n name = [name];\n }\n\n for (var i = 0; i < name.length; i++) {\n var n = name[i];\n var re = new RegExp(n + '\\s*=\\s*([^,\\\\/]+)');\n var matches = s.match(re);\n if (matches && matches.length > 1) {\n let r = matches[1].trim();\n r = r.replace(/^\\\"?/, '');\n r = r.replace(/\\\"$/, '');\n r = r.replace(/\\\"\\\"/g, '\"');\n return r;\n }\n }\n\n return '';\n };\n\n Print2Digit(digit: number) {\n return (digit < 10) ? '0' + digit : digit;\n };\n\n GetCertDate(paramDate: any) {\n let certDate = new Date(paramDate);\n return this.Print2Digit(certDate.getUTCDate()) + '.' + this.Print2Digit(certDate.getMonth() + 1) +\n '.' + certDate.getFullYear() + ' ' +\n this.Print2Digit(certDate.getUTCHours()) + ':' + this.Print2Digit(certDate.getUTCMinutes()) +\n ':' + this.Print2Digit(certDate.getUTCSeconds());\n };\n\n GetCertFio(certSubjectName: string) {\n const lastName = this.extract(certSubjectName, 'SN');\n const name = this.extract(certSubjectName, 'G');\n\n return lastName + ' ' + name;\n };\n\n GetCertPost(certSubjectName: string) {\n return this.extract(certSubjectName, 'T');\n };\n\n GetCertOgrn(certSubjectName: string) {\n return this.extract(certSubjectName, ['OGRN', 'ОГРН', 'ОГРНИП','OGRNIP', '1.2.643.100.1']);\n };\n\n GetCertOrg(certSubjectName: string) {\n return this.extract(certSubjectName, 'O');\n };\n\n GetCertInn(certSubjectName: string) {\n return this.extract(certSubjectName, ['INN', 'ИНН', '1.2.643.3.131.1.1']);\n };\n\n GetCertName(certSubjectName: string) {\n return this.extract(certSubjectName, 'CN');\n };\n\n GetIssuer(certIssuerName: string) {\n return this.extract(certIssuerName, 'CN');\n };\n\n GetCertInfoString(certSubjectName: string, certFromDate: any) {\n return this.extract(certSubjectName, 'CN') + '; Выдан: ' + this.GetCertDate(certFromDate);\n };\n}\n\nconst instance = new CertificateAdjuster();\nexport { instance as CertificateAdjuster };","import {\n CADESCOM_STORE_LOCATION,\n CAPICOM_STORE_NAMES,\n CAPICOM_STORE_OPEN_MODE,\n ProgIds,\n Async\n} from 'cadesplugin-types';\nimport { CertificateModel } from '../../models';\n// @ts-ignore\nimport getCadesplugin from 'async-cadesplugin';\nimport { CryptoBaseService } from '../crypto.base.service';\nimport { CertificateAdjuster } from '../certificate.adjuster';\n\ndeclare global {\n interface Window {\n cadesplugin: Async.IWebClassFactory;\n }\n}\n\nexport class CryptoProBaseService extends CryptoBaseService {\n\n constructor() {\n super();\n }\n\n public async init(): Promise<CryptoBaseService> {\n await getCadesplugin();\n return Promise.resolve(this);\n };\n\n public async getCertificates(): Promise<CertificateModel[]> {\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\n\n let storeCerts = await store.Certificates;\n let count = await storeCerts.Count;\n let certificates: Array<CertificateModel> = [];\n\n for (let i = 1; i <= count; i++) {\n let cert = await storeCerts.Item(i);\n let validFromDate = new Date(await cert.ValidFromDate);\n let validToDate = new Date(await cert.ValidToDate);\n const subjectName = await cert.SubjectName;\n\n certificates.push({\n id: i,\n certificate: cert,\n subjectName: subjectName,\n name: CertificateAdjuster.GetCertInfoString(subjectName, validFromDate),\n cn: CertificateAdjuster.GetCertName(subjectName),\n fio: CertificateAdjuster.GetCertFio(subjectName),\n post: CertificateAdjuster.GetCertPost(subjectName),\n ogrn: CertificateAdjuster.GetCertOgrn(subjectName),\n organization: CertificateAdjuster.GetCertOrg(subjectName),\n inn: CertificateAdjuster.GetCertInn(subjectName),\n validFromDate: validFromDate.toLocaleDateString('ru-RU'),\n validToDate: validToDate.toLocaleDateString('ru-RU'),\n thumbprint: await cert.Thumbprint,\n issuerName: await cert.IssuerName,\n serialNumber: await cert.SerialNumber,\n isExpired: validToDate < new Date()\n });\n }\n await store.Close();\n return certificates;\n }\n}\n","import {\n Async,\n CADESCOM_CADES_TYPE,\n CADESCOM_CONTENT_ENCODING_TYPE,\n CADESCOM_STORE_LOCATION, CAPICOM_STORE_NAMES, CAPICOM_STORE_OPEN_MODE,\n ProgIds\n} from 'cadesplugin-types';\nimport { CryptoProBaseService } from './crypto.pro.base.service';\n\nexport class CryptoProAsyncService extends CryptoProBaseService {\n\n public static readonly key = 'cryptoproasync';\n\n constructor() {\n super();\n }\n\n public async signXml(certificate: any, data: string): Promise<string> {\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let timestamp_service_url = 'http://testca.cryptopro.ru/tsp/tsp.srf';\n await signer.propset_TSAAddress(timestamp_service_url);\n\n let signed: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\n\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\n await signed.propset_Content(encodedXml);\n\n let cades_xml_signature_type_enveloped = 80;\n await signed.propset_SignatureType(cades_xml_signature_type_enveloped);\n\n const signedData = await signed.Sign(signer);\n \n return signedData;\n }\n\n public async signBase64(certificate: any, data: string, detached: boolean = false): Promise<string> {\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let signed: Async.ICPSignedData5 = await window.cadesplugin.CreateObjectAsync(ProgIds.CadesSignedData);\n\n await signed.propset_ContentEncoding(CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY);\n await signed.propset_Content(data);\n\n const signedData = await signed.SignCades(signer, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, detached);\n\n return signedData;\n }\n}\n","import { Component } from '@angular/core';\nimport { SimpleModalComponent } from 'ngx-simple-modal';\nimport { CertificateModel } from '../../models';\n\nexport interface CertificateSelectModel {\n certificates: CertificateModel[];\n}\n\nexport interface CertificateSelectResultModel {\n selected?: CertificateModel;\n}\n\n@Component({\n selector: 'lib-certificate-select',\n templateUrl: './certificate-select.component.html',\n styleUrls: ['./certificate-select.component.css']\n})\nexport class CertificateSelectComponent extends SimpleModalComponent<CertificateSelectModel, CertificateSelectResultModel>\n implements CertificateSelectModel {\n\n certificates: CertificateModel[] = [];\n\n constructor() {\n super();\n this.result = {};\n }\n\n ok(cert: CertificateModel) {\n this.result = {selected: cert};\n this.close();\n }\n}\n","<div class=\"modal-content open accent-head certificate\">\n <div class=\"modal-header\">\n <div class=\"modal-title\" [innerHTML]=\"'Выберите сертификат'\">\n </div>\n <span class='close close-click' (click)=\"close()\">\n <svg width='14' height='14' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <path d='M13 1L1 13M1 1l12 12' stroke='#3A3A3A' stroke-width='1.5' stroke-linecap='round'\n stroke-linejoin='round' />\n </svg>\n </span>\n </div>\n <div class=\"modal-body text-center\">\n\n <div class=\"modal-body-other\">\n <div *ngFor=\"let cert of certificates\">\n <div class=\"modal-body-info\" *ngIf=\"!cert.isExpired\">\n <div class=\"modal-body-info__item\">\n <span class=\"text\">\n Владелец:\n </span>\n <span class=\"text\">\n {{cert.cn}}<br/>\n {{cert.fio}}<span *ngIf=\"cert.post\">, {{cert.post}}</span>\n </span>\n </div>\n <div class=\"modal-body-info__item\">\n <span class=\"text\">\n Срок действия:\n </span>\n <span class=\"text\">\n {{cert.validFromDate}} - {{cert.validToDate}}\n </span>\n </div>\n <div class=\"modal-body-info__item\">\n <span class=\"text hash\">\n {{cert.thumbprint}} {{cert.isExpired ? \"(истек)\" : \"\"}}\n </span>\n </div>\n <button\n (click)=\"ok(cert)\"\n [disabled]=\"cert.isExpired\"\n class=\"btn btn-md\">Создать подпись</button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n </div>\n</div>","import {\n Async,\n CADESCOM_STORE_LOCATION, CADESCOM_XML_SIGNATURE_TYPE,\n CAPICOM_STORE_NAMES,\n CAPICOM_STORE_OPEN_MODE,\n ProgIds\n} from 'cadesplugin-types';\nimport { CryptoProBaseService } from './crypto.pro.base.service';\n\nexport class CryptoProTsService extends CryptoProBaseService {\n\n public static readonly key = 'cryptoprots';\n\n constructor() {\n super();\n }\n\n private get TIMESTAMP_SERVICE_URL(): string {\n return 'http://testca.cryptopro.ru/tsp/tsp.srf';\n }\n\n public async sign(certificate: any, data: string): Promise<string> {\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\n\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let signedXML: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\n\n let publicKey: Async.IPublicKey = await certificate.PublicKey();\n let algorithm: Async.IOID = await publicKey.Algorithm;\n let algorithmOid = await algorithm.Value;\n\n let {signMethod, digestMethod} = this.getSigningMethods(algorithmOid);\n\n //await signer.propset_Options(api.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN);\n\n await signer.propset_TSAAddress(this.TIMESTAMP_SERVICE_URL);\n\n if (data) {\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\n await signedXML.propset_Content(encodedXml);\n }\n\n await signedXML.propset_SignatureType(CADESCOM_XML_SIGNATURE_TYPE.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED);\n await signedXML.propset_SignatureMethod(signMethod);\n await signedXML.propset_DigestMethod(digestMethod);\n\n let signature = await signedXML.Sign(signer);\n\n await store.Close();\n\n return signature;\n }\n\n private getSigningMethods(algorithmOid: string): { signMethod: string, digestMethod: string } {\n let signMethod = '', digestMethod = '';\n\n if (algorithmOid == '1.2.643.7.1.1.1.1') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 256 бит\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\n } else if (algorithmOid == '1.2.643.7.1.1.1.2') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 512 бит\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512';\n } else if (algorithmOid == '1.2.643.2.2.19') { // алгоритм ГОСТ Р 34.10-2001\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\n }\n\n return {signMethod, digestMethod};\n }\n}\n","import { CryptoProAsyncService } from './cryptopro/crypto.pro.async.service';\nimport { Injectable } from '@angular/core';\nimport { CryptoBaseService } from './crypto.base.service';\nimport { CryptoProTsService } from './cryptopro/crypto.pro.ts.service';\n\nexport interface CryptoHandler {\n key: string;\n name: string;\n service: CryptoBaseService;\n sign: boolean;\n default: boolean;\n disabled?: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoService {\n\n handlers: Map<string, CryptoHandler> = new Map<string, CryptoHandler>();\n selectPromise: any = null;\n private _initialized = false;\n private _withLog = false;\n\n public async startUp(withLog? : boolean): Promise<void> {\n this._withLog = !!withLog;\n\n if (!this._initialized) {\n this.registerHandler({\n key: CryptoProAsyncService.key,\n name: 'КриптоПро',\n service: new CryptoProAsyncService(),\n sign: true,\n default: true\n });\n this.registerHandler({\n key: CryptoProTsService.key,\n name: 'КриптоПро',\n service: new CryptoProTsService(),\n sign: true,\n default: false\n });\n await this.init();\n this._initialized = true;\n }\n this.log('Handlers init completed');\n return Promise.resolve();\n }\n\n public registerHandler(options: CryptoHandler) {\n this.log('Register handler', options);\n\n options.disabled = false;\n this.handlers.set(options.key, options);\n };\n\n public disableHandler(key: string): void {\n const handler = this.handlers.get(key);\n if (handler) {\n handler.disabled = true;\n }\n };\n\n public getHandler(key: string): Promise<CryptoHandler> {\n const handler = this.getActiveHandlers()\n .find(x => x.key == key);\n\n if (handler) {\n return Promise.resolve(handler);\n }\n return Promise.reject(`Not found ${key} handler`);\n };\n\n public getDefaultHandler() : Promise<CryptoHandler> {\n const handler = this.getActiveHandlers()\n .find(x => x.default);\n\n if (handler) {\n return Promise.resolve(handler);\n }\n return Promise.reject(`Not found default handler`);\n };\n\n public getService<T extends CryptoBaseService>(key: string): Promise<T> {\n const handler = this.handlers.get(key);\n if (handler) {\n return Promise.resolve(handler.service as T);\n }\n return Promise.reject(`Not found ${key}`);\n };\n\n public getActiveHandlers(): Array<CryptoHandler> {\n const active = new Array<CryptoHandler>();\n this.handlers.forEach(s => {\n if (!s.disabled) {\n active.push(s);\n }\n });\n return active;\n };\n\n private log(...args: any[]) {\n if (this._withLog) {\n console.log(args);\n }\n };\n\n private async init(): Promise<any> {\n this.log('Initialize handlers');\n\n const promises: Array<Promise<any>> = [];\n this.handlers.forEach(handler => {\n handler.service.available = false;\n\n this.log('Initialize ' + handler.name);\n\n const promise = handler.service.init().then((result) => {\n result.available = true;\n this.log('Handler init success', result);\n }).catch(reason => {\n this.log('Handler init fail', reason);\n });\n\n promises.push(promise);\n });\n\n return await Promise.all(promises);\n };\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\nimport { SignValidateResponse } from '../models';\nimport { VerifyCertModel } from '../models/internal/verify.cert.model';\nimport { VerifyCertResponseModel } from '../models/internal/verify.cert.response.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoApiService extends EndpointBaseService {\n\n private urlCrypto = '/cryptopro/api';\n private urlSigner = '/signer/api/v1';\n\n constructor(protected http: HttpClient, protected injector: Injector) {\n super(http, injector);\n }\n\n public verify(data: VerifyCertModel): Observable<VerifyCertResponseModel> {\n return this.http.post<VerifyCertResponseModel>(`${this.urlCrypto}/cryptopro/verify`, data);\n }\n\n public validate(data: string): Observable<SignValidateResponse> {\n return this.http.post<SignValidateResponse>(`${this.urlSigner}/jinn/validate`, {data});\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Base64 } from 'js-base64';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { ISignProvider } from './interfaces/isign.provider';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { SignedResultModel } from '../models';\nimport { AlertService, DialogColor, DialogType } from 'myrtex-mf-ui-composite';\n\ndeclare const window: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private alertService: AlertService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, withLog?: boolean, options?: any): Promise<SignedResultModel> {\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, { certificates: list }).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n let certificateFail = 0;\n if (window.CRYPTO_SKIP_CHECK !== true) {\n if (options.checkFio &&\n modalResult.selected.fio.toLowerCase() !== options.checkFio.toLowerCase()) {\n certificateFail = 1;\n }\n\n\n var ogrnIsValid = modalResult.selected.ogrn?.toLowerCase() == options.checkOgrn?.toLowerCase();\n\n if (options.checkOgrn && !ogrnIsValid) {\n certificateFail = 2;\n }\n\n if (options.checkOrganizationFullName || options.checkOrganizationShortName) {\n var organization = modalResult.selected.organization;\n if (!organization) {\n organization = modalResult.selected.cn;\n }\n\n var orgIsValid = organization?.toLowerCase() == options.checkOrganizationFullName?.toLowerCase()\n || organization?.toLowerCase() == options.checkOrganizationShortName?.toLowerCase();\n if (!orgIsValid) {\n certificateFail = 2;\n }\n }\n }\n\n if (certificateFail > 0) {\n this.alertService.showDialog({\n title: 'Ошибка сертификата',\n message: certificateFail == 1 ?\n 'Данные лица, подписывающего заявку не совпадают с данными усиленной квалифицированной подписи.' :\n 'Данные организации не совпадают с данными усиленной квалифицированной подписи. ' +\n 'Убедитесь, что вы используете сертификат, выданные от организации.',\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n //\n }\n });\n\n return Promise.reject();\n }\n\n if (withLog) {\n console.log('Signing data', data);\n }\n\n const signedData = await service.signBase64(modalResult.selected.certificate, data, true);\n\n if (withLog) {\n console.log('Signing data', data);\n }\n\n if (!options.skipServerCheck) {\n const verifyResult = await this.cryptoApiService.verify({\n data: data,\n signature: Base64.encode(signedData),\n detached: true\n }).toPromise();\n\n return {\n data,\n success: verifyResult.success,\n signed: signedData,\n certificate: modalResult.selected,\n };\n } else {\n return {\n data,\n success: true,\n signed: signedData,\n certificate: modalResult.selected,\n };\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { ISignProvider } from './interfaces/isign.provider';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoJinnProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, withLog?: boolean, options?: any): Promise<SignedResultModel> {\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, { certificates: list }).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n if (withLog) {\n console.log('Signing data', data);\n }\n\n const signedData = await service.signXml(modalResult.selected.certificate, data);\n\n const verifyResult = await this.cryptoApiService.validate(signedData).toPromise();\n\n return {\n data: signedData,\n success: verifyResult.success,\n certificate: modalResult.selected,\n validateResult: verifyResult.validateResult\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ISignProvider } from './interfaces/isign.provider';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoProTsService } from '../services/cryptopro/crypto.pro.ts.service';\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoTsProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, withLog?: boolean, options?: any): Promise<SignedResultModel> {\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProTsService>(CryptoProTsService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n const signedData = await service.sign(modalResult.selected.certificate, data);\n\n if (!options.skipServerCheck) {\n const validateResult = await this.cryptoApiService.validate(signedData).toPromise();\n\n return {\n data,\n signed: signedData,\n success: validateResult.success,\n validateResult: validateResult.validateResult,\n certificate: modalResult.selected,\n };\n } else {\n return {\n data,\n signed: signedData,\n success: true,\n validateResult: '',\n certificate: modalResult.selected,\n };\n }\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { ISignProvider } from \"./interfaces/isign.provider\";\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EmptyProvider implements ISignProvider {\n\n public async sign(data: string, withLog?: boolean, options?: any): Promise<SignedResultModel> {\n return Promise.resolve({\n data: data,\n success: true\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CryptoProvider } from './crypto.provider';\nimport { CryptoJinnProvider } from './cryptojinn.provider';\nimport { EmptyProvider } from './empty.provider';\nimport { CryptoTsProvider } from './cryptots.provider';\nimport { SignProviderType } from '../models';\nimport { ISignProvider } from './interfaces/isign.provider';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SignProviderFactory {\n constructor(\n protected cryptoProvider: CryptoProvider,\n protected cryptoJinnProvider: CryptoJinnProvider,\n protected cryptoTsProvider: CryptoTsProvider,\n protected emptyProvider: EmptyProvider) {\n }\n\n create(providerType: SignProviderType): ISignProvider {\n switch (providerType) {\n case 'crypto':\n return this.cryptoProvider;\n case 'cryptojinn':\n return this.cryptoJinnProvider;\n case 'cryptots':\n return this.cryptoTsProvider;\n case 'empty':\n return this.emptyProvider;\n }\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DownloadService extends EndpointBaseService {\n\n private url = '/signer/api/v1/download';\n\n constructor(protected http: HttpClient, protected injector: Injector) {\n super(http, injector);\n }\n\n public xml(url: string): Observable<any> {\n return this.http.get(url,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'text/xml'),\n responseType: 'text'\n });\n }\n\n public pdf(url: string): Observable<any> {\n return this.http.get(url,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'application/pdf'),\n responseType: 'blob'\n });\n }\n\n /*public xml(url: string): Observable<any> {\n return this.http.get(`${this.url}/xml?url=${encodeURIComponent(url)}`,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'text/xml'),\n responseType: 'text'\n });\n }\n\n public pdf(url: string): Observable<any> {\n return this.http.get(`${this.url}/pdf?url=${encodeURIComponent(url)}`,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'application/pdf'),\n responseType: 'blob'\n });\n }*/\n}\n","import { Component } from '@angular/core';\nimport { AlertService, DialogColor, DialogType, Utilities } from 'myrtex-mf-ui-composite';\nimport { SimpleModalComponent } from 'ngx-simple-modal';\nimport { Base64 } from 'js-base64';\nimport { SignProviderType, SignType } from '../../models';\nimport { SignedResultModel } from '../../models/signed-result.model';\nimport { SignRequestModel } from '../../models/sign-request.model';\nimport { DownloadService } from '../../services/download.service';\nimport { SignProviderFactory } from '../../providers/signprovider.factory';\nimport { OnInit } from '@angular/core/core';\n\nexport interface SignedResponseModel {\n result: boolean;\n model?: SignedResultModel;\n}\n\n@Component({\n selector: 'lib-sign-modal',\n templateUrl: './sign-modal.component.html',\n styleUrls: ['./sign-modal.component.css']\n})\nexport class SignModalComponent\n extends SimpleModalComponent<SignRequestModel, SignedResponseModel> implements OnInit, SignRequestModel {\n\n public title = '';\n public okLabel = '';\n public cancelLabel = '';\n\n public xmlUrl?: string;\n public pdfUrl?: string;\n\n public provider: SignProviderType = 'empty';\n public signType: SignType = 'xml';\n\n public xmlToSign = '';\n public pdfToSign = '';\n public withLog?: boolean;\n public skipServerCheck?: boolean;\n public checkFio?: string;\n public checkOgrn?: string;\n public checkOrganization?: string;\n public checkInn?: string;\n\n downloadingPdf = false;\n\n constructor(private signProviderFactory: SignProviderFactory,\n private downloadService: DownloadService,\n private alertService: AlertService) {\n super();\n this.result = { result: false };\n }\n\n get disabled() {\n // todo как можно дизеблить кнопу\n return false;\n }\n\n get pdfViewUrl(): string {\n return this.pdfUrl ?\n `/signer/pdfjs/web/viewer.html?file=${encodeURIComponent(this.pdfUrl)}` : '';\n }\n\n ngOnInit(): void {\n this.downloadXml();\n this.downloadPdf();\n }\n\n public ok() {\n\n if (!this.signType) {\n this.signType = 'xml';\n }\n\n let signData = this.xmlToSign;\n\n switch (this.signType) {\n case 'xml':\n signData = Base64.encode(this.xmlToSign);\n break;\n case 'pdf':\n signData = this.pdfToSign;\n break;\n case 'xmlts':\n signData = this.xmlToSign;\n break;\n }\n\n this.signProviderFactory.create(this.provider)\n .sign(signData, this.withLog, {\n skipServerCheck: this.skipServerCheck,\n checkFio: this.checkFio,\n checkOgrn: this.checkOgrn,\n checkOrganization: this.checkOrganization,\n checkInn: this.checkInn\n })\n .then((ok: SignedResultModel) => {\n this.processResult(ok);\n }).catch((error: any) => {\n this.processError(error);\n });\n }\n\n public cancel() {\n this.close();\n }\n\n private processResult(signResult: SignedResultModel): void {\n if (signResult.success) {\n this.result = { model: signResult, result: true };\n this.close();\n } else {\n this.alertService.showDialog({\n title: 'Ошибка проверки подписи',\n message: 'Подпись не валидна',\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n }\n });\n }\n }\n\n private processError(error: any): void {\n if (this.withLog) {\n console.error(error);\n }\n\n this.alertService.showDialog({\n title: 'Ошибка проверки подписи',\n message: JSON.stringify(error),\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n }\n });\n }\n\n private downloadXml(): void {\n if (!this.xmlUrl) {\n return;\n }\n\n if (this.withLog) {\n console.log('Downloading xml');\n }\n\n this.downloadService.xml(this.xmlUrl).subscribe(result => {\n if (this.withLog) {\n console.log('xmlToSign = ', result);\n }\n this.xmlToSign = result;\n });\n }\n\n private downloadPdf(): void {\n if (!this.pdfUrl) {\n return;\n }\n\n if (this.withLog) {\n console.log('Downloading pdf');\n }\n\n this.downloadingPdf = true;\n this.downloadService.pdf(this.pdfUrl)\n .subscribe(result => {\n this.downloadingPdf = false;\n // todo подумать, как правильно читать файл\n // const blob = new Blob([result], {type: 'application/pdf'});\n const reader = new FileReader();\n reader.readAsDataURL(result);\n reader.onloadend = () => {\n let base64data = reader.result as string;\n base64data = base64data.replace('data:application/pdf;base64,', '');\n\n if (this.withLog) {\n console.log('pdfToSign = ', base64data);\n }\n this.pdfToSign = base64data;\n }\n }, () => {\n this.downloadingPdf = false;\n });\n }\n}\n","<div class=\"modal-content accent-head xl\">\n <div class=\"modal-header\">\n <div class=\"modal-title uppercase\">\n <h4 class=\"ng-binding\">{{title || 'Направление документа на подписание'}}</h4>\n </div>\n <span class=\"close close-click\" (click)=\"close()\">\n <svg width=\"14\" height=\"14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M13 1L1 13M1 1l12 12\" stroke=\"#3A3A3A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n </div>\n\n <div class=\"modal-body text-center\">\n <div class=\"widget\">\n <my-tabs>\n <app-tab tabTitle=\"Визуализация документа\" *ngIf=\"pdfUrl\">\n <pre *ngIf=\"downloadingPdf\">\n Подождите, идет формирование документа\n </pre>\n <iframe *ngIf=\"!downloadingPdf\" [src]=\"pdfViewUrl | safeurl\"\n title=\"webviewer\" frameborder=\"0\" width=\"100%\" height=\"800\"></iframe>\n </app-tab>\n <app-tab tabTitle=\"Подписываемые данные\" *ngIf=\"xmlUrl\">\n <pre [innerText]=\"xmlToSign\"></pre>\n </app-tab>\n </my-tabs>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <div *ngIf=\"pdfUrl || xmlUrl\"\n class=\"modal-footer-item\">\n <a *ngIf=\"pdfUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"pdfUrl\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M18 21.25H6C5.30964 21.25 4.75 20.6904 4.75 20V4C4.75 3.30964 5.30964 2.75 6 2.75H13.1893L19.25 8.81066V20C19.25 20.6904 18.6904 21.25 18 21.25Z\"\n stroke=\"#282828\" stroke-width=\"1.5\"/>\n </svg>\n <span>Скачать документ</span>\n </a>\n <a *ngIf=\"xmlUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"xmlUrl\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 16L2 12L6 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M18 16L22 12L18 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"/>\n <path d=\"M7.56689 19.1782L15.5669 5.32182\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"/>\n </svg>\n <span>Скачать XML-данные</span>\n </a>\n </div>\n <div class=\"modal-footer-item\">\n <button\n class=\"mrx-btn mrx-btn-secondary mrx-btn-md wpx-120 mr-3\"\n (click)=\"cancel()\"\n >\n <div class=\"mrx-btn-label\">{{cancelLabel || 'Отменить'}}</div>\n </button>\n <button\n class=\"mrx-btn mrx-btn-primary mrx-btn-md wpx-120\"\n [disabled]=\"disabled\"\n (click)=\"ok()\"\n >\n <div class=\"mrx-btn-label\">{{okLabel || 'Подписать'}}</div>\n </button>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { SignedResultModel, SignRequestModel } from '../models';\nimport { SignModalComponent } from '../components/sign-modal/sign-modal.component';\nimport { TmpTokenService, Utilities } from 'myrtex-mf-ui-composite';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SignService {\n\n constructor(private simpleModalService: SimpleModalService, private tmpTokenService: TmpTokenService) {\n }\n\n public sign(request: SignRequestModel,\n ok: (result?: SignedResultModel) => void,\n cancel?: () => void): void {\n\n const baseUrl = Utilities.commonPart(request.xmlUrl, request.pdfUrl);\n\n this.tmpTokenService.generate(baseUrl).subscribe(token => {\n\n const ph = `${window.location.protocol}//${window.location.host}`;\n if (request.xmlUrl) {\n request.xmlUrl = ph + Utilities.updateQueryStringParameter(request.xmlUrl, 'authToken', token);\n }\n\n if (request.pdfUrl) {\n request.pdfUrl = ph + Utilities.updateQueryStringParameter(request.pdfUrl, 'authToken', token);\n }\n\n this.simpleModalService.addModal(SignModalComponent, request, { wrapperClass: 'in xl' })\n .subscribe(result => {\n if (result && result.result) {\n ok(result.model);\n } else {\n if (cancel) {\n cancel();\n }\n }\n });\n\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SignModalComponent } from './components/sign-modal/sign-modal.component';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MyrtexMfUiCompositeModule } from 'myrtex-mf-ui-composite';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { SignService } from './services/public.sign.service';\nimport { DownloadService } from './services/download.service';\nimport { CertificateSelectComponent } from './components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from './services/crypto.api.service';\nimport { SignProviderFactory } from './providers/signprovider.factory';\nimport { CryptoProvider } from './providers/crypto.provider';\nimport { CryptoJinnProvider } from './providers/cryptojinn.provider';\nimport { CryptoTsProvider } from './providers/cryptots.provider';\nimport { EmptyProvider } from './providers/empty.provider';\n\n@NgModule({\n declarations: [\n SignModalComponent,\n CertificateSelectComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n NgSelectModule,\n MyrtexMfUiCompositeModule\n ],\n exports: [\n SignModalComponent\n ],\n providers: [\n SignProviderFactory,\n CryptoProvider,\n CryptoJinnProvider,\n CryptoTsProvider,\n EmptyProvider,\n\n CryptoApiService,\n SignService,\n DownloadService\n ]\n})\nexport class MyrtexSignerModule { }\n","/*\n * Public API Surface of myrtex-mf-signer\n */\n// models\nexport * from './lib/models/index';\n\n// components\nexport * from './lib/components/sign-modal/sign-modal.component';\n\n// modules\nexport * from './lib/myrtex-signer.module';\n\n// services\nexport * from './lib/services/public.sign.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CertificateAdjuster","i1","i2.CryptoService","i4.CryptoApiService","i3.CryptoApiService","i1.CryptoProvider","i2.CryptoJinnProvider","i3.CryptoTsProvider","i4.EmptyProvider","i1.SignProviderFactory","i2.DownloadService","i4","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"myrtex-mf-signer.mjs","sources":["../../../projects/myrtex-mf-signer/src/lib/services/crypto.base.service.ts","../../../projects/myrtex-mf-signer/src/lib/services/certificate.adjuster.ts","../../../projects/myrtex-mf-signer/src/lib/services/cryptopro/crypto.pro.base.service.ts","../../../projects/myrtex-mf-signer/src/lib/services/cryptopro/crypto.pro.async.service.ts","../../../projects/myrtex-mf-signer/src/lib/components/certificate-select/certificate-select.component.ts","../../../projects/myrtex-mf-signer/src/lib/components/certificate-select/certificate-select.component.html","../../../projects/myrtex-mf-signer/src/lib/services/cryptopro/crypto.pro.ts.service.ts","../../../projects/myrtex-mf-signer/src/lib/services/crypto.service.ts","../../../projects/myrtex-mf-signer/src/lib/services/crypto.api.service.ts","../../../projects/myrtex-mf-signer/src/lib/providers/crypto.provider.ts","../../../projects/myrtex-mf-signer/src/lib/providers/cryptojinn.provider.ts","../../../projects/myrtex-mf-signer/src/lib/providers/cryptots.provider.ts","../../../projects/myrtex-mf-signer/src/lib/providers/empty.provider.ts","../../../projects/myrtex-mf-signer/src/lib/providers/signprovider.factory.ts","../../../projects/myrtex-mf-signer/src/lib/services/download.service.ts","../../../projects/myrtex-mf-signer/src/lib/components/sign-modal/sign-modal.component.ts","../../../projects/myrtex-mf-signer/src/lib/components/sign-modal/sign-modal.component.html","../../../projects/myrtex-mf-signer/src/lib/services/public.sign.service.ts","../../../projects/myrtex-mf-signer/src/lib/myrtex-signer.module.ts","../../../projects/myrtex-mf-signer/src/public-api.ts","../../../projects/myrtex-mf-signer/src/myrtex-mf-signer.ts"],"sourcesContent":["export class CryptoBaseService {\n\n public available = false;\n options: any = {};\n\n init(): Promise<CryptoBaseService> {\n return Promise.reject('Not implemented');\n };\n\n auth(): Promise<boolean> {\n return Promise.resolve(true);\n };\n}\n","class CertificateAdjuster {\n extract(s: string, name: string | string[]): string {\n if (typeof (name) === 'string') {\n name = [name];\n }\n\n for (var i = 0; i < name.length; i++) {\n let n = name[i];\n let re = new RegExp(n + '\\\\s*=\\\\s*(?<value>[^=]+)([^,\\\\/]|$)', 'g');\n let m = re.exec(s);\n if (m !== null && m.groups !== undefined && m.groups !== null) {\n let r = m.groups.value;\n r = r.replace(/^\\\"?/, '');\n r = r.replace(/\\\"$/, '');\n r = r.replace(/\\\"\\\"/g, '\"');\n return r;\n }\n }\n\n return '';\n };\n\n Print2Digit(digit: number) {\n return (digit < 10) ? '0' + digit : digit;\n };\n\n GetCertDate(paramDate: any) {\n let certDate = new Date(paramDate);\n return this.Print2Digit(certDate.getUTCDate()) + '.' + this.Print2Digit(certDate.getMonth() + 1) +\n '.' + certDate.getFullYear() + ' ' +\n this.Print2Digit(certDate.getUTCHours()) + ':' + this.Print2Digit(certDate.getUTCMinutes()) +\n ':' + this.Print2Digit(certDate.getUTCSeconds());\n };\n\n GetCertFio(certSubjectName: string) {\n const lastName = this.extract(certSubjectName, 'SN');\n const name = this.extract(certSubjectName, 'G');\n\n return lastName + ' ' + name;\n };\n\n GetCertPost(certSubjectName: string) {\n return this.extract(certSubjectName, 'T');\n };\n\n GetCertOgrn(certSubjectName: string) {\n return this.extract(certSubjectName, ['OGRN', 'ОГРН', 'ОГРНИП','OGRNIP', '1.2.643.100.1']);\n };\n\n GetCertOrg(certSubjectName: string) {\n return this.extract(certSubjectName, 'O');\n };\n\n GetCertInn(certSubjectName: string) {\n return this.extract(certSubjectName, ['INN', 'ИНН', '1.2.643.3.131.1.1']);\n };\n\n GetCertName(certSubjectName: string) {\n return this.extract(certSubjectName, 'CN');\n };\n\n GetIssuer(certIssuerName: string) {\n return this.extract(certIssuerName, 'CN');\n };\n\n GetCertInfoString(certSubjectName: string, certFromDate: any) {\n return this.extract(certSubjectName, 'CN') + '; Выдан: ' + this.GetCertDate(certFromDate);\n };\n}\n\nconst instance = new CertificateAdjuster();\nexport { instance as CertificateAdjuster };","import {\n CADESCOM_STORE_LOCATION,\n CAPICOM_STORE_NAMES,\n CAPICOM_STORE_OPEN_MODE,\n ProgIds,\n Async\n} from 'cadesplugin-types';\nimport { CertificateModel } from '../../models';\n// @ts-ignore\nimport getCadesplugin from 'async-cadesplugin';\nimport { CryptoBaseService } from '../crypto.base.service';\nimport { CertificateAdjuster } from '../certificate.adjuster';\n\ndeclare global {\n interface Window {\n cadesplugin: Async.IWebClassFactory;\n }\n}\n\nexport class CryptoProBaseService extends CryptoBaseService {\n\n constructor() {\n super();\n }\n\n public async init(): Promise<CryptoBaseService> {\n await getCadesplugin();\n return Promise.resolve(this);\n };\n\n public async getCertificates(): Promise<CertificateModel[]> {\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\n\n let storeCerts = await store.Certificates;\n let count = await storeCerts.Count;\n let certificates: Array<CertificateModel> = [];\n\n for (let i = 1; i <= count; i++) {\n let cert = await storeCerts.Item(i);\n let validFromDate = new Date(await cert.ValidFromDate);\n let validToDate = new Date(await cert.ValidToDate);\n const subjectName = await cert.SubjectName;\n\n certificates.push({\n id: i,\n certificate: cert,\n subjectName: subjectName,\n name: CertificateAdjuster.GetCertInfoString(subjectName, validFromDate),\n cn: CertificateAdjuster.GetCertName(subjectName),\n fio: CertificateAdjuster.GetCertFio(subjectName),\n post: CertificateAdjuster.GetCertPost(subjectName),\n ogrn: CertificateAdjuster.GetCertOgrn(subjectName),\n organization: CertificateAdjuster.GetCertOrg(subjectName),\n inn: CertificateAdjuster.GetCertInn(subjectName),\n validFromDate: validFromDate.toLocaleDateString('ru-RU'),\n validToDate: validToDate.toLocaleDateString('ru-RU'),\n thumbprint: await cert.Thumbprint,\n issuerName: await cert.IssuerName,\n serialNumber: await cert.SerialNumber,\n isExpired: validToDate < new Date()\n });\n }\n await store.Close();\n return certificates;\n }\n}\n","import {\n Async,\n CADESCOM_CADES_TYPE,\n CADESCOM_CONTENT_ENCODING_TYPE,\n CADESCOM_STORE_LOCATION, CAPICOM_STORE_NAMES, CAPICOM_STORE_OPEN_MODE,\n ProgIds\n} from 'cadesplugin-types';\nimport { CryptoProBaseService } from './crypto.pro.base.service';\n\nexport class CryptoProAsyncService extends CryptoProBaseService {\n\n public static readonly key = 'cryptoproasync';\n\n constructor() {\n super();\n }\n\n public async signXml(certificate: any, data: string): Promise<string> {\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let timestamp_service_url = 'http://testca.cryptopro.ru/tsp/tsp.srf';\n await signer.propset_TSAAddress(timestamp_service_url);\n\n let signed: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\n\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\n await signed.propset_Content(encodedXml);\n\n let cades_xml_signature_type_enveloped = 80;\n await signed.propset_SignatureType(cades_xml_signature_type_enveloped);\n\n const signedData = await signed.Sign(signer);\n \n return signedData;\n }\n\n public async signBase64(certificate: any, data: string, detached: boolean = false): Promise<string> {\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let signed: Async.ICPSignedData5 = await window.cadesplugin.CreateObjectAsync(ProgIds.CadesSignedData);\n\n await signed.propset_ContentEncoding(CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY);\n await signed.propset_Content(data);\n\n const signedData = await signed.SignCades(signer, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, detached);\n\n return signedData;\n }\n}\n","import { Component } from '@angular/core';\nimport { SimpleModalComponent } from 'ngx-simple-modal';\nimport { CertificateModel } from '../../models';\n\nexport interface CertificateSelectModel {\n certificates: CertificateModel[];\n}\n\nexport interface CertificateSelectResultModel {\n selected?: CertificateModel;\n}\n\n@Component({\n selector: 'lib-certificate-select',\n templateUrl: './certificate-select.component.html',\n styleUrls: ['./certificate-select.component.css']\n})\nexport class CertificateSelectComponent extends SimpleModalComponent<CertificateSelectModel, CertificateSelectResultModel>\n implements CertificateSelectModel {\n\n certificates: CertificateModel[] = [];\n\n constructor() {\n super();\n this.result = {};\n }\n\n ok(cert: CertificateModel) {\n this.result = {selected: cert};\n this.close();\n }\n}\n","<div class=\"modal-content open accent-head certificate\">\n <div class=\"modal-header\">\n <div class=\"modal-title\" [innerHTML]=\"'Выберите сертификат'\">\n </div>\n <span class='close close-click' (click)=\"close()\">\n <svg width='14' height='14' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <path d='M13 1L1 13M1 1l12 12' stroke='#3A3A3A' stroke-width='1.5' stroke-linecap='round'\n stroke-linejoin='round' />\n </svg>\n </span>\n </div>\n <div class=\"modal-body text-center\">\n\n <div class=\"modal-body-other\">\n <div *ngFor=\"let cert of certificates\">\n <div class=\"modal-body-info\" *ngIf=\"!cert.isExpired\">\n <div class=\"modal-body-info__item\">\n <span class=\"text\">\n Владелец:\n </span>\n <span class=\"text\">\n {{cert.cn}}<br/>\n {{cert.fio}}<span *ngIf=\"cert.post\">, {{cert.post}}</span>\n </span>\n </div>\n <div class=\"modal-body-info__item\">\n <span class=\"text\">\n Срок действия:\n </span>\n <span class=\"text\">\n {{cert.validFromDate}} - {{cert.validToDate}}\n </span>\n </div>\n <div class=\"modal-body-info__item\">\n <span class=\"text hash\">\n {{cert.thumbprint}} {{cert.isExpired ? \"(истек)\" : \"\"}}\n </span>\n </div>\n <button\n (click)=\"ok(cert)\"\n [disabled]=\"cert.isExpired\"\n class=\"btn btn-md\">Создать подпись</button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n </div>\n</div>","import {\n Async,\n CADESCOM_STORE_LOCATION, CADESCOM_XML_SIGNATURE_TYPE,\n CAPICOM_STORE_NAMES,\n CAPICOM_STORE_OPEN_MODE,\n ProgIds\n} from 'cadesplugin-types';\nimport { CryptoProBaseService } from './crypto.pro.base.service';\n\nexport class CryptoProTsService extends CryptoProBaseService {\n\n public static readonly key = 'cryptoprots';\n\n constructor() {\n super();\n }\n\n private get TIMESTAMP_SERVICE_URL(): string {\n return 'http://testca.cryptopro.ru/tsp/tsp.srf';\n }\n\n public async sign(certificate: any, data: string): Promise<string> {\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\n\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let signedXML: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\n\n let publicKey: Async.IPublicKey = await certificate.PublicKey();\n let algorithm: Async.IOID = await publicKey.Algorithm;\n let algorithmOid = await algorithm.Value;\n\n let {signMethod, digestMethod} = this.getSigningMethods(algorithmOid);\n\n //await signer.propset_Options(api.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN);\n\n await signer.propset_TSAAddress(this.TIMESTAMP_SERVICE_URL);\n\n if (data) {\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\n await signedXML.propset_Content(encodedXml);\n }\n\n await signedXML.propset_SignatureType(CADESCOM_XML_SIGNATURE_TYPE.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED);\n await signedXML.propset_SignatureMethod(signMethod);\n await signedXML.propset_DigestMethod(digestMethod);\n\n let signature = await signedXML.Sign(signer);\n\n await store.Close();\n\n return signature;\n }\n\n private getSigningMethods(algorithmOid: string): { signMethod: string, digestMethod: string } {\n let signMethod = '', digestMethod = '';\n\n if (algorithmOid == '1.2.643.7.1.1.1.1') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 256 бит\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\n } else if (algorithmOid == '1.2.643.7.1.1.1.2') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 512 бит\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512';\n } else if (algorithmOid == '1.2.643.2.2.19') { // алгоритм ГОСТ Р 34.10-2001\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\n }\n\n return {signMethod, digestMethod};\n }\n}\n","import { CryptoProAsyncService } from './cryptopro/crypto.pro.async.service';\nimport { Injectable } from '@angular/core';\nimport { CryptoBaseService } from './crypto.base.service';\nimport { CryptoProTsService } from './cryptopro/crypto.pro.ts.service';\n\nexport interface CryptoHandler {\n key: string;\n name: string;\n service: CryptoBaseService;\n sign: boolean;\n default: boolean;\n disabled?: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoService {\n\n handlers: Map<string, CryptoHandler> = new Map<string, CryptoHandler>();\n selectPromise: any = null;\n private _initialized = false;\n private _withLog = false;\n\n public async startUp(withLog? : boolean): Promise<void> {\n this._withLog = !!withLog;\n\n if (!this._initialized) {\n this.registerHandler({\n key: CryptoProAsyncService.key,\n name: 'КриптоПро',\n service: new CryptoProAsyncService(),\n sign: true,\n default: true\n });\n this.registerHandler({\n key: CryptoProTsService.key,\n name: 'КриптоПро',\n service: new CryptoProTsService(),\n sign: true,\n default: false\n });\n await this.init();\n this._initialized = true;\n }\n this.log('Handlers init completed');\n return Promise.resolve();\n }\n\n public registerHandler(options: CryptoHandler) {\n this.log('Register handler', options);\n\n options.disabled = false;\n this.handlers.set(options.key, options);\n };\n\n public disableHandler(key: string): void {\n const handler = this.handlers.get(key);\n if (handler) {\n handler.disabled = true;\n }\n };\n\n public getHandler(key: string): Promise<CryptoHandler> {\n const handler = this.getActiveHandlers()\n .find(x => x.key == key);\n\n if (handler) {\n return Promise.resolve(handler);\n }\n return Promise.reject(`Not found ${key} handler`);\n };\n\n public getDefaultHandler() : Promise<CryptoHandler> {\n const handler = this.getActiveHandlers()\n .find(x => x.default);\n\n if (handler) {\n return Promise.resolve(handler);\n }\n return Promise.reject(`Not found default handler`);\n };\n\n public getService<T extends CryptoBaseService>(key: string): Promise<T> {\n const handler = this.handlers.get(key);\n if (handler) {\n return Promise.resolve(handler.service as T);\n }\n return Promise.reject(`Not found ${key}`);\n };\n\n public getActiveHandlers(): Array<CryptoHandler> {\n const active = new Array<CryptoHandler>();\n this.handlers.forEach(s => {\n if (!s.disabled) {\n active.push(s);\n }\n });\n return active;\n };\n\n private log(...args: any[]) {\n if (this._withLog) {\n console.log(args);\n }\n };\n\n private async init(): Promise<any> {\n this.log('Initialize handlers');\n\n const promises: Array<Promise<any>> = [];\n this.handlers.forEach(handler => {\n handler.service.available = false;\n\n this.log('Initialize ' + handler.name);\n\n const promise = handler.service.init().then((result) => {\n result.available = true;\n this.log('Handler init success', result);\n }).catch(reason => {\n this.log('Handler init fail', reason);\n });\n\n promises.push(promise);\n });\n\n return await Promise.all(promises);\n };\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\nimport { SignValidateResponse } from '../models';\nimport { VerifyCertModel } from '../models/internal/verify.cert.model';\nimport { VerifyCertResponseModel } from '../models/internal/verify.cert.response.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoApiService extends EndpointBaseService {\n\n private urlCrypto = '/cryptopro/api';\n private urlSigner = '/signer/api/v1';\n\n constructor(protected http: HttpClient, protected injector: Injector) {\n super(http, injector);\n }\n\n public verify(data: VerifyCertModel): Observable<VerifyCertResponseModel> {\n return this.http.post<VerifyCertResponseModel>(`${this.urlCrypto}/cryptopro/verify`, data);\n }\n\n public validate(data: string): Observable<SignValidateResponse> {\n return this.http.post<SignValidateResponse>(`${this.urlSigner}/jinn/validate`, {data});\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Base64 } from 'js-base64';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { ISignProvider } from './interfaces/isign.provider';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { SignedResultModel } from '../models';\nimport { AlertService, DialogColor, DialogType } from 'myrtex-mf-ui-composite';\n\ndeclare const window: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private alertService: AlertService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, withLog?: boolean, options?: any): Promise<SignedResultModel> {\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, { certificates: list }).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n let certificateFail = 0;\n if (window.CRYPTO_SKIP_CHECK !== true) {\n if (options.checkFio &&\n modalResult.selected.fio.toLowerCase() !== options.checkFio.toLowerCase()) {\n certificateFail = 1;\n }\n\n\n var ogrnIsValid = modalResult.selected.ogrn?.toLowerCase() == options.checkOgrn?.toLowerCase();\n\n if (options.checkOgrn && !ogrnIsValid) {\n certificateFail = 2;\n }\n\n if (options.checkOrganizationFullName || options.checkOrganizationShortName) {\n var organization = modalResult.selected.organization;\n if (!organization) {\n organization = modalResult.selected.cn;\n }\n\n var orgIsValid = organization?.toLowerCase() == options.checkOrganizationFullName?.toLowerCase()\n || organization?.toLowerCase() == options.checkOrganizationShortName?.toLowerCase();\n if (!orgIsValid) {\n certificateFail = 2;\n }\n }\n }\n\n if (certificateFail > 0) {\n this.alertService.showDialog({\n title: 'Ошибка сертификата',\n message: certificateFail == 1 ?\n 'Данные лица, подписывающего заявку не совпадают с данными усиленной квалифицированной подписи.' :\n 'Данные организации не совпадают с данными усиленной квалифицированной подписи. ' +\n 'Убедитесь, что вы используете сертификат, выданные от организации.',\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n //\n }\n });\n\n return Promise.reject();\n }\n\n if (withLog) {\n console.log('Signing data', data);\n }\n\n const signedData = await service.signBase64(modalResult.selected.certificate, data, true);\n\n if (withLog) {\n console.log('Signing data', data);\n }\n\n if (!options.skipServerCheck) {\n const verifyResult = await this.cryptoApiService.verify({\n data: data,\n signature: Base64.encode(signedData),\n detached: true\n }).toPromise();\n\n return {\n data,\n success: verifyResult.success,\n signed: signedData,\n certificate: modalResult.selected,\n };\n } else {\n return {\n data,\n success: true,\n signed: signedData,\n certificate: modalResult.selected,\n };\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { ISignProvider } from './interfaces/isign.provider';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoJinnProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, withLog?: boolean, options?: any): Promise<SignedResultModel> {\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, { certificates: list }).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n if (withLog) {\n console.log('Signing data', data);\n }\n\n const signedData = await service.signXml(modalResult.selected.certificate, data);\n\n const verifyResult = await this.cryptoApiService.validate(signedData).toPromise();\n\n return {\n data: signedData,\n success: verifyResult.success,\n certificate: modalResult.selected,\n validateResult: verifyResult.validateResult\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ISignProvider } from './interfaces/isign.provider';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoProTsService } from '../services/cryptopro/crypto.pro.ts.service';\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoTsProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, withLog?: boolean, options?: any): Promise<SignedResultModel> {\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProTsService>(CryptoProTsService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n const signedData = await service.sign(modalResult.selected.certificate, data);\n\n if (!options.skipServerCheck) {\n const validateResult = await this.cryptoApiService.validate(signedData).toPromise();\n\n return {\n data,\n signed: signedData,\n success: validateResult.success,\n validateResult: validateResult.validateResult,\n certificate: modalResult.selected,\n };\n } else {\n return {\n data,\n signed: signedData,\n success: true,\n validateResult: '',\n certificate: modalResult.selected,\n };\n }\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { ISignProvider } from \"./interfaces/isign.provider\";\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EmptyProvider implements ISignProvider {\n\n public async sign(data: string, withLog?: boolean, options?: any): Promise<SignedResultModel> {\n return Promise.resolve({\n data: data,\n success: true\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CryptoProvider } from './crypto.provider';\nimport { CryptoJinnProvider } from './cryptojinn.provider';\nimport { EmptyProvider } from './empty.provider';\nimport { CryptoTsProvider } from './cryptots.provider';\nimport { SignProviderType } from '../models';\nimport { ISignProvider } from './interfaces/isign.provider';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SignProviderFactory {\n constructor(\n protected cryptoProvider: CryptoProvider,\n protected cryptoJinnProvider: CryptoJinnProvider,\n protected cryptoTsProvider: CryptoTsProvider,\n protected emptyProvider: EmptyProvider) {\n }\n\n create(providerType: SignProviderType): ISignProvider {\n switch (providerType) {\n case 'crypto':\n return this.cryptoProvider;\n case 'cryptojinn':\n return this.cryptoJinnProvider;\n case 'cryptots':\n return this.cryptoTsProvider;\n case 'empty':\n return this.emptyProvider;\n }\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DownloadService extends EndpointBaseService {\n\n private url = '/signer/api/v1/download';\n\n constructor(protected http: HttpClient, protected injector: Injector) {\n super(http, injector);\n }\n\n public xml(url: string): Observable<any> {\n return this.http.get(url,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'text/xml'),\n responseType: 'text'\n });\n }\n\n public pdf(url: string): Observable<any> {\n return this.http.get(url,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'application/pdf'),\n responseType: 'blob'\n });\n }\n\n /*public xml(url: string): Observable<any> {\n return this.http.get(`${this.url}/xml?url=${encodeURIComponent(url)}`,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'text/xml'),\n responseType: 'text'\n });\n }\n\n public pdf(url: string): Observable<any> {\n return this.http.get(`${this.url}/pdf?url=${encodeURIComponent(url)}`,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'application/pdf'),\n responseType: 'blob'\n });\n }*/\n}\n","import { Component } from '@angular/core';\nimport { AlertService, DialogColor, DialogType, Utilities } from 'myrtex-mf-ui-composite';\nimport { SimpleModalComponent } from 'ngx-simple-modal';\nimport { Base64 } from 'js-base64';\nimport { SignProviderType, SignType } from '../../models';\nimport { SignedResultModel } from '../../models/signed-result.model';\nimport { SignRequestModel } from '../../models/sign-request.model';\nimport { DownloadService } from '../../services/download.service';\nimport { SignProviderFactory } from '../../providers/signprovider.factory';\nimport { OnInit } from '@angular/core/core';\n\nexport interface SignedResponseModel {\n result: boolean;\n model?: SignedResultModel;\n}\n\n@Component({\n selector: 'lib-sign-modal',\n templateUrl: './sign-modal.component.html',\n styleUrls: ['./sign-modal.component.css']\n})\nexport class SignModalComponent\n extends SimpleModalComponent<SignRequestModel, SignedResponseModel> implements OnInit, SignRequestModel {\n\n public title = '';\n public okLabel = '';\n public cancelLabel = '';\n\n public xmlUrl?: string;\n public pdfUrl?: string;\n\n public provider: SignProviderType = 'empty';\n public signType: SignType = 'xml';\n\n public xmlToSign = '';\n public pdfToSign = '';\n public withLog?: boolean;\n public skipServerCheck?: boolean;\n public checkFio?: string;\n public checkOgrn?: string;\n public checkOrganizationFullName?: string;\n public checkOrganizationShortName?: string;\n public checkInn?: string;\n\n downloadingPdf = false;\n\n constructor(private signProviderFactory: SignProviderFactory,\n private downloadService: DownloadService,\n private alertService: AlertService) {\n super();\n this.result = { result: false };\n }\n\n get disabled() {\n // todo как можно дизеблить кнопу\n return false;\n }\n\n get pdfViewUrl(): string {\n return this.pdfUrl ?\n `/signer/pdfjs/web/viewer.html?file=${encodeURIComponent(this.pdfUrl)}` : '';\n }\n\n ngOnInit(): void {\n this.downloadXml();\n this.downloadPdf();\n }\n\n public ok() {\n\n if (!this.signType) {\n this.signType = 'xml';\n }\n\n let signData = this.xmlToSign;\n\n switch (this.signType) {\n case 'xml':\n signData = Base64.encode(this.xmlToSign);\n break;\n case 'pdf':\n signData = this.pdfToSign;\n break;\n case 'xmlts':\n signData = this.xmlToSign;\n break;\n }\n\n this.signProviderFactory.create(this.provider)\n .sign(signData, this.withLog, {\n skipServerCheck: this.skipServerCheck,\n checkFio: this.checkFio,\n checkOgrn: this.checkOgrn,\n checkOrganizationFullName: this.checkOrganizationFullName,\n checkOrganizationShortName: this.checkOrganizationShortName,\n checkInn: this.checkInn\n })\n .then((ok: SignedResultModel) => {\n this.processResult(ok);\n }).catch((error: any) => {\n this.processError(error);\n });\n }\n\n public cancel() {\n this.close();\n }\n\n private processResult(signResult: SignedResultModel): void {\n if (signResult.success) {\n this.result = { model: signResult, result: true };\n this.close();\n } else {\n this.alertService.showDialog({\n title: 'Ошибка проверки подписи',\n message: 'Подпись не валидна',\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n }\n });\n }\n }\n\n private processError(error: any): void {\n if (this.withLog) {\n console.error(error);\n }\n\n this.alertService.showDialog({\n title: 'Ошибка проверки подписи',\n message: JSON.stringify(error),\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n }\n });\n }\n\n private downloadXml(): void {\n if (!this.xmlUrl) {\n return;\n }\n\n if (this.withLog) {\n console.log('Downloading xml');\n }\n\n this.downloadService.xml(this.xmlUrl).subscribe(result => {\n if (this.withLog) {\n console.log('xmlToSign = ', result);\n }\n this.xmlToSign = result;\n });\n }\n\n private downloadPdf(): void {\n if (!this.pdfUrl) {\n return;\n }\n\n if (this.withLog) {\n console.log('Downloading pdf');\n }\n\n this.downloadingPdf = true;\n this.downloadService.pdf(this.pdfUrl)\n .subscribe(result => {\n this.downloadingPdf = false;\n // todo подумать, как правильно читать файл\n // const blob = new Blob([result], {type: 'application/pdf'});\n const reader = new FileReader();\n reader.readAsDataURL(result);\n reader.onloadend = () => {\n let base64data = reader.result as string;\n base64data = base64data.replace('data:application/pdf;base64,', '');\n\n if (this.withLog) {\n console.log('pdfToSign = ', base64data);\n }\n this.pdfToSign = base64data;\n }\n }, () => {\n this.downloadingPdf = false;\n });\n }\n}\n","<div class=\"modal-content accent-head xl\">\n <div class=\"modal-header\">\n <div class=\"modal-title uppercase\">\n <h4 class=\"ng-binding\">{{title || 'Направление документа на подписание'}}</h4>\n </div>\n <span class=\"close close-click\" (click)=\"close()\">\n <svg width=\"14\" height=\"14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M13 1L1 13M1 1l12 12\" stroke=\"#3A3A3A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n </div>\n\n <div class=\"modal-body text-center\">\n <div class=\"widget\">\n <my-tabs>\n <app-tab tabTitle=\"Визуализация документа\" *ngIf=\"pdfUrl\">\n <pre *ngIf=\"downloadingPdf\">\n Подождите, идет формирование документа\n </pre>\n <iframe *ngIf=\"!downloadingPdf\" [src]=\"pdfViewUrl | safeurl\"\n title=\"webviewer\" frameborder=\"0\" width=\"100%\" height=\"800\"></iframe>\n </app-tab>\n <app-tab tabTitle=\"Подписываемые данные\" *ngIf=\"xmlUrl\">\n <pre [innerText]=\"xmlToSign\"></pre>\n </app-tab>\n </my-tabs>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <div *ngIf=\"pdfUrl || xmlUrl\"\n class=\"modal-footer-item\">\n <a *ngIf=\"pdfUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"pdfUrl\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M18 21.25H6C5.30964 21.25 4.75 20.6904 4.75 20V4C4.75 3.30964 5.30964 2.75 6 2.75H13.1893L19.25 8.81066V20C19.25 20.6904 18.6904 21.25 18 21.25Z\"\n stroke=\"#282828\" stroke-width=\"1.5\"/>\n </svg>\n <span>Скачать документ</span>\n </a>\n <a *ngIf=\"xmlUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"xmlUrl\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 16L2 12L6 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M18 16L22 12L18 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"/>\n <path d=\"M7.56689 19.1782L15.5669 5.32182\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"/>\n </svg>\n <span>Скачать XML-данные</span>\n </a>\n </div>\n <div class=\"modal-footer-item\">\n <button\n class=\"mrx-btn mrx-btn-secondary mrx-btn-md wpx-120 mr-3\"\n (click)=\"cancel()\"\n >\n <div class=\"mrx-btn-label\">{{cancelLabel || 'Отменить'}}</div>\n </button>\n <button\n class=\"mrx-btn mrx-btn-primary mrx-btn-md wpx-120\"\n [disabled]=\"disabled\"\n (click)=\"ok()\"\n >\n <div class=\"mrx-btn-label\">{{okLabel || 'Подписать'}}</div>\n </button>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { SignedResultModel, SignRequestModel } from '../models';\nimport { SignModalComponent } from '../components/sign-modal/sign-modal.component';\nimport { TmpTokenService, Utilities } from 'myrtex-mf-ui-composite';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SignService {\n\n constructor(private simpleModalService: SimpleModalService, private tmpTokenService: TmpTokenService) {\n }\n\n public sign(request: SignRequestModel,\n ok: (result?: SignedResultModel) => void,\n cancel?: () => void): void {\n\n const baseUrl = Utilities.commonPart(request.xmlUrl, request.pdfUrl);\n\n this.tmpTokenService.generate(baseUrl).subscribe(token => {\n\n const ph = `${window.location.protocol}//${window.location.host}`;\n if (request.xmlUrl) {\n request.xmlUrl = ph + Utilities.updateQueryStringParameter(request.xmlUrl, 'authToken', token);\n }\n\n if (request.pdfUrl) {\n request.pdfUrl = ph + Utilities.updateQueryStringParameter(request.pdfUrl, 'authToken', token);\n }\n\n this.simpleModalService.addModal(SignModalComponent, request, { wrapperClass: 'in xl' })\n .subscribe(result => {\n if (result && result.result) {\n ok(result.model);\n } else {\n if (cancel) {\n cancel();\n }\n }\n });\n\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SignModalComponent } from './components/sign-modal/sign-modal.component';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MyrtexMfUiCompositeModule } from 'myrtex-mf-ui-composite';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { SignService } from './services/public.sign.service';\nimport { DownloadService } from './services/download.service';\nimport { CertificateSelectComponent } from './components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from './services/crypto.api.service';\nimport { SignProviderFactory } from './providers/signprovider.factory';\nimport { CryptoProvider } from './providers/crypto.provider';\nimport { CryptoJinnProvider } from './providers/cryptojinn.provider';\nimport { CryptoTsProvider } from './providers/cryptots.provider';\nimport { EmptyProvider } from './providers/empty.provider';\n\n@NgModule({\n declarations: [\n SignModalComponent,\n CertificateSelectComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n NgSelectModule,\n MyrtexMfUiCompositeModule\n ],\n exports: [\n SignModalComponent\n ],\n providers: [\n SignProviderFactory,\n CryptoProvider,\n CryptoJinnProvider,\n CryptoTsProvider,\n EmptyProvider,\n\n CryptoApiService,\n SignService,\n DownloadService\n ]\n})\nexport class MyrtexSignerModule { }\n","/*\n * Public API Surface of myrtex-mf-signer\n */\n// models\nexport * from './lib/models/index';\n\n// components\nexport * from './lib/components/sign-modal/sign-modal.component';\n\n// modules\nexport * from './lib/myrtex-signer.module';\n\n// services\nexport * from './lib/services/public.sign.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CertificateAdjuster","i1","i2.CryptoService","i4.CryptoApiService","i3.CryptoApiService","i1.CryptoProvider","i2.CryptoJinnProvider","i3.CryptoTsProvider","i4.EmptyProvider","i1.SignProviderFactory","i2.DownloadService","i4","i2"],"mappings":"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"}
|
|
@@ -28,7 +28,8 @@ export declare class SignModalComponent extends SimpleModalComponent<SignRequest
|
|
|
28
28
|
skipServerCheck?: boolean;
|
|
29
29
|
checkFio?: string;
|
|
30
30
|
checkOgrn?: string;
|
|
31
|
-
|
|
31
|
+
checkOrganizationFullName?: string;
|
|
32
|
+
checkOrganizationShortName?: string;
|
|
32
33
|
checkInn?: string;
|
|
33
34
|
downloadingPdf: boolean;
|
|
34
35
|
constructor(signProviderFactory: SignProviderFactory, downloadService: DownloadService, alertService: AlertService);
|