myrtex-mf-signer 1.1.80 → 1.1.81

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.
@@ -34,7 +34,6 @@ export class SignModalComponent extends SimpleModalComponent {
34
34
  }
35
35
  ngOnInit() {
36
36
  this.downloadXml();
37
- this.downloadPdf();
38
37
  }
39
38
  ok() {
40
39
  if (!this.signType) {
@@ -118,6 +117,7 @@ export class SignModalComponent extends SimpleModalComponent {
118
117
  console.log('xmlToSign = ', result);
119
118
  }
120
119
  this.xmlToSign = result;
120
+ this.downloadPdf();
121
121
  });
122
122
  }
123
123
  downloadPdf() {
@@ -154,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
154
154
  type: Component,
155
155
  args: [{ selector: 'lib-sign-modal', template: "<div class=\"modal-content accent-head xl\">\r\n <div class=\"modal-header\">\r\n <div class=\"modal-title uppercase\">\r\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>\r\n </div>\r\n <span class=\"close close-click\" (click)=\"close()\">\r\n <svg width=\"14\" height=\"14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M13 1L1 13M1 1l12 12\" stroke=\"#3A3A3A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"modal-body text-center\">\r\n <div class=\"widget\">\r\n <my-tabs>\r\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\">\r\n <pre *ngIf=\"downloadingPdf\">\r\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\r\n </pre>\r\n <iframe *ngIf=\"!downloadingPdf\" [src]=\"pdfViewUrl | safeurl\"\r\n title=\"webviewer\" frameborder=\"0\" width=\"100%\" height=\"800\"></iframe>\r\n </app-tab>\r\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\">\r\n <pre [innerText]=\"xmlToSign\"></pre>\r\n </app-tab>\r\n </my-tabs>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal-footer\">\r\n <div *ngIf=\"pdfUrl || xmlUrl || additionalPdfUrl\"\r\n class=\"modal-footer-item\">\r\n <a *ngIf=\"pdfUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"pdfUrl\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\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\"\r\n stroke=\"#282828\" stroke-width=\"1.5\"/>\r\n </svg>\r\n <span>\u0421\u043A\u0430\u0447\u0430\u0442\u044C \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442</span>\r\n </a>\r\n <a *ngIf=\"xmlUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"xmlUrl\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6 16L2 12L6 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M18 16L22 12L18 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"/>\r\n <path d=\"M7.56689 19.1782L15.5669 5.32182\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span>\u0421\u043A\u0430\u0447\u0430\u0442\u044C XML-\u0434\u0430\u043D\u043D\u044B\u0435</span>\r\n </a>\r\n <a *ngIf=\"additionalPdfUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"additionalPdfUrl\">\r\n <svg width=\"24\" height=\"20\" viewBox=\"0 0 24 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.21404 14.2776C7.50693 13.9847 7.98181 13.9847 8.2747 14.2776L12.2747 18.2776C12.5676 18.5705 12.5676 19.0454 12.2747 19.3383C11.9818 19.6312 11.5069 19.6312 11.214 19.3383L7.21404 15.3383C6.92115 15.0454 6.92115 14.5705 7.21404 14.2776Z\" fill=\"#33373C\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.2747 14.2776C16.5676 14.5705 16.5676 15.0454 16.2747 15.3383L12.2747 19.3383C11.9818 19.6312 11.5069 19.6312 11.214 19.3383C10.9211 19.0454 10.9211 18.5705 11.214 18.2776L15.214 14.2776C15.5069 13.9847 15.9818 13.9847 16.2747 14.2776Z\" fill=\"#33373C\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M11.7444 9.05796C12.1586 9.05796 12.4944 9.39374 12.4944 9.80796V18.808C12.4944 19.2222 12.1586 19.558 11.7444 19.558C11.3302 19.558 10.9944 19.2222 10.9944 18.808V9.80796C10.9944 9.39374 11.3302 9.05796 11.7444 9.05796Z\" fill=\"#33373C\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0.978206 4.66339C2.62297 1.48351 6.12559 -0.37405 9.73462 0.063407C13.146 0.476912 15.9708 2.84408 17.0094 6.05796H17.7444C20.2757 6.05796 22.4565 7.67267 23.2559 10.0708C23.2593 10.0811 23.2625 10.0915 23.2655 10.1019C23.9483 12.4917 23.1511 15.0227 21.0835 16.516C20.7477 16.7585 20.2789 16.6829 20.0364 16.3471C19.7938 16.0113 19.8695 15.5425 20.2053 15.2999C21.7333 14.1964 22.337 12.335 21.8277 10.5297C21.223 8.73647 19.6077 7.55796 17.7444 7.55796H16.4444C16.1002 7.55796 15.8002 7.32373 15.7168 6.98986C14.9919 4.0904 12.5447 1.915 9.55412 1.55251C6.56314 1.18997 3.66577 2.7324 2.31053 5.35252C0.950478 7.98196 1.3145 11.2478 3.3074 13.5125C3.58105 13.8234 3.5508 14.2974 3.23984 14.571C2.92888 14.8446 2.45498 14.8144 2.18133 14.5034C-0.225765 11.7681 -0.66174 7.83395 0.978206 4.66339Z\" fill=\"#33373C\"/>\r\n </svg>\r\n <span>{{additionalPdfUrlTitle}}</span>\r\n </a>\r\n </div>\r\n <div class=\"modal-footer-item\">\r\n <mrx-button\r\n [customClasses]=\"'mr-3'\"\r\n [type]=\"'secondary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"cancel()\"\r\n >{{cancelLabel || '\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C'}}</mrx-button>\r\n <mrx-button\r\n [type]=\"'primary'\"\r\n [size]=\"'medium'\"\r\n [disabled]=\"disabled\"\r\n (click)=\"ok()\"\r\n >{{okLabel || '\u041F\u043E\u0434\u043F\u0438\u0441\u0430\u0442\u044C'}}</mrx-button>\r\n </div>\r\n </div>\r\n</div>\r\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"] }]
156
156
  }], ctorParameters: function () { return [{ type: i1.SignProviderFactory }, { type: i2.DownloadService }, { type: i3.AlertService }]; } });
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtbWYtc2lnbmVyL3NyYy9saWIvY29tcG9uZW50cy9zaWduLW1vZGFsL3NpZ24tbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LW1mLXNpZ25lci9zcmMvbGliL2NvbXBvbmVudHMvc2lnbi1tb2RhbC9zaWduLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFnQixXQUFXLEVBQUUsVUFBVSxFQUFhLE1BQU0sd0JBQXdCLENBQUM7QUFDMUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7OztBQW1CbkMsTUFBTSxPQUFPLGtCQUNYLFNBQVEsb0JBQTJEO0lBb0NuRSxZQUFvQixtQkFBd0MsRUFDbEQsZUFBZ0MsRUFDaEMsWUFBMEI7UUFDbEMsS0FBSyxFQUFFLENBQUM7UUFIVSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ2xELG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXBDN0IsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQVFqQixhQUFRLEdBQXFCLE9BQU8sQ0FBQztRQUNyQyxhQUFRLEdBQWEsS0FBSyxDQUFDO1FBRTNCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBa0J0QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQU1yQixJQUFJLENBQUMsTUFB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QU8sRUFBRTtZQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDaEM7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUM1QiwyQ0FBMkM7WUFDM0MsOERBQThEO1lBQzlELE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QixNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRTtnQkFDdEIsSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQWdCLENBQUM7Z0JBQ3pDLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLDhCQUE4QixFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUVwRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2lCQUN6QztnQkFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztZQUM5QixDQUFDLENBQUE7UUFDSCxDQUFDLEVBQUUsR0FBRyxFQUFFO1lBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztnSEF6TFUsa0JBQWtCO29HQUFsQixrQkFBa0IsNkVDdEIvQiwybU1Bc0ZBOzRGRGhFYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgRGlhbG9nQ29sb3IsIERpYWxvZ1R5cGUsIFV0aWxpdGllcyB9IGZyb20gJ215cnRleC1tZi11aS1jb21wb3NpdGUnO1xyXG5pbXBvcnQgeyBTaW1wbGVNb2RhbENvbXBvbmVudCB9IGZyb20gJ25neC1zaW1wbGUtbW9kYWwnO1xyXG5pbXBvcnQgeyBCYXNlNjQgfSBmcm9tICdqcy1iYXNlNjQnO1xyXG5pbXBvcnQgeyBTaWduUHJvdmlkZXJUeXBlLCBTaWduVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFNpZ25lZFJlc3VsdE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NpZ25lZC1yZXN1bHQubW9kZWwnO1xyXG5pbXBvcnQgeyBDZXJ0aWZpY2F0ZUNoZWNrLCBTaWduUmVxdWVzdE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NpZ24tcmVxdWVzdC5tb2RlbCc7XHJcbmltcG9ydCB7IERvd25sb2FkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rvd25sb2FkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaWduUHJvdmlkZXJGYWN0b3J5IH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL3NpZ25wcm92aWRlci5mYWN0b3J5JztcclxuaW1wb3J0IHsgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9jb3JlJztcclxuaW1wb3J0IHsgU2lnbmVyVHlwZUVudW0gfSBmcm9tICcuLi8uLi9lbnVtcy9zaWduZXItdHlwZS5lbnVtJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmVkUmVzcG9uc2VNb2RlbCB7XHJcbiAgcmVzdWx0OiBib29sZWFuO1xyXG4gIG1vZGVsPzogU2lnbmVkUmVzdWx0TW9kZWw7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXNpZ24tbW9kYWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWduLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zaWduLW1vZGFsLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2lnbk1vZGFsQ29tcG9uZW50XHJcbiAgZXh0ZW5kcyBTaW1wbGVNb2RhbENvbXBvbmVudDxTaWduUmVxdWVzdE1vZGVsLCBTaWduZWRSZXNwb25zZU1vZGVsPiBpbXBsZW1lbnRzIE9uSW5pdCwgU2lnblJlcXVlc3RNb2RlbCB7XHJcblxyXG4gIHB1YmxpYyB0aXRsZSA9ICcnO1xyXG4gIHB1YmxpYyBva0xhYmVsID0gJyc7XHJcbiAgcHVibGljIGNhbmNlbExhYmVsID0gJyc7XHJcblxyXG4gIHB1YmxpYyB4bWxVcmw/OiBzdHJpbmc7XHJcbiAgcHVibGljIHBkZlVybD86IHN0cmluZztcclxuXHJcbiAgcHVibGljIGFkZGl0aW9uYWxQZGZVcmw/OiBzdHJpbmc7XHJcbiAgcHVibGljIGFkZGl0aW9uYWxQZGZVcmxUaXRsZT86IHN0cmluZztcclxuXHJcbiAgcHVibGljIHByb3ZpZGVyOiBTaWduUHJvdmlkZXJUeXBlID0gJ2VtcHR5JztcclxuICBwdWJsaWMgc2lnblR5cGU6IFNpZ25UeXBlID0gJ3htbCc7XHJcblxyXG4gIHB1YmxpYyB4bWxUb1NpZ24gPSAnJztcclxuICBwdWJsaWMgcGRmVG9TaWduID0gJyc7XHJcbiAgcHVibGljIHdpdGhMb2c/OiBib29sZWFuO1xyXG4gIHB1YmxpYyBza2lwU2VydmVyQ2hlY2s/OiBib29sZWFuO1xyXG5cclxuICBwdWJsaWMgc2lnbmVyVHlwZT86IFNpZ25lclR5cGVFbnVtO1xyXG4gIHB1YmxpYyBjZXJ0aWZpY2F0ZUNoZWNrPzogQ2VydGlmaWNhdGVDaGVjaztcclxuXHJcbiAgLyoqIEBkZXByZWNhdGVkICovXHJcbiAgcHVibGljIGNoZWNrRmlvPzogc3RyaW5nO1xyXG4gIC8qKiBAZGVwcmVjYXRlZCAqL1xyXG4gIHB1YmxpYyBjaGVja09ncm4/OiBzdHJpbmc7XHJcbiAgLyoqIEBkZXByZWNhdGVkICovXHJcbiAgcHVibGljIGNoZWNrT3JnYW5pemF0aW9uRnVsbE5hbWU/OiBzdHJpbmc7XHJcbiAgLyoqIEBkZXByZWNhdGVkICovXHJcbiAgcHVibGljIGNoZWNrT3JnYW5pemF0aW9uU2hvcnROYW1lPzogc3RyaW5nO1xyXG4gIC8qKiBAZGVwcmVjYXRlZCAqL1xyXG4gIHB1YmxpYyBjaGVja0lubj86IHN0cmluZztcclxuXHJcbiAgZG93bmxvYWRpbmdQZGYgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzaWduUHJvdmlkZXJGYWN0b3J5OiBTaWduUHJvdmlkZXJGYWN0b3J5LFxyXG4gICAgcHJpdmF0ZSBkb3dubG9hZFNlcnZpY2U6IERvd25sb2FkU2VydmljZSxcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLnJlc3VsdCA9IHsgcmVzdWx0OiBmYWxzZSB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRpc2FibGVkKCkge1xyXG4gICAgLy8gdG9kbyDQutCw0Log0LzQvtC20L3QviDQtNC40LfQtdCx0LvQuNGC0Ywg0LrQvdC+0L/Rg1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBkZlZpZXdVcmwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnBkZlVybCA/XHJcbiAgICAgIGAvc2lnbmVyL3BkZmpzL3dlYi92aWV3ZXIuaHRtbD9maWxlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMucGRmVXJsKX1gIDogJyc7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZG93bmxvYWRYbWwoKTtcclxuICAgIHRoaXMuZG93bmxvYWRQZGYoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvaygpIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuc2lnblR5cGUpIHtcclxuICAgICAgdGhpcy5zaWduVHlwZSA9ICd4bWwnO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzaWduRGF0YSA9IHRoaXMueG1sVG9TaWduO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5zaWduVHlwZSkge1xyXG4gICAgICBjYXNlICd4bWwnOlxyXG4gICAgICAgIHNpZ25EYXRhID0gQmFzZTY0LmVuY29kZSh0aGlzLnhtbFRvU2lnbik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3BkZic6XHJcbiAgICAgICAgc2lnbkRhdGEgPSB0aGlzLnBkZlRvU2lnbjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAneG1sdHMnOlxyXG4gICAgICAgIHNpZ25EYXRhID0gdGhpcy54bWxUb1NpZ247XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zaWduUHJvdmlkZXJGYWN0b3J5LmNyZWF0ZSh0aGlzLnByb3ZpZGVyKVxyXG4gICAgICAuc2lnbihzaWduRGF0YSwge1xyXG4gICAgICAgIHNraXBTZXJ2ZXJDaGVjazogdGhpcy5za2lwU2VydmVyQ2hlY2ssXHJcbiAgICAgICAgd2l0aExvZzogdGhpcy53aXRoTG9nLFxyXG5cclxuICAgICAgICBjZXJ0aWZpY2F0ZUNoZWNrOiB0aGlzLmNlcnRpZmljYXRlQ2hlY2ssXHJcblxyXG4gICAgICAgIGNoZWNrRmlvOiB0aGlzLmNoZWNrRmlvLFxyXG4gICAgICAgIGNoZWNrT2dybjogdGhpcy5jaGVja09ncm4sXHJcbiAgICAgICAgY2hlY2tPcmdhbml6YXRpb25GdWxsTmFtZTogdGhpcy5jaGVja09yZ2FuaXphdGlvbkZ1bGxOYW1lLFxyXG4gICAgICAgIGNoZWNrT3JnYW5pemF0aW9uU2hvcnROYW1lOiB0aGlzLmNoZWNrT3JnYW5pemF0aW9uU2hvcnROYW1lLFxyXG4gICAgICAgIGNoZWNrSW5uOiB0aGlzLmNoZWNrSW5uXHJcbiAgICAgIH0pXHJcbiAgICAgIC50aGVuKChvazogU2lnbmVkUmVzdWx0TW9kZWwpID0+IHtcclxuICAgICAgICB0aGlzLnByb2Nlc3NSZXN1bHQob2spO1xyXG4gICAgICB9KS5jYXRjaCgoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc0Vycm9yKGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuY2VsKCkge1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzUmVzdWx0KHNpZ25SZXN1bHQ6IFNpZ25lZFJlc3VsdE1vZGVsKTogdm9pZCB7XHJcbiAgICBpZiAoc2lnblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHNpZ25SZXN1bHQucGRmRGF0YSA9IHRoaXMucGRmVG9TaWduO1xyXG4gICAgICBzaWduUmVzdWx0LnhtbERhdGEgPSB0aGlzLnhtbFRvU2lnbjtcclxuICAgICAgdGhpcy5yZXN1bHQgPSB7IG1vZGVsOiBzaWduUmVzdWx0LCByZXN1bHQ6IHRydWUgfTtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyh7XHJcbiAgICAgICAgdGl0bGU6ICfQntGI0LjQsdC60LAg0L/RgNC+0LLQtdGA0LrQuCDQv9C+0LTQv9C40YHQuCcsXHJcbiAgICAgICAgbWVzc2FnZTogJ9Cf0L7QtNC/0LjRgdGMINC90LUg0LLQsNC70LjQtNC90LAnLFxyXG4gICAgICAgIGNvbG9yOiBEaWFsb2dDb2xvci5yZWQsXHJcbiAgICAgICAgdHlwZTogRGlhbG9nVHlwZS5hbGVydCxcclxuICAgICAgICBva0NhbGxiYWNrOiAob2spID0+IHtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzRXJyb3IoZXJyb3I6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMud2l0aExvZykge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyh7XHJcbiAgICAgICAgdGl0bGU6ICfQntGI0LjQsdC60LAg0L/RgNC+0LLQtdGA0LrQuCDQv9C+0LTQv9C40YHQuCcsXHJcbiAgICAgICAgbWVzc2FnZTogdHlwZW9mIChlcnJvcikgPT0gJ3N0cmluZycgPyBlcnJvciA6IEpTT04uc3RyaW5naWZ5KGVycm9yKSxcclxuICAgICAgICBjb2xvcjogRGlhbG9nQ29sb3IucmVkLFxyXG4gICAgICAgIHR5cGU6IERpYWxvZ1R5cGUuYWxlcnQsXHJcbiAgICAgICAgb2tDYWxsYmFjazogKG9rKSA9PiB7XHJcbiAgICAgICAgICAvL1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRvd25sb2FkWG1sKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnhtbFVybCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMud2l0aExvZykge1xyXG4gICAgICBjb25zb2xlLmxvZygnRG93bmxvYWRpbmcgeG1sJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kb3dubG9hZFNlcnZpY2UueG1sKHRoaXMueG1sVXJsKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKHRoaXMud2l0aExvZykge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCd4bWxUb1NpZ24gPSAnLCByZXN1bHQpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMueG1sVG9TaWduID0gcmVzdWx0O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRvd25sb2FkUGRmKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnBkZlVybCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMud2l0aExvZykge1xyXG4gICAgICBjb25zb2xlLmxvZygnRG93bmxvYWRpbmcgcGRmJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kb3dubG9hZGluZ1BkZiA9IHRydWU7XHJcbiAgICB0aGlzLmRvd25sb2FkU2VydmljZS5wZGYodGhpcy5wZGZVcmwpXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICB0aGlzLmRvd25sb2FkaW5nUGRmID0gZmFsc2U7XHJcbiAgICAgICAgLy8gdG9kbyDQv9C+0LTRg9C80LDRgtGMLCDQutCw0Log0L/RgNCw0LLQuNC70YzQvdC+INGH0LjRgtCw0YLRjCDRhNCw0LnQu1xyXG4gICAgICAgIC8vIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbcmVzdWx0XSwge3R5cGU6ICdhcHBsaWNhdGlvbi9wZGYnfSk7XHJcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChyZXN1bHQpO1xyXG4gICAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgYmFzZTY0ZGF0YSA9IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nO1xyXG4gICAgICAgICAgYmFzZTY0ZGF0YSA9IGJhc2U2NGRhdGEucmVwbGFjZSgnZGF0YTphcHBsaWNhdGlvbi9wZGY7YmFzZTY0LCcsICcnKTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy53aXRoTG9nKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwZGZUb1NpZ24gPSAnLCBiYXNlNjRkYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucGRmVG9TaWduID0gYmFzZTY0ZGF0YTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sICgpID0+IHtcclxuICAgICAgICB0aGlzLmRvd25sb2FkaW5nUGRmID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudCBhY2NlbnQtaGVhZCB4bFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC10aXRsZSB1cHBlcmNhc2VcIj5cclxuICAgICAgPGg0IGNsYXNzPVwibmctYmluZGluZ1wiPnt7dGl0bGUgfHwgJ9Cd0LDQv9GA0LDQstC70LXQvdC40LUg0LTQvtC60YPQvNC10L3RgtCwINC90LAg0L/QvtC00L/QuNGB0LDQvdC40LUnfX08L2g0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImNsb3NlIGNsb3NlLWNsaWNrXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cclxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMgMUwxIDEzTTEgMWwxMiAxMlwiIHN0cm9rZT1cIiMzQTNBM0FcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHRleHQtY2VudGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwid2lkZ2V0XCI+XHJcbiAgICAgIDxteS10YWJzPlxyXG4gICAgICAgIDxhcHAtdGFiIHRhYlRpdGxlPVwi0JLQuNC30YPQsNC70LjQt9Cw0YbQuNGPINC00L7QutGD0LzQtdC90YLQsFwiICpuZ0lmPVwicGRmVXJsXCI+XHJcbiAgICAgICAgICA8cHJlICpuZ0lmPVwiZG93bmxvYWRpbmdQZGZcIj5cclxuICAgICAgICAgICAg0J/QvtC00L7QttC00LjRgtC1LCDQuNC00LXRgiDRhNC+0YDQvNC40YDQvtCy0LDQvdC40LUg0LTQvtC60YPQvNC10L3RgtCwXHJcbiAgICAgICAgICA8L3ByZT5cclxuICAgICAgICAgIDxpZnJhbWUgKm5nSWY9XCIhZG93bmxvYWRpbmdQZGZcIiBbc3JjXT1cInBkZlZpZXdVcmwgfCBzYWZldXJsXCJcclxuICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ3ZWJ2aWV3ZXJcIiBmcmFtZWJvcmRlcj1cIjBcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI4MDBcIj48L2lmcmFtZT5cclxuICAgICAgICA8L2FwcC10YWI+XHJcbiAgICAgICAgPGFwcC10YWIgdGFiVGl0bGU9XCLQn9C+0LTQv9C40YHRi9Cy0LDQtdC80YvQtSDQtNCw0L3QvdGL0LVcIiAqbmdJZj1cInhtbFVybFwiPlxyXG4gICAgICAgICAgPHByZSBbaW5uZXJUZXh0XT1cInhtbFRvU2lnblwiPjwvcHJlPlxyXG4gICAgICAgIDwvYXBwLXRhYj5cclxuICAgICAgPC9teS10YWJzPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJwZGZVcmwgfHwgeG1sVXJsIHx8IGFkZGl0aW9uYWxQZGZVcmxcIlxyXG4gICAgICAgICBjbGFzcz1cIm1vZGFsLWZvb3Rlci1pdGVtXCI+XHJcbiAgICAgIDxhICpuZ0lmPVwicGRmVXJsXCJcclxuICAgICAgICAgY2xhc3M9XCJtb2RhbC1mb290ZXItaXRlbV9fbGlua1wiXHJcbiAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXHJcbiAgICAgICAgIFtocmVmXT1cInBkZlVybFwiPlxyXG4gICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgZD1cIk0xOCAyMS4yNUg2QzUuMzA5NjQgMjEuMjUgNC43NSAyMC42OTA0IDQuNzUgMjBWNEM0Ljc1IDMuMzA5NjQgNS4zMDk2NCAyLjc1IDYgMi43NUgxMy4xODkzTDE5LjI1IDguODEwNjZWMjBDMTkuMjUgMjAuNjkwNCAxOC42OTA0IDIxLjI1IDE4IDIxLjI1WlwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiMyODI4MjhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPHNwYW4+0KHQutCw0YfQsNGC0Ywg0LTQvtC60YPQvNC10L3Rgjwvc3Bhbj5cclxuICAgICAgPC9hPlxyXG4gICAgICA8YSAqbmdJZj1cInhtbFVybFwiXHJcbiAgICAgICAgIGNsYXNzPVwibW9kYWwtZm9vdGVyLWl0ZW1fX2xpbmtcIlxyXG4gICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICAgICBbaHJlZl09XCJ4bWxVcmxcIj5cclxuICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNNiAxNkwyIDEyTDYgOFwiIHN0cm9rZT1cIiMyODI4MjhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTE4IDE2TDIyIDEyTDE4IDhcIiBzdHJva2U9XCIjMjgyODI4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNNy41NjY4OSAxOS4xNzgyTDE1LjU2NjkgNS4zMjE4MlwiIHN0cm9rZT1cIiMyODI4MjhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDxzcGFuPtCh0LrQsNGH0LDRgtGMIFhNTC3QtNCw0L3QvdGL0LU8L3NwYW4+XHJcbiAgICAgIDwvYT5cclxuICAgICAgPGEgKm5nSWY9XCJhZGRpdGlvbmFsUGRmVXJsXCJcclxuICAgICAgICAgY2xhc3M9XCJtb2RhbC1mb290ZXItaXRlbV9fbGlua1wiXHJcbiAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXHJcbiAgICAgICAgIFtocmVmXT1cImFkZGl0aW9uYWxQZGZVcmxcIj5cclxuICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk03LjIxNDA0IDE0LjI3NzZDNy41MDY5MyAxMy45ODQ3IDcuOTgxODEgMTMuOTg0NyA4LjI3NDcgMTQuMjc3NkwxMi4yNzQ3IDE4LjI3NzZDMTIuNTY3NiAxOC41NzA1IDEyLjU2NzYgMTkuMDQ1NCAxMi4yNzQ3IDE5LjMzODNDMTEuOTgxOCAxOS42MzEyIDExLjUwNjkgMTkuNjMxMiAxMS4yMTQgMTkuMzM4M0w3LjIxNDA0IDE1LjMzODNDNi45MjExNSAxNS4wNDU0IDYuOTIxMTUgMTQuNTcwNSA3LjIxNDA0IDE0LjI3NzZaXCIgZmlsbD1cIiMzMzM3M0NcIi8+XHJcbiAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTYuMjc0NyAxNC4yNzc2QzE2LjU2NzYgMTQuNTcwNSAxNi41Njc2IDE1LjA0NTQgMTYuMjc0NyAxNS4zMzgzTDEyLjI3NDcgMTkuMzM4M0MxMS45ODE4IDE5LjYzMTIgMTEuNTA2OSAxOS42MzEyIDExLjIxNCAxOS4zMzgzQzEwLjkyMTEgMTkuMDQ1NCAxMC45MjExIDE4LjU3MDUgMTEuMjE0IDE4LjI3NzZMMTUuMjE0IDE0LjI3NzZDMTUuNTA2OSAxMy45ODQ3IDE1Ljk4MTggMTMuOTg0NyAxNi4yNzQ3IDE0LjI3NzZaXCIgZmlsbD1cIiMzMzM3M0NcIi8+XHJcbiAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTEuNzQ0NCA5LjA1Nzk2QzEyLjE1ODYgOS4wNTc5NiAxMi40OTQ0IDkuMzkzNzQgMTIuNDk0NCA5LjgwNzk2VjE4LjgwOEMxMi40OTQ0IDE5LjIyMjIgMTIuMTU4NiAxOS41NTggMTEuNzQ0NCAxOS41NThDMTEuMzMwMiAxOS41NTggMTAuOTk0NCAxOS4yMjIyIDEwLjk5NDQgMTguODA4VjkuODA3OTZDMTAuOTk0NCA5LjM5Mzc0IDExLjMzMDIgOS4wNTc5NiAxMS43NDQ0IDkuMDU3OTZaXCIgZmlsbD1cIiMzMzM3M0NcIi8+XHJcbiAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMC45NzgyMDYgNC42NjMzOUMyLjYyMjk3IDEuNDgzNTEgNi4xMjU1OSAtMC4zNzQwNSA5LjczNDYyIDAuMDYzNDA3QzEzLjE0NiAwLjQ3NjkxMiAxNS45NzA4IDIuODQ0MDggMTcuMDA5NCA2LjA1Nzk2SDE3Ljc0NDRDMjAuMjc1NyA2LjA1Nzk2IDIyLjQ1NjUgNy42NzI2NyAyMy4yNTU5IDEwLjA3MDhDMjMuMjU5MyAxMC4wODExIDIzLjI2MjUgMTAuMDkxNSAyMy4yNjU1IDEwLjEwMTlDMjMuOTQ4MyAxMi40OTE3IDIzLjE1MTEgMTUuMDIyNyAyMS4wODM1IDE2LjUxNkMyMC43NDc3IDE2Ljc1ODUgMjAuMjc4OSAxNi42ODI5IDIwLjAzNjQgMTYuMzQ3MUMxOS43OTM4IDE2LjAxMTMgMTkuODY5NSAxNS41NDI1IDIwLjIwNTMgMTUuMjk5OUMyMS43MzMzIDE0LjE5NjQgMjIuMzM3IDEyLjMzNSAyMS44Mjc3IDEwLjUyOTdDMjEuMjIzIDguNzM2NDcgMTkuNjA3NyA3LjU1Nzk2IDE3Ljc0NDQgNy41NTc5NkgxNi40NDQ0QzE2LjEwMDIgNy41NTc5NiAxNS44MDAyIDcuMzIzNzMgMTUuNzE2OCA2Ljk4OTg2QzE0Ljk5MTkgNC4wOTA0IDEyLjU0NDcgMS45MTUgOS41NTQxMiAxLjU1MjUxQzYuNTYzMTQgMS4xODk5NyAzLjY2NTc3IDIuNzMyNCAyLjMxMDUzIDUuMzUyNTJDMC45NTA0NzggNy45ODE5NiAxLjMxNDUgMTEuMjQ3OCAzLjMwNzQgMTMuNTEyNUMzLjU4MTA1IDEzLjgyMzQgMy41NTA4IDE0LjI5NzQgMy4yMzk4NCAxNC41NzFDMi45Mjg4OCAxNC44NDQ2IDIuNDU0OTggMTQuODE0NCAyLjE4MTMzIDE0LjUwMzRDLTAuMjI1NzY1IDExLjc2ODEgLTAuNjYxNzQgNy44MzM5NSAwLjk3ODIwNiA0LjY2MzM5WlwiIGZpbGw9XCIjMzMzNzNDXCIvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDxzcGFuPnt7YWRkaXRpb25hbFBkZlVybFRpdGxlfX08L3NwYW4+XHJcbiAgICAgIDwvYT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3Rlci1pdGVtXCI+XHJcbiAgICAgIDxtcngtYnV0dG9uXHJcbiAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ21yLTMnXCJcclxuICAgICAgICBbdHlwZV09XCInc2Vjb25kYXJ5J1wiXHJcbiAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXHJcbiAgICAgID57e2NhbmNlbExhYmVsIHx8ICfQntGC0LzQtdC90LjRgtGMJ319PC9tcngtYnV0dG9uPlxyXG4gICAgICA8bXJ4LWJ1dHRvblxyXG4gICAgICAgIFt0eXBlXT1cIidwcmltYXJ5J1wiXHJcbiAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9rKClcIlxyXG4gICAgICA+e3tva0xhYmVsIHx8ICfQn9C+0LTQv9C40YHQsNGC0YwnfX08L21yeC1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtbWYtc2lnbmVyL3NyYy9saWIvY29tcG9uZW50cy9zaWduLW1vZGFsL3NpZ24tbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LW1mLXNpZ25lci9zcmMvbGliL2NvbXBvbmVudHMvc2lnbi1tb2RhbC9zaWduLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFnQixXQUFXLEVBQUUsVUFBVSxFQUFhLE1BQU0sd0JBQXdCLENBQUM7QUFDMUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7OztBQW1CbkMsTUFBTSxPQUFPLGtCQUNYLFNBQVEsb0JBQTJEO0lBb0NuRSxZQUFvQixtQkFBd0MsRUFDbEQsZUFBZ0MsRUFDaEMsWUFBMEI7UUFDbEMsS0FBSyxFQUFFLENBQUM7UUFIVSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ2xELG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXBDN0IsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQVFqQixhQUFRLEdBQXFCLE9BQU8sQ0FBQztRQUNyQyxhQUFRLEdBQWEsS0FBSyxDQUFDO1FBRTNCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBa0J0QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQU1yQixJQUFJLENBQUMsTUFB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QU8sRUFBRTtZQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDaEM7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUM1QiwyQ0FBMkM7WUFDM0MsOERBQThEO1lBQzlELE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QixNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRTtnQkFDdEIsSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQWdCLENBQUM7Z0JBQ3pDLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLDhCQUE4QixFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUVwRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2lCQUN6QztnQkFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztZQUM5QixDQUFDLENBQUE7UUFDSCxDQUFDLEVBQUUsR0FBRyxFQUFFO1lBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztnSEF6TFUsa0JBQWtCO29HQUFsQixrQkFBa0IsNkVDdEIvQiwybU1Bc0ZBOzRGRGhFYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgRGlhbG9nQ29sb3IsIERpYWxvZ1R5cGUsIFV0aWxpdGllcyB9IGZyb20gJ215cnRleC1tZi11aS1jb21wb3NpdGUnO1xyXG5pbXBvcnQgeyBTaW1wbGVNb2RhbENvbXBvbmVudCB9IGZyb20gJ25neC1zaW1wbGUtbW9kYWwnO1xyXG5pbXBvcnQgeyBCYXNlNjQgfSBmcm9tICdqcy1iYXNlNjQnO1xyXG5pbXBvcnQgeyBTaWduUHJvdmlkZXJUeXBlLCBTaWduVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFNpZ25lZFJlc3VsdE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NpZ25lZC1yZXN1bHQubW9kZWwnO1xyXG5pbXBvcnQgeyBDZXJ0aWZpY2F0ZUNoZWNrLCBTaWduUmVxdWVzdE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NpZ24tcmVxdWVzdC5tb2RlbCc7XHJcbmltcG9ydCB7IERvd25sb2FkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rvd25sb2FkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaWduUHJvdmlkZXJGYWN0b3J5IH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL3NpZ25wcm92aWRlci5mYWN0b3J5JztcclxuaW1wb3J0IHsgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9jb3JlJztcclxuaW1wb3J0IHsgU2lnbmVyVHlwZUVudW0gfSBmcm9tICcuLi8uLi9lbnVtcy9zaWduZXItdHlwZS5lbnVtJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmVkUmVzcG9uc2VNb2RlbCB7XHJcbiAgcmVzdWx0OiBib29sZWFuO1xyXG4gIG1vZGVsPzogU2lnbmVkUmVzdWx0TW9kZWw7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXNpZ24tbW9kYWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWduLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zaWduLW1vZGFsLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2lnbk1vZGFsQ29tcG9uZW50XHJcbiAgZXh0ZW5kcyBTaW1wbGVNb2RhbENvbXBvbmVudDxTaWduUmVxdWVzdE1vZGVsLCBTaWduZWRSZXNwb25zZU1vZGVsPiBpbXBsZW1lbnRzIE9uSW5pdCwgU2lnblJlcXVlc3RNb2RlbCB7XHJcblxyXG4gIHB1YmxpYyB0aXRsZSA9ICcnO1xyXG4gIHB1YmxpYyBva0xhYmVsID0gJyc7XHJcbiAgcHVibGljIGNhbmNlbExhYmVsID0gJyc7XHJcblxyXG4gIHB1YmxpYyB4bWxVcmw/OiBzdHJpbmc7XHJcbiAgcHVibGljIHBkZlVybD86IHN0cmluZztcclxuXHJcbiAgcHVibGljIGFkZGl0aW9uYWxQZGZVcmw/OiBzdHJpbmc7XHJcbiAgcHVibGljIGFkZGl0aW9uYWxQZGZVcmxUaXRsZT86IHN0cmluZztcclxuXHJcbiAgcHVibGljIHByb3ZpZGVyOiBTaWduUHJvdmlkZXJUeXBlID0gJ2VtcHR5JztcclxuICBwdWJsaWMgc2lnblR5cGU6IFNpZ25UeXBlID0gJ3htbCc7XHJcblxyXG4gIHB1YmxpYyB4bWxUb1NpZ24gPSAnJztcclxuICBwdWJsaWMgcGRmVG9TaWduID0gJyc7XHJcbiAgcHVibGljIHdpdGhMb2c/OiBib29sZWFuO1xyXG4gIHB1YmxpYyBza2lwU2VydmVyQ2hlY2s/OiBib29sZWFuO1xyXG5cclxuICBwdWJsaWMgc2lnbmVyVHlwZT86IFNpZ25lclR5cGVFbnVtO1xyXG4gIHB1YmxpYyBjZXJ0aWZpY2F0ZUNoZWNrPzogQ2VydGlmaWNhdGVDaGVjaztcclxuXHJcbiAgLyoqIEBkZXByZWNhdGVkICovXHJcbiAgcHVibGljIGNoZWNrRmlvPzogc3RyaW5nO1xyXG4gIC8qKiBAZGVwcmVjYXRlZCAqL1xyXG4gIHB1YmxpYyBjaGVja09ncm4/OiBzdHJpbmc7XHJcbiAgLyoqIEBkZXByZWNhdGVkICovXHJcbiAgcHVibGljIGNoZWNrT3JnYW5pemF0aW9uRnVsbE5hbWU/OiBzdHJpbmc7XHJcbiAgLyoqIEBkZXByZWNhdGVkICovXHJcbiAgcHVibGljIGNoZWNrT3JnYW5pemF0aW9uU2hvcnROYW1lPzogc3RyaW5nO1xyXG4gIC8qKiBAZGVwcmVjYXRlZCAqL1xyXG4gIHB1YmxpYyBjaGVja0lubj86IHN0cmluZztcclxuXHJcbiAgZG93bmxvYWRpbmdQZGYgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzaWduUHJvdmlkZXJGYWN0b3J5OiBTaWduUHJvdmlkZXJGYWN0b3J5LFxyXG4gICAgcHJpdmF0ZSBkb3dubG9hZFNlcnZpY2U6IERvd25sb2FkU2VydmljZSxcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLnJlc3VsdCA9IHsgcmVzdWx0OiBmYWxzZSB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRpc2FibGVkKCkge1xyXG4gICAgLy8gdG9kbyDQutCw0Log0LzQvtC20L3QviDQtNC40LfQtdCx0LvQuNGC0Ywg0LrQvdC+0L/Rg1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBkZlZpZXdVcmwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnBkZlVybCA/XHJcbiAgICAgIGAvc2lnbmVyL3BkZmpzL3dlYi92aWV3ZXIuaHRtbD9maWxlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMucGRmVXJsKX1gIDogJyc7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZG93bmxvYWRYbWwoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvaygpIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuc2lnblR5cGUpIHtcclxuICAgICAgdGhpcy5zaWduVHlwZSA9ICd4bWwnO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzaWduRGF0YSA9IHRoaXMueG1sVG9TaWduO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5zaWduVHlwZSkge1xyXG4gICAgICBjYXNlICd4bWwnOlxyXG4gICAgICAgIHNpZ25EYXRhID0gQmFzZTY0LmVuY29kZSh0aGlzLnhtbFRvU2lnbik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3BkZic6XHJcbiAgICAgICAgc2lnbkRhdGEgPSB0aGlzLnBkZlRvU2lnbjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAneG1sdHMnOlxyXG4gICAgICAgIHNpZ25EYXRhID0gdGhpcy54bWxUb1NpZ247XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zaWduUHJvdmlkZXJGYWN0b3J5LmNyZWF0ZSh0aGlzLnByb3ZpZGVyKVxyXG4gICAgICAuc2lnbihzaWduRGF0YSwge1xyXG4gICAgICAgIHNraXBTZXJ2ZXJDaGVjazogdGhpcy5za2lwU2VydmVyQ2hlY2ssXHJcbiAgICAgICAgd2l0aExvZzogdGhpcy53aXRoTG9nLFxyXG5cclxuICAgICAgICBjZXJ0aWZpY2F0ZUNoZWNrOiB0aGlzLmNlcnRpZmljYXRlQ2hlY2ssXHJcblxyXG4gICAgICAgIGNoZWNrRmlvOiB0aGlzLmNoZWNrRmlvLFxyXG4gICAgICAgIGNoZWNrT2dybjogdGhpcy5jaGVja09ncm4sXHJcbiAgICAgICAgY2hlY2tPcmdhbml6YXRpb25GdWxsTmFtZTogdGhpcy5jaGVja09yZ2FuaXphdGlvbkZ1bGxOYW1lLFxyXG4gICAgICAgIGNoZWNrT3JnYW5pemF0aW9uU2hvcnROYW1lOiB0aGlzLmNoZWNrT3JnYW5pemF0aW9uU2hvcnROYW1lLFxyXG4gICAgICAgIGNoZWNrSW5uOiB0aGlzLmNoZWNrSW5uXHJcbiAgICAgIH0pXHJcbiAgICAgIC50aGVuKChvazogU2lnbmVkUmVzdWx0TW9kZWwpID0+IHtcclxuICAgICAgICB0aGlzLnByb2Nlc3NSZXN1bHQob2spO1xyXG4gICAgICB9KS5jYXRjaCgoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc0Vycm9yKGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuY2VsKCkge1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzUmVzdWx0KHNpZ25SZXN1bHQ6IFNpZ25lZFJlc3VsdE1vZGVsKTogdm9pZCB7XHJcbiAgICBpZiAoc2lnblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHNpZ25SZXN1bHQucGRmRGF0YSA9IHRoaXMucGRmVG9TaWduO1xyXG4gICAgICBzaWduUmVzdWx0LnhtbERhdGEgPSB0aGlzLnhtbFRvU2lnbjtcclxuICAgICAgdGhpcy5yZXN1bHQgPSB7IG1vZGVsOiBzaWduUmVzdWx0LCByZXN1bHQ6IHRydWUgfTtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyh7XHJcbiAgICAgICAgdGl0bGU6ICfQntGI0LjQsdC60LAg0L/RgNC+0LLQtdGA0LrQuCDQv9C+0LTQv9C40YHQuCcsXHJcbiAgICAgICAgbWVzc2FnZTogJ9Cf0L7QtNC/0LjRgdGMINC90LUg0LLQsNC70LjQtNC90LAnLFxyXG4gICAgICAgIGNvbG9yOiBEaWFsb2dDb2xvci5yZWQsXHJcbiAgICAgICAgdHlwZTogRGlhbG9nVHlwZS5hbGVydCxcclxuICAgICAgICBva0NhbGxiYWNrOiAob2spID0+IHtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzRXJyb3IoZXJyb3I6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMud2l0aExvZykge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyh7XHJcbiAgICAgICAgdGl0bGU6ICfQntGI0LjQsdC60LAg0L/RgNC+0LLQtdGA0LrQuCDQv9C+0LTQv9C40YHQuCcsXHJcbiAgICAgICAgbWVzc2FnZTogdHlwZW9mIChlcnJvcikgPT0gJ3N0cmluZycgPyBlcnJvciA6IEpTT04uc3RyaW5naWZ5KGVycm9yKSxcclxuICAgICAgICBjb2xvcjogRGlhbG9nQ29sb3IucmVkLFxyXG4gICAgICAgIHR5cGU6IERpYWxvZ1R5cGUuYWxlcnQsXHJcbiAgICAgICAgb2tDYWxsYmFjazogKG9rKSA9PiB7XHJcbiAgICAgICAgICAvL1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRvd25sb2FkWG1sKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnhtbFVybCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMud2l0aExvZykge1xyXG4gICAgICBjb25zb2xlLmxvZygnRG93bmxvYWRpbmcgeG1sJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kb3dubG9hZFNlcnZpY2UueG1sKHRoaXMueG1sVXJsKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKHRoaXMud2l0aExvZykge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCd4bWxUb1NpZ24gPSAnLCByZXN1bHQpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMueG1sVG9TaWduID0gcmVzdWx0O1xyXG4gICAgICB0aGlzLmRvd25sb2FkUGRmKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZG93bmxvYWRQZGYoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMucGRmVXJsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy53aXRoTG9nKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdEb3dubG9hZGluZyBwZGYnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRvd25sb2FkaW5nUGRmID0gdHJ1ZTtcclxuICAgIHRoaXMuZG93bmxvYWRTZXJ2aWNlLnBkZih0aGlzLnBkZlVybClcclxuICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgIHRoaXMuZG93bmxvYWRpbmdQZGYgPSBmYWxzZTtcclxuICAgICAgICAvLyB0b2RvINC/0L7QtNGD0LzQsNGC0YwsINC60LDQuiDQv9GA0LDQstC40LvRjNC90L4g0YfQuNGC0LDRgtGMINGE0LDQudC7XHJcbiAgICAgICAgLy8gY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtyZXN1bHRdLCB7dHlwZTogJ2FwcGxpY2F0aW9uL3BkZid9KTtcclxuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKHJlc3VsdCk7XHJcbiAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9ICgpID0+IHtcclxuICAgICAgICAgIGxldCBiYXNlNjRkYXRhID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgICBiYXNlNjRkYXRhID0gYmFzZTY0ZGF0YS5yZXBsYWNlKCdkYXRhOmFwcGxpY2F0aW9uL3BkZjtiYXNlNjQsJywgJycpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLndpdGhMb2cpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3BkZlRvU2lnbiA9ICcsIGJhc2U2NGRhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5wZGZUb1NpZ24gPSBiYXNlNjRkYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZG93bmxvYWRpbmdQZGYgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50IGFjY2VudC1oZWFkIHhsXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLXRpdGxlIHVwcGVyY2FzZVwiPlxyXG4gICAgICA8aDQgY2xhc3M9XCJuZy1iaW5kaW5nXCI+e3t0aXRsZSB8fCAn0J3QsNC/0YDQsNCy0LvQtdC90LjQtSDQtNC+0LrRg9C80LXQvdGC0LAg0L3QsCDQv9C+0LTQv9C40YHQsNC90LjQtSd9fTwvaDQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY2xvc2UgY2xvc2UtY2xpY2tcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxyXG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMyAxTDEgMTNNMSAxbDEyIDEyXCIgc3Ryb2tlPVwiIzNBM0EzQVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgdGV4dC1jZW50ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ3aWRnZXRcIj5cclxuICAgICAgPG15LXRhYnM+XHJcbiAgICAgICAgPGFwcC10YWIgdGFiVGl0bGU9XCLQktC40LfRg9Cw0LvQuNC30LDRhtC40Y8g0LTQvtC60YPQvNC10L3RgtCwXCIgKm5nSWY9XCJwZGZVcmxcIj5cclxuICAgICAgICAgIDxwcmUgKm5nSWY9XCJkb3dubG9hZGluZ1BkZlwiPlxyXG4gICAgICAgICAgICDQn9C+0LTQvtC20LTQuNGC0LUsINC40LTQtdGCINGE0L7RgNC80LjRgNC+0LLQsNC90LjQtSDQtNC+0LrRg9C80LXQvdGC0LBcclxuICAgICAgICAgIDwvcHJlPlxyXG4gICAgICAgICAgPGlmcmFtZSAqbmdJZj1cIiFkb3dubG9hZGluZ1BkZlwiIFtzcmNdPVwicGRmVmlld1VybCB8IHNhZmV1cmxcIlxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT1cIndlYnZpZXdlclwiIGZyYW1lYm9yZGVyPVwiMFwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjgwMFwiPjwvaWZyYW1lPlxyXG4gICAgICAgIDwvYXBwLXRhYj5cclxuICAgICAgICA8YXBwLXRhYiB0YWJUaXRsZT1cItCf0L7QtNC/0LjRgdGL0LLQsNC10LzRi9C1INC00LDQvdC90YvQtVwiICpuZ0lmPVwieG1sVXJsXCI+XHJcbiAgICAgICAgICA8cHJlIFtpbm5lclRleHRdPVwieG1sVG9TaWduXCI+PC9wcmU+XHJcbiAgICAgICAgPC9hcHAtdGFiPlxyXG4gICAgICA8L215LXRhYnM+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgPGRpdiAqbmdJZj1cInBkZlVybCB8fCB4bWxVcmwgfHwgYWRkaXRpb25hbFBkZlVybFwiXHJcbiAgICAgICAgIGNsYXNzPVwibW9kYWwtZm9vdGVyLWl0ZW1cIj5cclxuICAgICAgPGEgKm5nSWY9XCJwZGZVcmxcIlxyXG4gICAgICAgICBjbGFzcz1cIm1vZGFsLWZvb3Rlci1pdGVtX19saW5rXCJcclxuICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcclxuICAgICAgICAgW2hyZWZdPVwicGRmVXJsXCI+XHJcbiAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBkPVwiTTE4IDIxLjI1SDZDNS4zMDk2NCAyMS4yNSA0Ljc1IDIwLjY5MDQgNC43NSAyMFY0QzQuNzUgMy4zMDk2NCA1LjMwOTY0IDIuNzUgNiAyLjc1SDEzLjE4OTNMMTkuMjUgOC44MTA2NlYyMEMxOS4yNSAyMC42OTA0IDE4LjY5MDQgMjEuMjUgMTggMjEuMjVaXCJcclxuICAgICAgICAgICAgc3Ryb2tlPVwiIzI4MjgyOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8c3Bhbj7QodC60LDRh9Cw0YLRjCDQtNC+0LrRg9C80LXQvdGCPC9zcGFuPlxyXG4gICAgICA8L2E+XHJcbiAgICAgIDxhICpuZ0lmPVwieG1sVXJsXCJcclxuICAgICAgICAgY2xhc3M9XCJtb2RhbC1mb290ZXItaXRlbV9fbGlua1wiXHJcbiAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXHJcbiAgICAgICAgIFtocmVmXT1cInhtbFVybFwiPlxyXG4gICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk02IDE2TDIgMTJMNiA4XCIgc3Ryb2tlPVwiIzI4MjgyOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTggMTZMMjIgMTJMMTggOFwiIHN0cm9rZT1cIiMyODI4MjhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk03LjU2Njg5IDE5LjE3ODJMMTUuNTY2OSA1LjMyMTgyXCIgc3Ryb2tlPVwiIzI4MjgyOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPHNwYW4+0KHQutCw0YfQsNGC0YwgWE1MLdC00LDQvdC90YvQtTwvc3Bhbj5cclxuICAgICAgPC9hPlxyXG4gICAgICA8YSAqbmdJZj1cImFkZGl0aW9uYWxQZGZVcmxcIlxyXG4gICAgICAgICBjbGFzcz1cIm1vZGFsLWZvb3Rlci1pdGVtX19saW5rXCJcclxuICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcclxuICAgICAgICAgW2hyZWZdPVwiYWRkaXRpb25hbFBkZlVybFwiPlxyXG4gICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyNCAyMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTcuMjE0MDQgMTQuMjc3NkM3LjUwNjkzIDEzLjk4NDcgNy45ODE4MSAxMy45ODQ3IDguMjc0NyAxNC4yNzc2TDEyLjI3NDcgMTguMjc3NkMxMi41Njc2IDE4LjU3MDUgMTIuNTY3NiAxOS4wNDU0IDEyLjI3NDcgMTkuMzM4M0MxMS45ODE4IDE5LjYzMTIgMTEuNTA2OSAxOS42MzEyIDExLjIxNCAxOS4zMzgzTDcuMjE0MDQgMTUuMzM4M0M2LjkyMTE1IDE1LjA0NTQgNi45MjExNSAxNC41NzA1IDcuMjE0MDQgMTQuMjc3NlpcIiBmaWxsPVwiIzMzMzczQ1wiLz5cclxuICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xNi4yNzQ3IDE0LjI3NzZDMTYuNTY3NiAxNC41NzA1IDE2LjU2NzYgMTUuMDQ1NCAxNi4yNzQ3IDE1LjMzODNMMTIuMjc0NyAxOS4zMzgzQzExLjk4MTggMTkuNjMxMiAxMS41MDY5IDE5LjYzMTIgMTEuMjE0IDE5LjMzODNDMTAuOTIxMSAxOS4wNDU0IDEwLjkyMTEgMTguNTcwNSAxMS4yMTQgMTguMjc3NkwxNS4yMTQgMTQuMjc3NkMxNS41MDY5IDEzLjk4NDcgMTUuOTgxOCAxMy45ODQ3IDE2LjI3NDcgMTQuMjc3NlpcIiBmaWxsPVwiIzMzMzczQ1wiLz5cclxuICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xMS43NDQ0IDkuMDU3OTZDMTIuMTU4NiA5LjA1Nzk2IDEyLjQ5NDQgOS4zOTM3NCAxMi40OTQ0IDkuODA3OTZWMTguODA4QzEyLjQ5NDQgMTkuMjIyMiAxMi4xNTg2IDE5LjU1OCAxMS43NDQ0IDE5LjU1OEMxMS4zMzAyIDE5LjU1OCAxMC45OTQ0IDE5LjIyMjIgMTAuOTk0NCAxOC44MDhWOS44MDc5NkMxMC45OTQ0IDkuMzkzNzQgMTEuMzMwMiA5LjA1Nzk2IDExLjc0NDQgOS4wNTc5NlpcIiBmaWxsPVwiIzMzMzczQ1wiLz5cclxuICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0wLjk3ODIwNiA0LjY2MzM5QzIuNjIyOTcgMS40ODM1MSA2LjEyNTU5IC0wLjM3NDA1IDkuNzM0NjIgMC4wNjM0MDdDMTMuMTQ2IDAuNDc2OTEyIDE1Ljk3MDggMi44NDQwOCAxNy4wMDk0IDYuMDU3OTZIMTcuNzQ0NEMyMC4yNzU3IDYuMDU3OTYgMjIuNDU2NSA3LjY3MjY3IDIzLjI1NTkgMTAuMDcwOEMyMy4yNTkzIDEwLjA4MTEgMjMuMjYyNSAxMC4wOTE1IDIzLjI2NTUgMTAuMTAxOUMyMy45NDgzIDEyLjQ5MTcgMjMuMTUxMSAxNS4wMjI3IDIxLjA4MzUgMTYuNTE2QzIwLjc0NzcgMTYuNzU4NSAyMC4yNzg5IDE2LjY4MjkgMjAuMDM2NCAxNi4zNDcxQzE5Ljc5MzggMTYuMDExMyAxOS44Njk1IDE1LjU0MjUgMjAuMjA1MyAxNS4yOTk5QzIxLjczMzMgMTQuMTk2NCAyMi4zMzcgMTIuMzM1IDIxLjgyNzcgMTAuNTI5N0MyMS4yMjMgOC43MzY0NyAxOS42MDc3IDcuNTU3OTYgMTcuNzQ0NCA3LjU1Nzk2SDE2LjQ0NDRDMTYuMTAwMiA3LjU1Nzk2IDE1LjgwMDIgNy4zMjM3MyAxNS43MTY4IDYuOTg5ODZDMTQuOTkxOSA0LjA5MDQgMTIuNTQ0NyAxLjkxNSA5LjU1NDEyIDEuNTUyNTFDNi41NjMxNCAxLjE4OTk3IDMuNjY1NzcgMi43MzI0IDIuMzEwNTMgNS4zNTI1MkMwLjk1MDQ3OCA3Ljk4MTk2IDEuMzE0NSAxMS4yNDc4IDMuMzA3NCAxMy41MTI1QzMuNTgxMDUgMTMuODIzNCAzLjU1MDggMTQuMjk3NCAzLjIzOTg0IDE0LjU3MUMyLjkyODg4IDE0Ljg0NDYgMi40NTQ5OCAxNC44MTQ0IDIuMTgxMzMgMTQuNTAzNEMtMC4yMjU3NjUgMTEuNzY4MSAtMC42NjE3NCA3LjgzMzk1IDAuOTc4MjA2IDQuNjYzMzlaXCIgZmlsbD1cIiMzMzM3M0NcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPHNwYW4+e3thZGRpdGlvbmFsUGRmVXJsVGl0bGV9fTwvc3Bhbj5cclxuICAgICAgPC9hPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyLWl0ZW1cIj5cclxuICAgICAgPG1yeC1idXR0b25cclxuICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCInbXItMydcIlxyXG4gICAgICAgIFt0eXBlXT1cIidzZWNvbmRhcnknXCJcclxuICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcclxuICAgICAgPnt7Y2FuY2VsTGFiZWwgfHwgJ9Ce0YLQvNC10L3QuNGC0YwnfX08L21yeC1idXR0b24+XHJcbiAgICAgIDxtcngtYnV0dG9uXHJcbiAgICAgICAgW3R5cGVdPVwiJ3ByaW1hcnknXCJcclxuICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAoY2xpY2spPVwib2soKVwiXHJcbiAgICAgID57e29rTGFiZWwgfHwgJ9Cf0L7QtNC/0LjRgdCw0YLRjCd9fTwvbXJ4LWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -779,7 +779,6 @@ class SignModalComponent extends SimpleModalComponent {
779
779
  }
780
780
  ngOnInit() {
781
781
  this.downloadXml();
782
- this.downloadPdf();
783
782
  }
784
783
  ok() {
785
784
  if (!this.signType) {
@@ -863,6 +862,7 @@ class SignModalComponent extends SimpleModalComponent {
863
862
  console.log('xmlToSign = ', result);
864
863
  }
865
864
  this.xmlToSign = result;
865
+ this.downloadPdf();
866
866
  });
867
867
  }
868
868
  downloadPdf() {
@@ -1 +1 @@
1
- {"version":3,"file":"myrtex-mf-signer.mjs","sources":["../../../projects/myrtex-mf-signer/src/lib/enums/signer-type.enum.ts","../../../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/helpers/strippingCharacters.ts","../../../projects/myrtex-mf-signer/src/lib/helpers/transformText.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 enum SignerTypeEnum {\r\n Unknown = 0,\r\n\r\n FL = 1,\r\n\r\n UL = 2,\r\n\r\n IP = 3,\r\n}\r\n","export class CryptoBaseService {\r\n\r\n public available = false;\r\n options: any = {};\r\n\r\n init(): Promise<CryptoBaseService> {\r\n return Promise.reject('Not implemented');\r\n };\r\n\r\n auth(): Promise<boolean> {\r\n return Promise.resolve(true);\r\n };\r\n}\r\n","class CertificateAdjuster {\r\n extract(s: string, name: string | string[]): string {\r\n if (typeof (name) === 'string') {\r\n name = [name];\r\n }\r\n\r\n for (var i = 0; i < name.length; i++) {\r\n const n = name[i];\r\n const re = new RegExp(n + '\\\\s*=\\\\s*(?<value>[^=]+)(?:[,\\\\\\\\/]|$)', 'g');\r\n const m = re.exec(s);\r\n if (m !== null && m.groups !== undefined && m.groups !== null) {\r\n let r = m.groups.value;\r\n r = r.replace(/^\\\"?/, '');\r\n r = r.replace(/\\\"$/, '');\r\n r = r.replace(/\\\"\\\"/g, '\"');\r\n return r;\r\n }\r\n }\r\n\r\n return '';\r\n };\r\n\r\n print2Digit(digit: number) {\r\n return (digit < 10) ? '0' + digit : digit;\r\n };\r\n\r\n getCertDate(paramDate: any) {\r\n let certDate = new Date(paramDate);\r\n return this.print2Digit(certDate.getUTCDate()) + '.' + this.print2Digit(certDate.getMonth() + 1) +\r\n '.' + certDate.getFullYear() + ' ' +\r\n this.print2Digit(certDate.getUTCHours()) + ':' + this.print2Digit(certDate.getUTCMinutes()) +\r\n ':' + this.print2Digit(certDate.getUTCSeconds());\r\n };\r\n\r\n getCertFio(certSubjectName: string) {\r\n const lastName = this.extract(certSubjectName, 'SN');\r\n const name = this.extract(certSubjectName, 'G');\r\n\r\n return lastName + ' ' + name;\r\n };\r\n\r\n getCertPost(certSubjectName: string) {\r\n return this.extract(certSubjectName, 'T');\r\n };\r\n\r\n getCertOgrn(certSubjectName: string) {\r\n return this.extract(certSubjectName, ['OGRN', 'ОГРН', 'ОГРНИП','OGRNIP', '1.2.643.100.1']);\r\n };\r\n\r\n getCertOrg(certSubjectName: string) {\r\n return this.extract(certSubjectName, 'O');\r\n };\r\n\r\n getCertInn(certSubjectName: string) {\r\n return this.extract(certSubjectName, ['INN', 'ИНН', '1.2.643.3.131.1.1']);\r\n };\r\n\r\n getCertSnils(certSubjectName: string) {\r\n return this.extract(certSubjectName, ['SNILS', 'СНИЛС', '1.2.643.100.3']);\r\n };\r\n\r\n getCertName(certSubjectName: string) {\r\n return this.extract(certSubjectName, 'CN');\r\n };\r\n\r\n getIssuer(certIssuerName: string) {\r\n return this.extract(certIssuerName, 'CN');\r\n };\r\n\r\n getCertInfoString(certSubjectName: string, certFromDate: any) {\r\n return this.extract(certSubjectName, 'CN') + '; Выдан: ' + this.getCertDate(certFromDate);\r\n };\r\n}\r\n\r\nconst instance = new CertificateAdjuster();\r\nexport { instance as CertificateAdjuster };","export const strippingCharacters = (text?: string): string => {\r\n if (!text) {\r\n return ''\r\n }\r\n return text.replace(/\\s+|\\.|,|!|\"|«|»|<|>|'|:|;|-|\\\\(|\\\\)/g, '').toLowerCase()\r\n}\r\n","export const transformText = (text?: string): string => {\r\n if (!text) {\r\n return '';\r\n }\r\n text = text.toLowerCase().trim();\r\n return text.replace(/ё/g, 'е').replace(/й/g, 'и');\r\n}\r\n","import {\r\n Async,\r\n CADESCOM_STORE_LOCATION,\r\n CAPICOM_STORE_NAMES,\r\n CAPICOM_STORE_OPEN_MODE,\r\n ProgIds\r\n} from 'cadesplugin-types';\r\nimport { CertificateCheck, CertificateModel } from '../../models';\r\n// @ts-ignore\r\nimport getCadesplugin from 'async-cadesplugin';\r\nimport { CryptoBaseService } from '../crypto.base.service';\r\nimport { CertificateAdjuster } from '../certificate.adjuster';\r\nimport { SignerTypeEnum } from '../../enums/signer-type.enum';\r\nimport { strippingCharacters } from '../../helpers/strippingCharacters';\r\nimport { transformText } from '../../helpers/transformText';\r\n\r\ndeclare global {\r\n interface Window {\r\n cadesplugin: Async.IWebClassFactory;\r\n CRYPTO_SKIP_CHECK?: boolean;\r\n }\r\n}\r\n\r\ninterface CertificateFilter {\r\n certificateCheck?: CertificateCheck;\r\n}\r\n\r\ninterface Certificate {\r\n id: number;\r\n certificate: any;\r\n subjectName: string;\r\n name: string;\r\n cn: string;\r\n fio: string;\r\n post: string;\r\n ogrn: string;\r\n organization: string;\r\n inn: string;\r\n validFromDate: string;\r\n validToDate: string;\r\n thumbprint: string;\r\n issuerName: string;\r\n serialNumber: string;\r\n isExpired: boolean;\r\n snils: string;\r\n}\r\n\r\nexport class CryptoProBaseService extends CryptoBaseService {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async init(): Promise<CryptoBaseService> {\r\n await getCadesplugin();\r\n return Promise.resolve(this);\r\n };\r\n\r\n public async getCertificates(filter?: CertificateFilter): Promise<CertificateModel[]> {\r\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\r\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\r\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\r\n\r\n let storeCerts = await store.Certificates;\r\n let count = await storeCerts.Count;\r\n let certificates: Array<CertificateModel> = [];\r\n\r\n for (let i = 1; i <= count; i++) {\r\n let cert = await storeCerts.Item(i);\r\n let validFromDate = new Date(await cert.ValidFromDate);\r\n let validToDate = new Date(await cert.ValidToDate);\r\n const subjectName = await cert.SubjectName;\r\n\r\n const certificate: Certificate = {\r\n id: i,\r\n certificate: cert,\r\n subjectName: subjectName,\r\n name: CertificateAdjuster.getCertInfoString(subjectName, validFromDate),\r\n cn: CertificateAdjuster.getCertName(subjectName),\r\n fio: CertificateAdjuster.getCertFio(subjectName),\r\n post: CertificateAdjuster.getCertPost(subjectName),\r\n ogrn: CertificateAdjuster.getCertOgrn(subjectName),\r\n snils: CertificateAdjuster.getCertSnils(subjectName),\r\n organization: CertificateAdjuster.getCertOrg(subjectName),\r\n inn: CertificateAdjuster.getCertInn(subjectName),\r\n validFromDate: validFromDate.toLocaleDateString('ru-RU'),\r\n validToDate: validToDate.toLocaleDateString('ru-RU'),\r\n thumbprint: await cert.Thumbprint,\r\n issuerName: await cert.IssuerName,\r\n serialNumber: await cert.SerialNumber,\r\n isExpired: validToDate < new Date()\r\n };\r\n\r\n if (certificate.isExpired) {\r\n continue;\r\n }\r\n\r\n let filterOk = true;\r\n if (window.CRYPTO_SKIP_CHECK !== true) {\r\n if (filter?.certificateCheck?.signerType === SignerTypeEnum.FL) {\r\n filterOk = !certificate.ogrn;\r\n } else if ([SignerTypeEnum.UL, SignerTypeEnum.IP]\r\n .indexOf(filter?.certificateCheck?.signerType || SignerTypeEnum.Unknown) > -1) {\r\n if (filterOk) {\r\n const organization = certificate.organization || certificate.cn;\r\n const orgIsValid = filter?.certificateCheck?.ogrn === certificate.ogrn;\r\n if (!orgIsValid) {\r\n if (filter?.certificateCheck?.isChief) {\r\n filterOk = false;\r\n } else {\r\n const orgNameIsValid = (filter?.certificateCheck?.fullName &&\r\n strippingCharacters(filter?.certificateCheck?.fullName)\r\n .indexOf(strippingCharacters(organization)) > -1)\r\n || (filter?.certificateCheck?.shortName &&\r\n strippingCharacters(filter?.certificateCheck?.shortName)\r\n .indexOf(strippingCharacters(organization)) > -1);\r\n if (!orgNameIsValid) {\r\n filterOk = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (filterOk && filter?.certificateCheck?.signerType) {\r\n const fio = transformText(certificate.fio);\r\n const snils = certificate.snils.replace(/[\\s-]+/g, '');\r\n const snilsCert = filter?.certificateCheck?.snils?.replace(/[\\s-]+/g, '');\r\n\r\n if ((filter?.certificateCheck?.fio ? transformText(filter.certificateCheck.fio) : null) !== transformText(fio) ||\r\n snilsCert !== snils) {\r\n filterOk = false;\r\n }\r\n }\r\n }\r\n\r\n if (filterOk) {\r\n certificates.push(certificate);\r\n }\r\n }\r\n\r\n await store.Close();\r\n return certificates;\r\n }\r\n}\r\n","import {\r\n Async,\r\n CADESCOM_CADES_TYPE,\r\n CADESCOM_CONTENT_ENCODING_TYPE,\r\n CADESCOM_STORE_LOCATION, CAPICOM_STORE_NAMES, CAPICOM_STORE_OPEN_MODE,\r\n ProgIds\r\n} from 'cadesplugin-types';\r\nimport { CryptoProBaseService } from './crypto.pro.base.service';\r\n\r\nexport class CryptoProAsyncService extends CryptoProBaseService {\r\n\r\n public static readonly key = 'cryptoproasync';\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async signXml(certificate: any, data: string): Promise<string> {\r\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\r\n await signer.propset_Certificate(certificate);\r\n\r\n let timestamp_service_url = 'http://qs.cryptopro.ru/tsp/tsp.srf';\r\n await signer.propset_TSAAddress(timestamp_service_url);\r\n\r\n let signed: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\r\n\r\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\r\n await signed.propset_Content(encodedXml);\r\n\r\n let cades_xml_signature_type_enveloped = 80;\r\n await signed.propset_SignatureType(cades_xml_signature_type_enveloped);\r\n\r\n const signedData = await signed.Sign(signer);\r\n\r\n return signedData;\r\n }\r\n\r\n public async signBase64(certificate: any, data: string, detached: boolean = false): Promise<string> {\r\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\r\n await signer.propset_Certificate(certificate);\r\n\r\n let signed: Async.ICPSignedData5 = await window.cadesplugin.CreateObjectAsync(ProgIds.CadesSignedData);\r\n\r\n await signed.propset_ContentEncoding(CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY);\r\n await signed.propset_Content(data);\r\n\r\n const signedData = await signed.SignCades(signer, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, detached);\r\n\r\n return signedData;\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { SimpleModalComponent } from 'ngx-simple-modal';\r\nimport { CertificateModel } from '../../models';\r\n\r\nexport interface CertificateSelectModel {\r\n certificates: CertificateModel[];\r\n}\r\n\r\nexport interface CertificateSelectResultModel {\r\n selected?: CertificateModel;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-certificate-select',\r\n templateUrl: './certificate-select.component.html',\r\n styleUrls: ['./certificate-select.component.css']\r\n})\r\nexport class CertificateSelectComponent extends SimpleModalComponent<CertificateSelectModel, CertificateSelectResultModel>\r\n implements CertificateSelectModel {\r\n\r\n certificates: CertificateModel[] = [];\r\n\r\n constructor() {\r\n super();\r\n this.result = {};\r\n }\r\n\r\n ok(cert: CertificateModel) {\r\n this.result = {selected: cert};\r\n this.close();\r\n }\r\n}\r\n","<div class=\"modal-content open accent-head certificate\">\r\n <div class=\"modal-header\">\r\n <div class=\"modal-title\" [innerHTML]=\"'Выберите сертификат'\">\r\n </div>\r\n <span class='close close-click' (click)=\"close()\">\r\n <svg width='14' height='14' fill='none' xmlns='http://www.w3.org/2000/svg'>\r\n <path d='M13 1L1 13M1 1l12 12' stroke='#3A3A3A' stroke-width='1.5' stroke-linecap='round'\r\n stroke-linejoin='round' />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"modal-body text-center\">\r\n\r\n <div class=\"modal-body-other\">\r\n <div *ngFor=\"let cert of certificates\">\r\n <div class=\"modal-body-info\">\r\n <div class=\"modal-body-info__item\">\r\n <span class=\"text\">\r\n Владелец:\r\n </span>\r\n <span class=\"text\">\r\n {{cert.cn}}<br/>\r\n {{cert.fio}}<span *ngIf=\"cert.post\">, {{cert.post}}</span>\r\n </span>\r\n </div>\r\n <div class=\"modal-body-info__item\">\r\n <span class=\"text\">\r\n Срок действия:\r\n </span>\r\n <span class=\"text\">\r\n {{cert.validFromDate}} - {{cert.validToDate}}\r\n </span>\r\n </div>\r\n <div class=\"modal-body-info__item\">\r\n <span class=\"text hash\">\r\n {{cert.thumbprint}} {{cert.isExpired ? \"(истек)\" : \"\"}}\r\n </span>\r\n </div>\r\n <button\r\n (click)=\"ok(cert)\"\r\n [disabled]=\"cert.isExpired\"\r\n class=\"btn btn-md\">Создать подпись</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n </div>\r\n</div>","import {\r\n Async,\r\n CADESCOM_STORE_LOCATION, CADESCOM_XML_SIGNATURE_TYPE,\r\n CAPICOM_STORE_NAMES,\r\n CAPICOM_STORE_OPEN_MODE,\r\n ProgIds\r\n} from 'cadesplugin-types';\r\nimport { CryptoProBaseService } from './crypto.pro.base.service';\r\n\r\ndeclare global {\r\n interface Window {\r\n cadesplugin: Async.IWebClassFactory;\r\n CRYPTO_SKIP_CHECK?: boolean;\r\n }\r\n}\r\n\r\nexport class CryptoProTsService extends CryptoProBaseService {\r\n\r\n public static readonly key = 'cryptoprots';\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n private get TIMESTAMP_SERVICE_URL(): string {\r\n return 'http://qs.cryptopro.ru/tsp/tsp.srf';\r\n }\r\n\r\n public async sign(certificate: any, data: string): Promise<string> {\r\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\r\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\r\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\r\n\r\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\r\n await signer.propset_Certificate(certificate);\r\n\r\n let signedXML: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\r\n\r\n let publicKey: Async.IPublicKey = await certificate.PublicKey();\r\n let algorithm: Async.IOID = await publicKey.Algorithm;\r\n let algorithmOid = await algorithm.Value;\r\n\r\n let { signMethod, digestMethod } = this.getSigningMethods(algorithmOid);\r\n\r\n //await signer.propset_Options(api.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN);\r\n\r\n await signer.propset_TSAAddress(this.TIMESTAMP_SERVICE_URL);\r\n\r\n if (data) {\r\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\r\n await signedXML.propset_Content(encodedXml);\r\n }\r\n\r\n await signedXML.propset_SignatureType(CADESCOM_XML_SIGNATURE_TYPE.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED);\r\n await signedXML.propset_SignatureMethod(signMethod);\r\n await signedXML.propset_DigestMethod(digestMethod);\r\n\r\n let signature = await signedXML.Sign(signer);\r\n\r\n await store.Close();\r\n\r\n return signature;\r\n }\r\n\r\n private getSigningMethods(algorithmOid: string): { signMethod: string, digestMethod: string } {\r\n let signMethod = '', digestMethod = '';\r\n\r\n if (algorithmOid == '1.2.643.7.1.1.1.1') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 256 бит\r\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\r\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\r\n } else if (algorithmOid == '1.2.643.7.1.1.1.2') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 512 бит\r\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512';\r\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512';\r\n } else if (algorithmOid == '1.2.643.2.2.19') { // алгоритм ГОСТ Р 34.10-2001\r\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\r\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\r\n }\r\n\r\n return { signMethod, digestMethod };\r\n }\r\n}\r\n","import { CryptoProAsyncService } from './cryptopro/crypto.pro.async.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { CryptoBaseService } from './crypto.base.service';\r\nimport { CryptoProTsService } from './cryptopro/crypto.pro.ts.service';\r\n\r\nexport interface CryptoHandler {\r\n key: string;\r\n name: string;\r\n service: CryptoBaseService;\r\n sign: boolean;\r\n default: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoService {\r\n\r\n handlers: Map<string, CryptoHandler> = new Map<string, CryptoHandler>();\r\n selectPromise: any = null;\r\n private _initialized = false;\r\n private _withLog = false;\r\n\r\n public async startUp(withLog? : boolean): Promise<void> {\r\n this._withLog = !!withLog;\r\n\r\n if (!this._initialized) {\r\n this.registerHandler({\r\n key: CryptoProAsyncService.key,\r\n name: 'КриптоПро',\r\n service: new CryptoProAsyncService(),\r\n sign: true,\r\n default: true\r\n });\r\n this.registerHandler({\r\n key: CryptoProTsService.key,\r\n name: 'КриптоПро',\r\n service: new CryptoProTsService(),\r\n sign: true,\r\n default: false\r\n });\r\n await this.init();\r\n this._initialized = true;\r\n }\r\n this.log('Handlers init completed');\r\n return Promise.resolve();\r\n }\r\n\r\n public registerHandler(options: CryptoHandler) {\r\n this.log('Register handler', options);\r\n\r\n options.disabled = false;\r\n this.handlers.set(options.key, options);\r\n };\r\n\r\n public disableHandler(key: string): void {\r\n const handler = this.handlers.get(key);\r\n if (handler) {\r\n handler.disabled = true;\r\n }\r\n };\r\n\r\n public getHandler(key: string): Promise<CryptoHandler> {\r\n const handler = this.getActiveHandlers()\r\n .find(x => x.key == key);\r\n\r\n if (handler) {\r\n return Promise.resolve(handler);\r\n }\r\n return Promise.reject(`Not found ${key} handler`);\r\n };\r\n\r\n public getDefaultHandler() : Promise<CryptoHandler> {\r\n const handler = this.getActiveHandlers()\r\n .find(x => x.default);\r\n\r\n if (handler) {\r\n return Promise.resolve(handler);\r\n }\r\n return Promise.reject(`Not found default handler`);\r\n };\r\n\r\n public getService<T extends CryptoBaseService>(key: string): Promise<T> {\r\n const handler = this.handlers.get(key);\r\n if (handler) {\r\n return Promise.resolve(handler.service as T);\r\n }\r\n return Promise.reject(`Not found ${key}`);\r\n };\r\n\r\n public getActiveHandlers(): Array<CryptoHandler> {\r\n const active = new Array<CryptoHandler>();\r\n this.handlers.forEach(s => {\r\n if (!s.disabled) {\r\n active.push(s);\r\n }\r\n });\r\n return active;\r\n };\r\n\r\n private log(...args: any[]) {\r\n if (this._withLog) {\r\n console.log(args);\r\n }\r\n };\r\n\r\n private async init(): Promise<any> {\r\n this.log('Initialize handlers');\r\n\r\n const promises: Array<Promise<any>> = [];\r\n this.handlers.forEach(handler => {\r\n handler.service.available = false;\r\n\r\n this.log('Initialize ' + handler.name);\r\n\r\n const promise = handler.service.init().then((result) => {\r\n result.available = true;\r\n this.log('Handler init success', result);\r\n }).catch(reason => {\r\n this.log('Handler init fail', reason);\r\n });\r\n\r\n promises.push(promise);\r\n });\r\n\r\n return await Promise.all(promises);\r\n };\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\r\nimport { SignValidateResponse } from '../models';\r\nimport { VerifyCertModel } from '../models/internal/verify.cert.model';\r\nimport { VerifyCertResponseModel } from '../models/internal/verify.cert.response.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoApiService extends EndpointBaseService {\r\n\r\n private urlCrypto = '/cryptopro/api/v1';\r\n private urlSigner = '/signer/api/v1';\r\n\r\n constructor(protected http: HttpClient, protected injector: Injector) {\r\n super(http, injector);\r\n }\r\n\r\n public verify(data: VerifyCertModel): Observable<VerifyCertResponseModel> {\r\n return this.http.post<VerifyCertResponseModel>(`${this.urlCrypto}/verify`, data);\r\n }\r\n\r\n public validate(data: string): Observable<SignValidateResponse> {\r\n return this.http.post<SignValidateResponse>(`${this.urlSigner}/jinn/validate`, {data});\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Base64 } from 'js-base64';\r\nimport { SimpleModalService } from 'ngx-simple-modal';\r\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\r\nimport { CryptoService } from '../services/crypto.service';\r\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\r\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\r\nimport { CryptoApiService } from '../services/crypto.api.service';\r\nimport { SignedResultModel } from '../models';\r\nimport { strippingCharacters } from '../helpers/strippingCharacters';\r\nimport { Async } from 'cadesplugin-types';\r\n\r\ndeclare global {\r\n interface Window {\r\n cadesplugin: Async.IWebClassFactory;\r\n CRYPTO_SKIP_CHECK?: boolean;\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoProvider implements ISignProvider {\r\n\r\n constructor(private simpleModalService: SimpleModalService,\r\n private cryptoService: CryptoService,\r\n private cryptoApiService: CryptoApiService) {\r\n }\r\n\r\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\r\n const withLog = options?.withLog;\r\n await this.cryptoService.startUp(withLog);\r\n\r\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\r\n const list = await service.getCertificates({\r\n certificateCheck: options?.certificateCheck\r\n });\r\n\r\n if (list.length === 0) {\r\n return Promise.reject('Отсутствует подходящий сертификат');\r\n }\r\n\r\n const modalResult = await this.simpleModalService\r\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\r\n\r\n if (!modalResult.selected) {\r\n if (withLog) {\r\n console.log('Сертификат не выбран, отмена');\r\n }\r\n return Promise.reject();\r\n }\r\n\r\n let certificateFail = 0;\r\n if (window.CRYPTO_SKIP_CHECK !== true && !options?.certificateCheck) {\r\n /** @deprecated */\r\n if (options?.checkFio &&\r\n modalResult.selected.fio.toLowerCase() !== options?.checkFio.toLowerCase()) {\r\n certificateFail = 1;\r\n }\r\n\r\n if (options?.checkOrganizationFullName || options?.checkOrganizationShortName) {\r\n let organization = modalResult.selected.organization;\r\n\r\n if (!organization) {\r\n organization = modalResult.selected.cn;\r\n }\r\n\r\n if (organization) {\r\n const orgIsValid = (options?.checkOrganizationFullName &&\r\n strippingCharacters(organization) == strippingCharacters(options?.checkOrganizationFullName))\r\n || (options?.checkOrganizationShortName &&\r\n strippingCharacters(organization) == strippingCharacters(options?.checkOrganizationShortName));\r\n if (!orgIsValid) {\r\n certificateFail = 2;\r\n }\r\n } else {\r\n certificateFail = 2;\r\n }\r\n }\r\n }\r\n\r\n if (certificateFail > 0) {\r\n return Promise.reject(\r\n certificateFail == 1 ?\r\n 'Данные лица, подписывающего заявку не совпадают с данными усиленной квалифицированной подписи.' :\r\n certificateFail === 3 ? 'Отсутствует активный КриптоПровайдер (не установлен либо недоступен плагин). ' +\r\n 'Чтобы подписать, установите плагин КриптоПро и проверьте наличие сертификата' :\r\n 'Данные организации не совпадают с данными усиленной квалифицированной подписи. ' +\r\n 'Убедитесь, что вы используете сертификат, выданные от организации.',\r\n );\r\n }\r\n\r\n if (withLog) {\r\n console.log('Подписываемые данные', data);\r\n }\r\n\r\n const signedData = await service.signBase64(modalResult.selected.certificate, data, true);\r\n\r\n if (withLog) {\r\n console.log('Подписанные данные', signedData);\r\n }\r\n\r\n if (!options?.skipServerCheck) {\r\n const verifyResult = await this.cryptoApiService.verify({\r\n data: data,\r\n signature: Base64.encode(signedData),\r\n detached: true\r\n }).toPromise();\r\n\r\n return {\r\n data,\r\n success: verifyResult.success,\r\n signed: signedData,\r\n certificate: modalResult.selected,\r\n };\r\n } else {\r\n return {\r\n data,\r\n success: true,\r\n signed: signedData,\r\n certificate: modalResult.selected,\r\n };\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SimpleModalService } from 'ngx-simple-modal';\r\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\r\nimport { CryptoService } from '../services/crypto.service';\r\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\r\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\r\nimport { CryptoApiService } from '../services/crypto.api.service';\r\nimport { SignedResultModel } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoJinnProvider implements ISignProvider {\r\n\r\n constructor(private simpleModalService: SimpleModalService,\r\n private cryptoService: CryptoService,\r\n private cryptoApiService: CryptoApiService) {\r\n }\r\n\r\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\r\n const withLog = options?.withLog;\r\n\r\n await this.cryptoService.startUp(withLog);\r\n\r\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\r\n\r\n const list = await service.getCertificates({\r\n certificateCheck: options?.certificateCheck\r\n });\r\n\r\n if (list.length === 0) {\r\n return Promise.reject('Отсутствует подходящий сертификат');\r\n }\r\n\r\n const modalResult = await this.simpleModalService\r\n .addModal(CertificateSelectComponent, { certificates: list }).toPromise();\r\n\r\n if (!modalResult.selected) {\r\n if (withLog) {\r\n console.log('Сертификат не выбран, отмена');\r\n }\r\n return Promise.reject();\r\n }\r\n\r\n if (withLog) {\r\n console.log('Подписываемые данные', data);\r\n }\r\n\r\n const signedData = await service.signXml(modalResult.selected.certificate, data);\r\n\r\n if (withLog) {\r\n console.log('Подписанные данные', signedData);\r\n }\r\n\r\n if (!options?.skipServerCheck) {\r\n const verifyResult = await this.cryptoApiService.validate(signedData).toPromise();\r\n\r\n return {\r\n data: signedData,\r\n success: verifyResult.success,\r\n certificate: modalResult.selected,\r\n validateResult: verifyResult.validateResult\r\n };\r\n } else {\r\n return {\r\n data: signedData,\r\n success: true,\r\n certificate: modalResult.selected\r\n };\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\r\nimport { SimpleModalService } from 'ngx-simple-modal';\r\nimport { CryptoService } from '../services/crypto.service';\r\nimport { CryptoApiService } from '../services/crypto.api.service';\r\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\r\nimport { CryptoProTsService } from '../services/cryptopro/crypto.pro.ts.service';\r\nimport { SignedResultModel } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoTsProvider implements ISignProvider {\r\n\r\n constructor(private simpleModalService: SimpleModalService,\r\n private cryptoService: CryptoService,\r\n private cryptoApiService: CryptoApiService) {\r\n }\r\n\r\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\r\n const withLog = options?.withLog;\r\n await this.cryptoService.startUp(withLog);\r\n const service = await this.cryptoService.getService<CryptoProTsService>(CryptoProTsService.key);\r\n const list = await service.getCertificates();\r\n const modalResult = await this.simpleModalService\r\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\r\n\r\n if (!modalResult.selected) {\r\n if (withLog) {\r\n console.log('No certificate selected, rejecting');\r\n }\r\n return Promise.reject();\r\n }\r\n\r\n const signedData = await service.sign(modalResult.selected.certificate, data);\r\n\r\n if (!options?.skipServerCheck) {\r\n const validateResult = await this.cryptoApiService.validate(signedData).toPromise();\r\n\r\n return {\r\n data,\r\n signed: signedData,\r\n success: validateResult.success,\r\n validateResult: validateResult.validateResult,\r\n certificate: modalResult.selected,\r\n };\r\n } else {\r\n return {\r\n data,\r\n signed: signedData,\r\n success: true,\r\n validateResult: '',\r\n certificate: modalResult.selected,\r\n };\r\n }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { ISignProvider, SignOptions } from \"./interfaces/isign.provider\";\r\nimport { SignedResultModel } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EmptyProvider implements ISignProvider {\r\n\r\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\r\n return Promise.resolve({\r\n data: data,\r\n success: true\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CryptoProvider } from './crypto.provider';\r\nimport { CryptoJinnProvider } from './cryptojinn.provider';\r\nimport { EmptyProvider } from './empty.provider';\r\nimport { CryptoTsProvider } from './cryptots.provider';\r\nimport { SignProviderType } from '../models';\r\nimport { ISignProvider } from './interfaces/isign.provider';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SignProviderFactory {\r\n constructor(\r\n protected cryptoProvider: CryptoProvider,\r\n protected cryptoJinnProvider: CryptoJinnProvider,\r\n protected cryptoTsProvider: CryptoTsProvider,\r\n protected emptyProvider: EmptyProvider) {\r\n }\r\n\r\n create(providerType: SignProviderType): ISignProvider {\r\n switch (providerType) {\r\n case 'crypto':\r\n return this.cryptoProvider;\r\n case 'cryptojinn':\r\n return this.cryptoJinnProvider;\r\n case 'cryptots':\r\n return this.cryptoTsProvider;\r\n case 'empty':\r\n return this.emptyProvider;\r\n }\r\n }\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DownloadService extends EndpointBaseService {\r\n\r\n private url = '/signer/api/v1/download';\r\n\r\n constructor(protected http: HttpClient, protected injector: Injector) {\r\n super(http, injector);\r\n }\r\n\r\n public xml(url: string): Observable<any> {\r\n return this.http.get(url,\r\n {\r\n headers: new HttpHeaders()\r\n .set('Content-Type', 'text/xml'),\r\n responseType: 'text'\r\n });\r\n }\r\n\r\n public pdf(url: string): Observable<any> {\r\n return this.http.get(url,\r\n {\r\n headers: new HttpHeaders()\r\n .set('Content-Type', 'application/pdf'),\r\n responseType: 'blob'\r\n });\r\n }\r\n\r\n /*public xml(url: string): Observable<any> {\r\n return this.http.get(`${this.url}/xml?url=${encodeURIComponent(url)}`,\r\n {\r\n headers: new HttpHeaders()\r\n .set('Content-Type', 'text/xml'),\r\n responseType: 'text'\r\n });\r\n }\r\n\r\n public pdf(url: string): Observable<any> {\r\n return this.http.get(`${this.url}/pdf?url=${encodeURIComponent(url)}`,\r\n {\r\n headers: new HttpHeaders()\r\n .set('Content-Type', 'application/pdf'),\r\n responseType: 'blob'\r\n });\r\n }*/\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { AlertService, DialogColor, DialogType, Utilities } from 'myrtex-mf-ui-composite';\r\nimport { SimpleModalComponent } from 'ngx-simple-modal';\r\nimport { Base64 } from 'js-base64';\r\nimport { SignProviderType, SignType } from '../../models';\r\nimport { SignedResultModel } from '../../models/signed-result.model';\r\nimport { CertificateCheck, SignRequestModel } from '../../models/sign-request.model';\r\nimport { DownloadService } from '../../services/download.service';\r\nimport { SignProviderFactory } from '../../providers/signprovider.factory';\r\nimport { OnInit } from '@angular/core/core';\r\nimport { SignerTypeEnum } from '../../enums/signer-type.enum';\r\n\r\nexport interface SignedResponseModel {\r\n result: boolean;\r\n model?: SignedResultModel;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-sign-modal',\r\n templateUrl: './sign-modal.component.html',\r\n styleUrls: ['./sign-modal.component.css']\r\n})\r\nexport class SignModalComponent\r\n extends SimpleModalComponent<SignRequestModel, SignedResponseModel> implements OnInit, SignRequestModel {\r\n\r\n public title = '';\r\n public okLabel = '';\r\n public cancelLabel = '';\r\n\r\n public xmlUrl?: string;\r\n public pdfUrl?: string;\r\n\r\n public additionalPdfUrl?: string;\r\n public additionalPdfUrlTitle?: string;\r\n\r\n public provider: SignProviderType = 'empty';\r\n public signType: SignType = 'xml';\r\n\r\n public xmlToSign = '';\r\n public pdfToSign = '';\r\n public withLog?: boolean;\r\n public skipServerCheck?: boolean;\r\n\r\n public signerType?: SignerTypeEnum;\r\n public certificateCheck?: CertificateCheck;\r\n\r\n /** @deprecated */\r\n public checkFio?: string;\r\n /** @deprecated */\r\n public checkOgrn?: string;\r\n /** @deprecated */\r\n public checkOrganizationFullName?: string;\r\n /** @deprecated */\r\n public checkOrganizationShortName?: string;\r\n /** @deprecated */\r\n public checkInn?: string;\r\n\r\n downloadingPdf = false;\r\n\r\n constructor(private signProviderFactory: SignProviderFactory,\r\n private downloadService: DownloadService,\r\n private alertService: AlertService) {\r\n super();\r\n this.result = { result: false };\r\n }\r\n\r\n get disabled() {\r\n // todo как можно дизеблить кнопу\r\n return false;\r\n }\r\n\r\n get pdfViewUrl(): string {\r\n return this.pdfUrl ?\r\n `/signer/pdfjs/web/viewer.html?file=${encodeURIComponent(this.pdfUrl)}` : '';\r\n }\r\n\r\n ngOnInit(): void {\r\n this.downloadXml();\r\n this.downloadPdf();\r\n }\r\n\r\n public ok() {\r\n\r\n if (!this.signType) {\r\n this.signType = 'xml';\r\n }\r\n\r\n let signData = this.xmlToSign;\r\n\r\n switch (this.signType) {\r\n case 'xml':\r\n signData = Base64.encode(this.xmlToSign);\r\n break;\r\n case 'pdf':\r\n signData = this.pdfToSign;\r\n break;\r\n case 'xmlts':\r\n signData = this.xmlToSign;\r\n break;\r\n }\r\n\r\n this.signProviderFactory.create(this.provider)\r\n .sign(signData, {\r\n skipServerCheck: this.skipServerCheck,\r\n withLog: this.withLog,\r\n\r\n certificateCheck: this.certificateCheck,\r\n\r\n checkFio: this.checkFio,\r\n checkOgrn: this.checkOgrn,\r\n checkOrganizationFullName: this.checkOrganizationFullName,\r\n checkOrganizationShortName: this.checkOrganizationShortName,\r\n checkInn: this.checkInn\r\n })\r\n .then((ok: SignedResultModel) => {\r\n this.processResult(ok);\r\n }).catch((error: any) => {\r\n this.processError(error);\r\n });\r\n }\r\n\r\n public cancel() {\r\n this.close();\r\n }\r\n\r\n private processResult(signResult: SignedResultModel): void {\r\n if (signResult.success) {\r\n signResult.pdfData = this.pdfToSign;\r\n signResult.xmlData = this.xmlToSign;\r\n this.result = { model: signResult, result: true };\r\n this.close();\r\n } else {\r\n this.alertService.showDialog({\r\n title: 'Ошибка проверки подписи',\r\n message: 'Подпись не валидна',\r\n color: DialogColor.red,\r\n type: DialogType.alert,\r\n okCallback: (ok) => {\r\n }\r\n });\r\n }\r\n }\r\n\r\n private processError(error: any): void {\r\n if (this.withLog) {\r\n console.error(error);\r\n }\r\n\r\n if (error) {\r\n this.alertService.showDialog({\r\n title: 'Ошибка проверки подписи',\r\n message: typeof (error) == 'string' ? error : JSON.stringify(error),\r\n color: DialogColor.red,\r\n type: DialogType.alert,\r\n okCallback: (ok) => {\r\n //\r\n }\r\n });\r\n }\r\n }\r\n\r\n private downloadXml(): void {\r\n if (!this.xmlUrl) {\r\n return;\r\n }\r\n\r\n if (this.withLog) {\r\n console.log('Downloading xml');\r\n }\r\n\r\n this.downloadService.xml(this.xmlUrl).subscribe(result => {\r\n if (this.withLog) {\r\n console.log('xmlToSign = ', result);\r\n }\r\n this.xmlToSign = result;\r\n });\r\n }\r\n\r\n private downloadPdf(): void {\r\n if (!this.pdfUrl) {\r\n return;\r\n }\r\n\r\n if (this.withLog) {\r\n console.log('Downloading pdf');\r\n }\r\n\r\n this.downloadingPdf = true;\r\n this.downloadService.pdf(this.pdfUrl)\r\n .subscribe(result => {\r\n this.downloadingPdf = false;\r\n // todo подумать, как правильно читать файл\r\n // const blob = new Blob([result], {type: 'application/pdf'});\r\n const reader = new FileReader();\r\n reader.readAsDataURL(result);\r\n reader.onloadend = () => {\r\n let base64data = reader.result as string;\r\n base64data = base64data.replace('data:application/pdf;base64,', '');\r\n\r\n if (this.withLog) {\r\n console.log('pdfToSign = ', base64data);\r\n }\r\n this.pdfToSign = base64data;\r\n }\r\n }, () => {\r\n this.downloadingPdf = false;\r\n });\r\n }\r\n}\r\n","<div class=\"modal-content accent-head xl\">\r\n <div class=\"modal-header\">\r\n <div class=\"modal-title uppercase\">\r\n <h4 class=\"ng-binding\">{{title || 'Направление документа на подписание'}}</h4>\r\n </div>\r\n <span class=\"close close-click\" (click)=\"close()\">\r\n <svg width=\"14\" height=\"14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M13 1L1 13M1 1l12 12\" stroke=\"#3A3A3A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"modal-body text-center\">\r\n <div class=\"widget\">\r\n <my-tabs>\r\n <app-tab tabTitle=\"Визуализация документа\" *ngIf=\"pdfUrl\">\r\n <pre *ngIf=\"downloadingPdf\">\r\n Подождите, идет формирование документа\r\n </pre>\r\n <iframe *ngIf=\"!downloadingPdf\" [src]=\"pdfViewUrl | safeurl\"\r\n title=\"webviewer\" frameborder=\"0\" width=\"100%\" height=\"800\"></iframe>\r\n </app-tab>\r\n <app-tab tabTitle=\"Подписываемые данные\" *ngIf=\"xmlUrl\">\r\n <pre [innerText]=\"xmlToSign\"></pre>\r\n </app-tab>\r\n </my-tabs>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal-footer\">\r\n <div *ngIf=\"pdfUrl || xmlUrl || additionalPdfUrl\"\r\n class=\"modal-footer-item\">\r\n <a *ngIf=\"pdfUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"pdfUrl\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\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\"\r\n stroke=\"#282828\" stroke-width=\"1.5\"/>\r\n </svg>\r\n <span>Скачать документ</span>\r\n </a>\r\n <a *ngIf=\"xmlUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"xmlUrl\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6 16L2 12L6 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M18 16L22 12L18 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"/>\r\n <path d=\"M7.56689 19.1782L15.5669 5.32182\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span>Скачать XML-данные</span>\r\n </a>\r\n <a *ngIf=\"additionalPdfUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"additionalPdfUrl\">\r\n <svg width=\"24\" height=\"20\" viewBox=\"0 0 24 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.21404 14.2776C7.50693 13.9847 7.98181 13.9847 8.2747 14.2776L12.2747 18.2776C12.5676 18.5705 12.5676 19.0454 12.2747 19.3383C11.9818 19.6312 11.5069 19.6312 11.214 19.3383L7.21404 15.3383C6.92115 15.0454 6.92115 14.5705 7.21404 14.2776Z\" fill=\"#33373C\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.2747 14.2776C16.5676 14.5705 16.5676 15.0454 16.2747 15.3383L12.2747 19.3383C11.9818 19.6312 11.5069 19.6312 11.214 19.3383C10.9211 19.0454 10.9211 18.5705 11.214 18.2776L15.214 14.2776C15.5069 13.9847 15.9818 13.9847 16.2747 14.2776Z\" fill=\"#33373C\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M11.7444 9.05796C12.1586 9.05796 12.4944 9.39374 12.4944 9.80796V18.808C12.4944 19.2222 12.1586 19.558 11.7444 19.558C11.3302 19.558 10.9944 19.2222 10.9944 18.808V9.80796C10.9944 9.39374 11.3302 9.05796 11.7444 9.05796Z\" fill=\"#33373C\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0.978206 4.66339C2.62297 1.48351 6.12559 -0.37405 9.73462 0.063407C13.146 0.476912 15.9708 2.84408 17.0094 6.05796H17.7444C20.2757 6.05796 22.4565 7.67267 23.2559 10.0708C23.2593 10.0811 23.2625 10.0915 23.2655 10.1019C23.9483 12.4917 23.1511 15.0227 21.0835 16.516C20.7477 16.7585 20.2789 16.6829 20.0364 16.3471C19.7938 16.0113 19.8695 15.5425 20.2053 15.2999C21.7333 14.1964 22.337 12.335 21.8277 10.5297C21.223 8.73647 19.6077 7.55796 17.7444 7.55796H16.4444C16.1002 7.55796 15.8002 7.32373 15.7168 6.98986C14.9919 4.0904 12.5447 1.915 9.55412 1.55251C6.56314 1.18997 3.66577 2.7324 2.31053 5.35252C0.950478 7.98196 1.3145 11.2478 3.3074 13.5125C3.58105 13.8234 3.5508 14.2974 3.23984 14.571C2.92888 14.8446 2.45498 14.8144 2.18133 14.5034C-0.225765 11.7681 -0.66174 7.83395 0.978206 4.66339Z\" fill=\"#33373C\"/>\r\n </svg>\r\n <span>{{additionalPdfUrlTitle}}</span>\r\n </a>\r\n </div>\r\n <div class=\"modal-footer-item\">\r\n <mrx-button\r\n [customClasses]=\"'mr-3'\"\r\n [type]=\"'secondary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"cancel()\"\r\n >{{cancelLabel || 'Отменить'}}</mrx-button>\r\n <mrx-button\r\n [type]=\"'primary'\"\r\n [size]=\"'medium'\"\r\n [disabled]=\"disabled\"\r\n (click)=\"ok()\"\r\n >{{okLabel || 'Подписать'}}</mrx-button>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { SimpleModalService } from 'ngx-simple-modal';\r\nimport { SignedResultModel, SignRequestModel } from '../models';\r\nimport { SignModalComponent } from '../components/sign-modal/sign-modal.component';\r\nimport { TmpTokenService, Utilities } from 'myrtex-mf-ui-composite';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SignService {\r\n\r\n constructor(private simpleModalService: SimpleModalService, private tmpTokenService: TmpTokenService) {\r\n }\r\n\r\n public sign(request: SignRequestModel,\r\n ok: (result?: SignedResultModel) => void,\r\n cancel?: () => void): void {\r\n\r\n const baseUrl = Utilities.commonPart(request.xmlUrl, request.pdfUrl);\r\n\r\n this.tmpTokenService.generate(baseUrl).subscribe(token => {\r\n\r\n const ph = `${window.location.protocol}//${window.location.host}`;\r\n if (request.xmlUrl) {\r\n request.xmlUrl = ph + Utilities.updateQueryStringParameter(request.xmlUrl, 'authToken', token);\r\n }\r\n\r\n if (request.pdfUrl) {\r\n request.pdfUrl = ph + Utilities.updateQueryStringParameter(request.pdfUrl, 'authToken', token);\r\n }\r\n\r\n this.simpleModalService.addModal(SignModalComponent, request, { wrapperClass: 'in xl' })\r\n .subscribe(result => {\r\n if (result && result.result) {\r\n ok(result.model);\r\n } else {\r\n if (cancel) {\r\n cancel();\r\n }\r\n }\r\n });\r\n\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { SignModalComponent } from './components/sign-modal/sign-modal.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MyrtexMfUiCompositeModule } from 'myrtex-mf-ui-composite';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { SignService } from './services/public.sign.service';\r\nimport { DownloadService } from './services/download.service';\r\nimport { CertificateSelectComponent } from './components/certificate-select/certificate-select.component';\r\nimport { CryptoApiService } from './services/crypto.api.service';\r\nimport { SignProviderFactory } from './providers/signprovider.factory';\r\nimport { CryptoProvider } from './providers/crypto.provider';\r\nimport { CryptoJinnProvider } from './providers/cryptojinn.provider';\r\nimport { CryptoTsProvider } from './providers/cryptots.provider';\r\nimport { EmptyProvider } from './providers/empty.provider';\r\nimport { ButtonModule } from 'myrtex-mf-ui';\r\n\r\n@NgModule({\r\n declarations: [\r\n SignModalComponent,\r\n CertificateSelectComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n HttpClientModule,\r\n NgSelectModule,\r\n MyrtexMfUiCompositeModule,\r\n ButtonModule,\r\n ],\r\n exports: [\r\n SignModalComponent\r\n ],\r\n providers: [\r\n SignProviderFactory,\r\n CryptoProvider,\r\n CryptoJinnProvider,\r\n CryptoTsProvider,\r\n EmptyProvider,\r\n\r\n CryptoApiService,\r\n SignService,\r\n DownloadService\r\n ]\r\n})\r\nexport class MyrtexSignerModule { }\r\n","/*\r\n * Public API Surface of myrtex-mf-signer\r\n */\r\n// enums\r\nexport * from './lib/enums/index';\r\n\r\n// models\r\nexport * from './lib/models/index';\r\n\r\n// components\r\nexport * from './lib/components/sign-modal/sign-modal.component';\r\n\r\n// modules\r\nexport * from './lib/myrtex-signer.module';\r\n\r\n// services\r\nexport * from './lib/services/public.sign.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CertificateAdjuster","i1","i2.CryptoService","i3.CryptoApiService","i1.CryptoProvider","i2.CryptoJinnProvider","i3.CryptoTsProvider","i4.EmptyProvider","i1.SignProviderFactory","i2.DownloadService","i5","i2"],"mappings":"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"}
1
+ {"version":3,"file":"myrtex-mf-signer.mjs","sources":["../../../projects/myrtex-mf-signer/src/lib/enums/signer-type.enum.ts","../../../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/helpers/strippingCharacters.ts","../../../projects/myrtex-mf-signer/src/lib/helpers/transformText.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 enum SignerTypeEnum {\r\n Unknown = 0,\r\n\r\n FL = 1,\r\n\r\n UL = 2,\r\n\r\n IP = 3,\r\n}\r\n","export class CryptoBaseService {\r\n\r\n public available = false;\r\n options: any = {};\r\n\r\n init(): Promise<CryptoBaseService> {\r\n return Promise.reject('Not implemented');\r\n };\r\n\r\n auth(): Promise<boolean> {\r\n return Promise.resolve(true);\r\n };\r\n}\r\n","class CertificateAdjuster {\r\n extract(s: string, name: string | string[]): string {\r\n if (typeof (name) === 'string') {\r\n name = [name];\r\n }\r\n\r\n for (var i = 0; i < name.length; i++) {\r\n const n = name[i];\r\n const re = new RegExp(n + '\\\\s*=\\\\s*(?<value>[^=]+)(?:[,\\\\\\\\/]|$)', 'g');\r\n const m = re.exec(s);\r\n if (m !== null && m.groups !== undefined && m.groups !== null) {\r\n let r = m.groups.value;\r\n r = r.replace(/^\\\"?/, '');\r\n r = r.replace(/\\\"$/, '');\r\n r = r.replace(/\\\"\\\"/g, '\"');\r\n return r;\r\n }\r\n }\r\n\r\n return '';\r\n };\r\n\r\n print2Digit(digit: number) {\r\n return (digit < 10) ? '0' + digit : digit;\r\n };\r\n\r\n getCertDate(paramDate: any) {\r\n let certDate = new Date(paramDate);\r\n return this.print2Digit(certDate.getUTCDate()) + '.' + this.print2Digit(certDate.getMonth() + 1) +\r\n '.' + certDate.getFullYear() + ' ' +\r\n this.print2Digit(certDate.getUTCHours()) + ':' + this.print2Digit(certDate.getUTCMinutes()) +\r\n ':' + this.print2Digit(certDate.getUTCSeconds());\r\n };\r\n\r\n getCertFio(certSubjectName: string) {\r\n const lastName = this.extract(certSubjectName, 'SN');\r\n const name = this.extract(certSubjectName, 'G');\r\n\r\n return lastName + ' ' + name;\r\n };\r\n\r\n getCertPost(certSubjectName: string) {\r\n return this.extract(certSubjectName, 'T');\r\n };\r\n\r\n getCertOgrn(certSubjectName: string) {\r\n return this.extract(certSubjectName, ['OGRN', 'ОГРН', 'ОГРНИП','OGRNIP', '1.2.643.100.1']);\r\n };\r\n\r\n getCertOrg(certSubjectName: string) {\r\n return this.extract(certSubjectName, 'O');\r\n };\r\n\r\n getCertInn(certSubjectName: string) {\r\n return this.extract(certSubjectName, ['INN', 'ИНН', '1.2.643.3.131.1.1']);\r\n };\r\n\r\n getCertSnils(certSubjectName: string) {\r\n return this.extract(certSubjectName, ['SNILS', 'СНИЛС', '1.2.643.100.3']);\r\n };\r\n\r\n getCertName(certSubjectName: string) {\r\n return this.extract(certSubjectName, 'CN');\r\n };\r\n\r\n getIssuer(certIssuerName: string) {\r\n return this.extract(certIssuerName, 'CN');\r\n };\r\n\r\n getCertInfoString(certSubjectName: string, certFromDate: any) {\r\n return this.extract(certSubjectName, 'CN') + '; Выдан: ' + this.getCertDate(certFromDate);\r\n };\r\n}\r\n\r\nconst instance = new CertificateAdjuster();\r\nexport { instance as CertificateAdjuster };","export const strippingCharacters = (text?: string): string => {\r\n if (!text) {\r\n return ''\r\n }\r\n return text.replace(/\\s+|\\.|,|!|\"|«|»|<|>|'|:|;|-|\\\\(|\\\\)/g, '').toLowerCase()\r\n}\r\n","export const transformText = (text?: string): string => {\r\n if (!text) {\r\n return '';\r\n }\r\n text = text.toLowerCase().trim();\r\n return text.replace(/ё/g, 'е').replace(/й/g, 'и');\r\n}\r\n","import {\r\n Async,\r\n CADESCOM_STORE_LOCATION,\r\n CAPICOM_STORE_NAMES,\r\n CAPICOM_STORE_OPEN_MODE,\r\n ProgIds\r\n} from 'cadesplugin-types';\r\nimport { CertificateCheck, CertificateModel } from '../../models';\r\n// @ts-ignore\r\nimport getCadesplugin from 'async-cadesplugin';\r\nimport { CryptoBaseService } from '../crypto.base.service';\r\nimport { CertificateAdjuster } from '../certificate.adjuster';\r\nimport { SignerTypeEnum } from '../../enums/signer-type.enum';\r\nimport { strippingCharacters } from '../../helpers/strippingCharacters';\r\nimport { transformText } from '../../helpers/transformText';\r\n\r\ndeclare global {\r\n interface Window {\r\n cadesplugin: Async.IWebClassFactory;\r\n CRYPTO_SKIP_CHECK?: boolean;\r\n }\r\n}\r\n\r\ninterface CertificateFilter {\r\n certificateCheck?: CertificateCheck;\r\n}\r\n\r\ninterface Certificate {\r\n id: number;\r\n certificate: any;\r\n subjectName: string;\r\n name: string;\r\n cn: string;\r\n fio: string;\r\n post: string;\r\n ogrn: string;\r\n organization: string;\r\n inn: string;\r\n validFromDate: string;\r\n validToDate: string;\r\n thumbprint: string;\r\n issuerName: string;\r\n serialNumber: string;\r\n isExpired: boolean;\r\n snils: string;\r\n}\r\n\r\nexport class CryptoProBaseService extends CryptoBaseService {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async init(): Promise<CryptoBaseService> {\r\n await getCadesplugin();\r\n return Promise.resolve(this);\r\n };\r\n\r\n public async getCertificates(filter?: CertificateFilter): Promise<CertificateModel[]> {\r\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\r\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\r\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\r\n\r\n let storeCerts = await store.Certificates;\r\n let count = await storeCerts.Count;\r\n let certificates: Array<CertificateModel> = [];\r\n\r\n for (let i = 1; i <= count; i++) {\r\n let cert = await storeCerts.Item(i);\r\n let validFromDate = new Date(await cert.ValidFromDate);\r\n let validToDate = new Date(await cert.ValidToDate);\r\n const subjectName = await cert.SubjectName;\r\n\r\n const certificate: Certificate = {\r\n id: i,\r\n certificate: cert,\r\n subjectName: subjectName,\r\n name: CertificateAdjuster.getCertInfoString(subjectName, validFromDate),\r\n cn: CertificateAdjuster.getCertName(subjectName),\r\n fio: CertificateAdjuster.getCertFio(subjectName),\r\n post: CertificateAdjuster.getCertPost(subjectName),\r\n ogrn: CertificateAdjuster.getCertOgrn(subjectName),\r\n snils: CertificateAdjuster.getCertSnils(subjectName),\r\n organization: CertificateAdjuster.getCertOrg(subjectName),\r\n inn: CertificateAdjuster.getCertInn(subjectName),\r\n validFromDate: validFromDate.toLocaleDateString('ru-RU'),\r\n validToDate: validToDate.toLocaleDateString('ru-RU'),\r\n thumbprint: await cert.Thumbprint,\r\n issuerName: await cert.IssuerName,\r\n serialNumber: await cert.SerialNumber,\r\n isExpired: validToDate < new Date()\r\n };\r\n\r\n if (certificate.isExpired) {\r\n continue;\r\n }\r\n\r\n let filterOk = true;\r\n if (window.CRYPTO_SKIP_CHECK !== true) {\r\n if (filter?.certificateCheck?.signerType === SignerTypeEnum.FL) {\r\n filterOk = !certificate.ogrn;\r\n } else if ([SignerTypeEnum.UL, SignerTypeEnum.IP]\r\n .indexOf(filter?.certificateCheck?.signerType || SignerTypeEnum.Unknown) > -1) {\r\n if (filterOk) {\r\n const organization = certificate.organization || certificate.cn;\r\n const orgIsValid = filter?.certificateCheck?.ogrn === certificate.ogrn;\r\n if (!orgIsValid) {\r\n if (filter?.certificateCheck?.isChief) {\r\n filterOk = false;\r\n } else {\r\n const orgNameIsValid = (filter?.certificateCheck?.fullName &&\r\n strippingCharacters(filter?.certificateCheck?.fullName)\r\n .indexOf(strippingCharacters(organization)) > -1)\r\n || (filter?.certificateCheck?.shortName &&\r\n strippingCharacters(filter?.certificateCheck?.shortName)\r\n .indexOf(strippingCharacters(organization)) > -1);\r\n if (!orgNameIsValid) {\r\n filterOk = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (filterOk && filter?.certificateCheck?.signerType) {\r\n const fio = transformText(certificate.fio);\r\n const snils = certificate.snils.replace(/[\\s-]+/g, '');\r\n const snilsCert = filter?.certificateCheck?.snils?.replace(/[\\s-]+/g, '');\r\n\r\n if ((filter?.certificateCheck?.fio ? transformText(filter.certificateCheck.fio) : null) !== transformText(fio) ||\r\n snilsCert !== snils) {\r\n filterOk = false;\r\n }\r\n }\r\n }\r\n\r\n if (filterOk) {\r\n certificates.push(certificate);\r\n }\r\n }\r\n\r\n await store.Close();\r\n return certificates;\r\n }\r\n}\r\n","import {\r\n Async,\r\n CADESCOM_CADES_TYPE,\r\n CADESCOM_CONTENT_ENCODING_TYPE,\r\n CADESCOM_STORE_LOCATION, CAPICOM_STORE_NAMES, CAPICOM_STORE_OPEN_MODE,\r\n ProgIds\r\n} from 'cadesplugin-types';\r\nimport { CryptoProBaseService } from './crypto.pro.base.service';\r\n\r\nexport class CryptoProAsyncService extends CryptoProBaseService {\r\n\r\n public static readonly key = 'cryptoproasync';\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async signXml(certificate: any, data: string): Promise<string> {\r\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\r\n await signer.propset_Certificate(certificate);\r\n\r\n let timestamp_service_url = 'http://qs.cryptopro.ru/tsp/tsp.srf';\r\n await signer.propset_TSAAddress(timestamp_service_url);\r\n\r\n let signed: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\r\n\r\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\r\n await signed.propset_Content(encodedXml);\r\n\r\n let cades_xml_signature_type_enveloped = 80;\r\n await signed.propset_SignatureType(cades_xml_signature_type_enveloped);\r\n\r\n const signedData = await signed.Sign(signer);\r\n\r\n return signedData;\r\n }\r\n\r\n public async signBase64(certificate: any, data: string, detached: boolean = false): Promise<string> {\r\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\r\n await signer.propset_Certificate(certificate);\r\n\r\n let signed: Async.ICPSignedData5 = await window.cadesplugin.CreateObjectAsync(ProgIds.CadesSignedData);\r\n\r\n await signed.propset_ContentEncoding(CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY);\r\n await signed.propset_Content(data);\r\n\r\n const signedData = await signed.SignCades(signer, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, detached);\r\n\r\n return signedData;\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { SimpleModalComponent } from 'ngx-simple-modal';\r\nimport { CertificateModel } from '../../models';\r\n\r\nexport interface CertificateSelectModel {\r\n certificates: CertificateModel[];\r\n}\r\n\r\nexport interface CertificateSelectResultModel {\r\n selected?: CertificateModel;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-certificate-select',\r\n templateUrl: './certificate-select.component.html',\r\n styleUrls: ['./certificate-select.component.css']\r\n})\r\nexport class CertificateSelectComponent extends SimpleModalComponent<CertificateSelectModel, CertificateSelectResultModel>\r\n implements CertificateSelectModel {\r\n\r\n certificates: CertificateModel[] = [];\r\n\r\n constructor() {\r\n super();\r\n this.result = {};\r\n }\r\n\r\n ok(cert: CertificateModel) {\r\n this.result = {selected: cert};\r\n this.close();\r\n }\r\n}\r\n","<div class=\"modal-content open accent-head certificate\">\r\n <div class=\"modal-header\">\r\n <div class=\"modal-title\" [innerHTML]=\"'Выберите сертификат'\">\r\n </div>\r\n <span class='close close-click' (click)=\"close()\">\r\n <svg width='14' height='14' fill='none' xmlns='http://www.w3.org/2000/svg'>\r\n <path d='M13 1L1 13M1 1l12 12' stroke='#3A3A3A' stroke-width='1.5' stroke-linecap='round'\r\n stroke-linejoin='round' />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"modal-body text-center\">\r\n\r\n <div class=\"modal-body-other\">\r\n <div *ngFor=\"let cert of certificates\">\r\n <div class=\"modal-body-info\">\r\n <div class=\"modal-body-info__item\">\r\n <span class=\"text\">\r\n Владелец:\r\n </span>\r\n <span class=\"text\">\r\n {{cert.cn}}<br/>\r\n {{cert.fio}}<span *ngIf=\"cert.post\">, {{cert.post}}</span>\r\n </span>\r\n </div>\r\n <div class=\"modal-body-info__item\">\r\n <span class=\"text\">\r\n Срок действия:\r\n </span>\r\n <span class=\"text\">\r\n {{cert.validFromDate}} - {{cert.validToDate}}\r\n </span>\r\n </div>\r\n <div class=\"modal-body-info__item\">\r\n <span class=\"text hash\">\r\n {{cert.thumbprint}} {{cert.isExpired ? \"(истек)\" : \"\"}}\r\n </span>\r\n </div>\r\n <button\r\n (click)=\"ok(cert)\"\r\n [disabled]=\"cert.isExpired\"\r\n class=\"btn btn-md\">Создать подпись</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n </div>\r\n</div>","import {\r\n Async,\r\n CADESCOM_STORE_LOCATION, CADESCOM_XML_SIGNATURE_TYPE,\r\n CAPICOM_STORE_NAMES,\r\n CAPICOM_STORE_OPEN_MODE,\r\n ProgIds\r\n} from 'cadesplugin-types';\r\nimport { CryptoProBaseService } from './crypto.pro.base.service';\r\n\r\ndeclare global {\r\n interface Window {\r\n cadesplugin: Async.IWebClassFactory;\r\n CRYPTO_SKIP_CHECK?: boolean;\r\n }\r\n}\r\n\r\nexport class CryptoProTsService extends CryptoProBaseService {\r\n\r\n public static readonly key = 'cryptoprots';\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n private get TIMESTAMP_SERVICE_URL(): string {\r\n return 'http://qs.cryptopro.ru/tsp/tsp.srf';\r\n }\r\n\r\n public async sign(certificate: any, data: string): Promise<string> {\r\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\r\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\r\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\r\n\r\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\r\n await signer.propset_Certificate(certificate);\r\n\r\n let signedXML: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\r\n\r\n let publicKey: Async.IPublicKey = await certificate.PublicKey();\r\n let algorithm: Async.IOID = await publicKey.Algorithm;\r\n let algorithmOid = await algorithm.Value;\r\n\r\n let { signMethod, digestMethod } = this.getSigningMethods(algorithmOid);\r\n\r\n //await signer.propset_Options(api.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN);\r\n\r\n await signer.propset_TSAAddress(this.TIMESTAMP_SERVICE_URL);\r\n\r\n if (data) {\r\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\r\n await signedXML.propset_Content(encodedXml);\r\n }\r\n\r\n await signedXML.propset_SignatureType(CADESCOM_XML_SIGNATURE_TYPE.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED);\r\n await signedXML.propset_SignatureMethod(signMethod);\r\n await signedXML.propset_DigestMethod(digestMethod);\r\n\r\n let signature = await signedXML.Sign(signer);\r\n\r\n await store.Close();\r\n\r\n return signature;\r\n }\r\n\r\n private getSigningMethods(algorithmOid: string): { signMethod: string, digestMethod: string } {\r\n let signMethod = '', digestMethod = '';\r\n\r\n if (algorithmOid == '1.2.643.7.1.1.1.1') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 256 бит\r\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\r\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\r\n } else if (algorithmOid == '1.2.643.7.1.1.1.2') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 512 бит\r\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512';\r\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512';\r\n } else if (algorithmOid == '1.2.643.2.2.19') { // алгоритм ГОСТ Р 34.10-2001\r\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\r\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\r\n }\r\n\r\n return { signMethod, digestMethod };\r\n }\r\n}\r\n","import { CryptoProAsyncService } from './cryptopro/crypto.pro.async.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { CryptoBaseService } from './crypto.base.service';\r\nimport { CryptoProTsService } from './cryptopro/crypto.pro.ts.service';\r\n\r\nexport interface CryptoHandler {\r\n key: string;\r\n name: string;\r\n service: CryptoBaseService;\r\n sign: boolean;\r\n default: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoService {\r\n\r\n handlers: Map<string, CryptoHandler> = new Map<string, CryptoHandler>();\r\n selectPromise: any = null;\r\n private _initialized = false;\r\n private _withLog = false;\r\n\r\n public async startUp(withLog? : boolean): Promise<void> {\r\n this._withLog = !!withLog;\r\n\r\n if (!this._initialized) {\r\n this.registerHandler({\r\n key: CryptoProAsyncService.key,\r\n name: 'КриптоПро',\r\n service: new CryptoProAsyncService(),\r\n sign: true,\r\n default: true\r\n });\r\n this.registerHandler({\r\n key: CryptoProTsService.key,\r\n name: 'КриптоПро',\r\n service: new CryptoProTsService(),\r\n sign: true,\r\n default: false\r\n });\r\n await this.init();\r\n this._initialized = true;\r\n }\r\n this.log('Handlers init completed');\r\n return Promise.resolve();\r\n }\r\n\r\n public registerHandler(options: CryptoHandler) {\r\n this.log('Register handler', options);\r\n\r\n options.disabled = false;\r\n this.handlers.set(options.key, options);\r\n };\r\n\r\n public disableHandler(key: string): void {\r\n const handler = this.handlers.get(key);\r\n if (handler) {\r\n handler.disabled = true;\r\n }\r\n };\r\n\r\n public getHandler(key: string): Promise<CryptoHandler> {\r\n const handler = this.getActiveHandlers()\r\n .find(x => x.key == key);\r\n\r\n if (handler) {\r\n return Promise.resolve(handler);\r\n }\r\n return Promise.reject(`Not found ${key} handler`);\r\n };\r\n\r\n public getDefaultHandler() : Promise<CryptoHandler> {\r\n const handler = this.getActiveHandlers()\r\n .find(x => x.default);\r\n\r\n if (handler) {\r\n return Promise.resolve(handler);\r\n }\r\n return Promise.reject(`Not found default handler`);\r\n };\r\n\r\n public getService<T extends CryptoBaseService>(key: string): Promise<T> {\r\n const handler = this.handlers.get(key);\r\n if (handler) {\r\n return Promise.resolve(handler.service as T);\r\n }\r\n return Promise.reject(`Not found ${key}`);\r\n };\r\n\r\n public getActiveHandlers(): Array<CryptoHandler> {\r\n const active = new Array<CryptoHandler>();\r\n this.handlers.forEach(s => {\r\n if (!s.disabled) {\r\n active.push(s);\r\n }\r\n });\r\n return active;\r\n };\r\n\r\n private log(...args: any[]) {\r\n if (this._withLog) {\r\n console.log(args);\r\n }\r\n };\r\n\r\n private async init(): Promise<any> {\r\n this.log('Initialize handlers');\r\n\r\n const promises: Array<Promise<any>> = [];\r\n this.handlers.forEach(handler => {\r\n handler.service.available = false;\r\n\r\n this.log('Initialize ' + handler.name);\r\n\r\n const promise = handler.service.init().then((result) => {\r\n result.available = true;\r\n this.log('Handler init success', result);\r\n }).catch(reason => {\r\n this.log('Handler init fail', reason);\r\n });\r\n\r\n promises.push(promise);\r\n });\r\n\r\n return await Promise.all(promises);\r\n };\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\r\nimport { SignValidateResponse } from '../models';\r\nimport { VerifyCertModel } from '../models/internal/verify.cert.model';\r\nimport { VerifyCertResponseModel } from '../models/internal/verify.cert.response.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoApiService extends EndpointBaseService {\r\n\r\n private urlCrypto = '/cryptopro/api/v1';\r\n private urlSigner = '/signer/api/v1';\r\n\r\n constructor(protected http: HttpClient, protected injector: Injector) {\r\n super(http, injector);\r\n }\r\n\r\n public verify(data: VerifyCertModel): Observable<VerifyCertResponseModel> {\r\n return this.http.post<VerifyCertResponseModel>(`${this.urlCrypto}/verify`, data);\r\n }\r\n\r\n public validate(data: string): Observable<SignValidateResponse> {\r\n return this.http.post<SignValidateResponse>(`${this.urlSigner}/jinn/validate`, {data});\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Base64 } from 'js-base64';\r\nimport { SimpleModalService } from 'ngx-simple-modal';\r\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\r\nimport { CryptoService } from '../services/crypto.service';\r\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\r\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\r\nimport { CryptoApiService } from '../services/crypto.api.service';\r\nimport { SignedResultModel } from '../models';\r\nimport { strippingCharacters } from '../helpers/strippingCharacters';\r\nimport { Async } from 'cadesplugin-types';\r\n\r\ndeclare global {\r\n interface Window {\r\n cadesplugin: Async.IWebClassFactory;\r\n CRYPTO_SKIP_CHECK?: boolean;\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoProvider implements ISignProvider {\r\n\r\n constructor(private simpleModalService: SimpleModalService,\r\n private cryptoService: CryptoService,\r\n private cryptoApiService: CryptoApiService) {\r\n }\r\n\r\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\r\n const withLog = options?.withLog;\r\n await this.cryptoService.startUp(withLog);\r\n\r\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\r\n const list = await service.getCertificates({\r\n certificateCheck: options?.certificateCheck\r\n });\r\n\r\n if (list.length === 0) {\r\n return Promise.reject('Отсутствует подходящий сертификат');\r\n }\r\n\r\n const modalResult = await this.simpleModalService\r\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\r\n\r\n if (!modalResult.selected) {\r\n if (withLog) {\r\n console.log('Сертификат не выбран, отмена');\r\n }\r\n return Promise.reject();\r\n }\r\n\r\n let certificateFail = 0;\r\n if (window.CRYPTO_SKIP_CHECK !== true && !options?.certificateCheck) {\r\n /** @deprecated */\r\n if (options?.checkFio &&\r\n modalResult.selected.fio.toLowerCase() !== options?.checkFio.toLowerCase()) {\r\n certificateFail = 1;\r\n }\r\n\r\n if (options?.checkOrganizationFullName || options?.checkOrganizationShortName) {\r\n let organization = modalResult.selected.organization;\r\n\r\n if (!organization) {\r\n organization = modalResult.selected.cn;\r\n }\r\n\r\n if (organization) {\r\n const orgIsValid = (options?.checkOrganizationFullName &&\r\n strippingCharacters(organization) == strippingCharacters(options?.checkOrganizationFullName))\r\n || (options?.checkOrganizationShortName &&\r\n strippingCharacters(organization) == strippingCharacters(options?.checkOrganizationShortName));\r\n if (!orgIsValid) {\r\n certificateFail = 2;\r\n }\r\n } else {\r\n certificateFail = 2;\r\n }\r\n }\r\n }\r\n\r\n if (certificateFail > 0) {\r\n return Promise.reject(\r\n certificateFail == 1 ?\r\n 'Данные лица, подписывающего заявку не совпадают с данными усиленной квалифицированной подписи.' :\r\n certificateFail === 3 ? 'Отсутствует активный КриптоПровайдер (не установлен либо недоступен плагин). ' +\r\n 'Чтобы подписать, установите плагин КриптоПро и проверьте наличие сертификата' :\r\n 'Данные организации не совпадают с данными усиленной квалифицированной подписи. ' +\r\n 'Убедитесь, что вы используете сертификат, выданные от организации.',\r\n );\r\n }\r\n\r\n if (withLog) {\r\n console.log('Подписываемые данные', data);\r\n }\r\n\r\n const signedData = await service.signBase64(modalResult.selected.certificate, data, true);\r\n\r\n if (withLog) {\r\n console.log('Подписанные данные', signedData);\r\n }\r\n\r\n if (!options?.skipServerCheck) {\r\n const verifyResult = await this.cryptoApiService.verify({\r\n data: data,\r\n signature: Base64.encode(signedData),\r\n detached: true\r\n }).toPromise();\r\n\r\n return {\r\n data,\r\n success: verifyResult.success,\r\n signed: signedData,\r\n certificate: modalResult.selected,\r\n };\r\n } else {\r\n return {\r\n data,\r\n success: true,\r\n signed: signedData,\r\n certificate: modalResult.selected,\r\n };\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SimpleModalService } from 'ngx-simple-modal';\r\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\r\nimport { CryptoService } from '../services/crypto.service';\r\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\r\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\r\nimport { CryptoApiService } from '../services/crypto.api.service';\r\nimport { SignedResultModel } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoJinnProvider implements ISignProvider {\r\n\r\n constructor(private simpleModalService: SimpleModalService,\r\n private cryptoService: CryptoService,\r\n private cryptoApiService: CryptoApiService) {\r\n }\r\n\r\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\r\n const withLog = options?.withLog;\r\n\r\n await this.cryptoService.startUp(withLog);\r\n\r\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\r\n\r\n const list = await service.getCertificates({\r\n certificateCheck: options?.certificateCheck\r\n });\r\n\r\n if (list.length === 0) {\r\n return Promise.reject('Отсутствует подходящий сертификат');\r\n }\r\n\r\n const modalResult = await this.simpleModalService\r\n .addModal(CertificateSelectComponent, { certificates: list }).toPromise();\r\n\r\n if (!modalResult.selected) {\r\n if (withLog) {\r\n console.log('Сертификат не выбран, отмена');\r\n }\r\n return Promise.reject();\r\n }\r\n\r\n if (withLog) {\r\n console.log('Подписываемые данные', data);\r\n }\r\n\r\n const signedData = await service.signXml(modalResult.selected.certificate, data);\r\n\r\n if (withLog) {\r\n console.log('Подписанные данные', signedData);\r\n }\r\n\r\n if (!options?.skipServerCheck) {\r\n const verifyResult = await this.cryptoApiService.validate(signedData).toPromise();\r\n\r\n return {\r\n data: signedData,\r\n success: verifyResult.success,\r\n certificate: modalResult.selected,\r\n validateResult: verifyResult.validateResult\r\n };\r\n } else {\r\n return {\r\n data: signedData,\r\n success: true,\r\n certificate: modalResult.selected\r\n };\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\r\nimport { SimpleModalService } from 'ngx-simple-modal';\r\nimport { CryptoService } from '../services/crypto.service';\r\nimport { CryptoApiService } from '../services/crypto.api.service';\r\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\r\nimport { CryptoProTsService } from '../services/cryptopro/crypto.pro.ts.service';\r\nimport { SignedResultModel } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoTsProvider implements ISignProvider {\r\n\r\n constructor(private simpleModalService: SimpleModalService,\r\n private cryptoService: CryptoService,\r\n private cryptoApiService: CryptoApiService) {\r\n }\r\n\r\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\r\n const withLog = options?.withLog;\r\n await this.cryptoService.startUp(withLog);\r\n const service = await this.cryptoService.getService<CryptoProTsService>(CryptoProTsService.key);\r\n const list = await service.getCertificates();\r\n const modalResult = await this.simpleModalService\r\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\r\n\r\n if (!modalResult.selected) {\r\n if (withLog) {\r\n console.log('No certificate selected, rejecting');\r\n }\r\n return Promise.reject();\r\n }\r\n\r\n const signedData = await service.sign(modalResult.selected.certificate, data);\r\n\r\n if (!options?.skipServerCheck) {\r\n const validateResult = await this.cryptoApiService.validate(signedData).toPromise();\r\n\r\n return {\r\n data,\r\n signed: signedData,\r\n success: validateResult.success,\r\n validateResult: validateResult.validateResult,\r\n certificate: modalResult.selected,\r\n };\r\n } else {\r\n return {\r\n data,\r\n signed: signedData,\r\n success: true,\r\n validateResult: '',\r\n certificate: modalResult.selected,\r\n };\r\n }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { ISignProvider, SignOptions } from \"./interfaces/isign.provider\";\r\nimport { SignedResultModel } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EmptyProvider implements ISignProvider {\r\n\r\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\r\n return Promise.resolve({\r\n data: data,\r\n success: true\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CryptoProvider } from './crypto.provider';\r\nimport { CryptoJinnProvider } from './cryptojinn.provider';\r\nimport { EmptyProvider } from './empty.provider';\r\nimport { CryptoTsProvider } from './cryptots.provider';\r\nimport { SignProviderType } from '../models';\r\nimport { ISignProvider } from './interfaces/isign.provider';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SignProviderFactory {\r\n constructor(\r\n protected cryptoProvider: CryptoProvider,\r\n protected cryptoJinnProvider: CryptoJinnProvider,\r\n protected cryptoTsProvider: CryptoTsProvider,\r\n protected emptyProvider: EmptyProvider) {\r\n }\r\n\r\n create(providerType: SignProviderType): ISignProvider {\r\n switch (providerType) {\r\n case 'crypto':\r\n return this.cryptoProvider;\r\n case 'cryptojinn':\r\n return this.cryptoJinnProvider;\r\n case 'cryptots':\r\n return this.cryptoTsProvider;\r\n case 'empty':\r\n return this.emptyProvider;\r\n }\r\n }\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DownloadService extends EndpointBaseService {\r\n\r\n private url = '/signer/api/v1/download';\r\n\r\n constructor(protected http: HttpClient, protected injector: Injector) {\r\n super(http, injector);\r\n }\r\n\r\n public xml(url: string): Observable<any> {\r\n return this.http.get(url,\r\n {\r\n headers: new HttpHeaders()\r\n .set('Content-Type', 'text/xml'),\r\n responseType: 'text'\r\n });\r\n }\r\n\r\n public pdf(url: string): Observable<any> {\r\n return this.http.get(url,\r\n {\r\n headers: new HttpHeaders()\r\n .set('Content-Type', 'application/pdf'),\r\n responseType: 'blob'\r\n });\r\n }\r\n\r\n /*public xml(url: string): Observable<any> {\r\n return this.http.get(`${this.url}/xml?url=${encodeURIComponent(url)}`,\r\n {\r\n headers: new HttpHeaders()\r\n .set('Content-Type', 'text/xml'),\r\n responseType: 'text'\r\n });\r\n }\r\n\r\n public pdf(url: string): Observable<any> {\r\n return this.http.get(`${this.url}/pdf?url=${encodeURIComponent(url)}`,\r\n {\r\n headers: new HttpHeaders()\r\n .set('Content-Type', 'application/pdf'),\r\n responseType: 'blob'\r\n });\r\n }*/\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { AlertService, DialogColor, DialogType, Utilities } from 'myrtex-mf-ui-composite';\r\nimport { SimpleModalComponent } from 'ngx-simple-modal';\r\nimport { Base64 } from 'js-base64';\r\nimport { SignProviderType, SignType } from '../../models';\r\nimport { SignedResultModel } from '../../models/signed-result.model';\r\nimport { CertificateCheck, SignRequestModel } from '../../models/sign-request.model';\r\nimport { DownloadService } from '../../services/download.service';\r\nimport { SignProviderFactory } from '../../providers/signprovider.factory';\r\nimport { OnInit } from '@angular/core/core';\r\nimport { SignerTypeEnum } from '../../enums/signer-type.enum';\r\n\r\nexport interface SignedResponseModel {\r\n result: boolean;\r\n model?: SignedResultModel;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-sign-modal',\r\n templateUrl: './sign-modal.component.html',\r\n styleUrls: ['./sign-modal.component.css']\r\n})\r\nexport class SignModalComponent\r\n extends SimpleModalComponent<SignRequestModel, SignedResponseModel> implements OnInit, SignRequestModel {\r\n\r\n public title = '';\r\n public okLabel = '';\r\n public cancelLabel = '';\r\n\r\n public xmlUrl?: string;\r\n public pdfUrl?: string;\r\n\r\n public additionalPdfUrl?: string;\r\n public additionalPdfUrlTitle?: string;\r\n\r\n public provider: SignProviderType = 'empty';\r\n public signType: SignType = 'xml';\r\n\r\n public xmlToSign = '';\r\n public pdfToSign = '';\r\n public withLog?: boolean;\r\n public skipServerCheck?: boolean;\r\n\r\n public signerType?: SignerTypeEnum;\r\n public certificateCheck?: CertificateCheck;\r\n\r\n /** @deprecated */\r\n public checkFio?: string;\r\n /** @deprecated */\r\n public checkOgrn?: string;\r\n /** @deprecated */\r\n public checkOrganizationFullName?: string;\r\n /** @deprecated */\r\n public checkOrganizationShortName?: string;\r\n /** @deprecated */\r\n public checkInn?: string;\r\n\r\n downloadingPdf = false;\r\n\r\n constructor(private signProviderFactory: SignProviderFactory,\r\n private downloadService: DownloadService,\r\n private alertService: AlertService) {\r\n super();\r\n this.result = { result: false };\r\n }\r\n\r\n get disabled() {\r\n // todo как можно дизеблить кнопу\r\n return false;\r\n }\r\n\r\n get pdfViewUrl(): string {\r\n return this.pdfUrl ?\r\n `/signer/pdfjs/web/viewer.html?file=${encodeURIComponent(this.pdfUrl)}` : '';\r\n }\r\n\r\n ngOnInit(): void {\r\n this.downloadXml();\r\n }\r\n\r\n public ok() {\r\n\r\n if (!this.signType) {\r\n this.signType = 'xml';\r\n }\r\n\r\n let signData = this.xmlToSign;\r\n\r\n switch (this.signType) {\r\n case 'xml':\r\n signData = Base64.encode(this.xmlToSign);\r\n break;\r\n case 'pdf':\r\n signData = this.pdfToSign;\r\n break;\r\n case 'xmlts':\r\n signData = this.xmlToSign;\r\n break;\r\n }\r\n\r\n this.signProviderFactory.create(this.provider)\r\n .sign(signData, {\r\n skipServerCheck: this.skipServerCheck,\r\n withLog: this.withLog,\r\n\r\n certificateCheck: this.certificateCheck,\r\n\r\n checkFio: this.checkFio,\r\n checkOgrn: this.checkOgrn,\r\n checkOrganizationFullName: this.checkOrganizationFullName,\r\n checkOrganizationShortName: this.checkOrganizationShortName,\r\n checkInn: this.checkInn\r\n })\r\n .then((ok: SignedResultModel) => {\r\n this.processResult(ok);\r\n }).catch((error: any) => {\r\n this.processError(error);\r\n });\r\n }\r\n\r\n public cancel() {\r\n this.close();\r\n }\r\n\r\n private processResult(signResult: SignedResultModel): void {\r\n if (signResult.success) {\r\n signResult.pdfData = this.pdfToSign;\r\n signResult.xmlData = this.xmlToSign;\r\n this.result = { model: signResult, result: true };\r\n this.close();\r\n } else {\r\n this.alertService.showDialog({\r\n title: 'Ошибка проверки подписи',\r\n message: 'Подпись не валидна',\r\n color: DialogColor.red,\r\n type: DialogType.alert,\r\n okCallback: (ok) => {\r\n }\r\n });\r\n }\r\n }\r\n\r\n private processError(error: any): void {\r\n if (this.withLog) {\r\n console.error(error);\r\n }\r\n\r\n if (error) {\r\n this.alertService.showDialog({\r\n title: 'Ошибка проверки подписи',\r\n message: typeof (error) == 'string' ? error : JSON.stringify(error),\r\n color: DialogColor.red,\r\n type: DialogType.alert,\r\n okCallback: (ok) => {\r\n //\r\n }\r\n });\r\n }\r\n }\r\n\r\n private downloadXml(): void {\r\n if (!this.xmlUrl) {\r\n return;\r\n }\r\n\r\n if (this.withLog) {\r\n console.log('Downloading xml');\r\n }\r\n\r\n this.downloadService.xml(this.xmlUrl).subscribe(result => {\r\n if (this.withLog) {\r\n console.log('xmlToSign = ', result);\r\n }\r\n this.xmlToSign = result;\r\n this.downloadPdf();\r\n });\r\n }\r\n\r\n private downloadPdf(): void {\r\n if (!this.pdfUrl) {\r\n return;\r\n }\r\n\r\n if (this.withLog) {\r\n console.log('Downloading pdf');\r\n }\r\n\r\n this.downloadingPdf = true;\r\n this.downloadService.pdf(this.pdfUrl)\r\n .subscribe(result => {\r\n this.downloadingPdf = false;\r\n // todo подумать, как правильно читать файл\r\n // const blob = new Blob([result], {type: 'application/pdf'});\r\n const reader = new FileReader();\r\n reader.readAsDataURL(result);\r\n reader.onloadend = () => {\r\n let base64data = reader.result as string;\r\n base64data = base64data.replace('data:application/pdf;base64,', '');\r\n\r\n if (this.withLog) {\r\n console.log('pdfToSign = ', base64data);\r\n }\r\n this.pdfToSign = base64data;\r\n }\r\n }, () => {\r\n this.downloadingPdf = false;\r\n });\r\n }\r\n}\r\n","<div class=\"modal-content accent-head xl\">\r\n <div class=\"modal-header\">\r\n <div class=\"modal-title uppercase\">\r\n <h4 class=\"ng-binding\">{{title || 'Направление документа на подписание'}}</h4>\r\n </div>\r\n <span class=\"close close-click\" (click)=\"close()\">\r\n <svg width=\"14\" height=\"14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M13 1L1 13M1 1l12 12\" stroke=\"#3A3A3A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"modal-body text-center\">\r\n <div class=\"widget\">\r\n <my-tabs>\r\n <app-tab tabTitle=\"Визуализация документа\" *ngIf=\"pdfUrl\">\r\n <pre *ngIf=\"downloadingPdf\">\r\n Подождите, идет формирование документа\r\n </pre>\r\n <iframe *ngIf=\"!downloadingPdf\" [src]=\"pdfViewUrl | safeurl\"\r\n title=\"webviewer\" frameborder=\"0\" width=\"100%\" height=\"800\"></iframe>\r\n </app-tab>\r\n <app-tab tabTitle=\"Подписываемые данные\" *ngIf=\"xmlUrl\">\r\n <pre [innerText]=\"xmlToSign\"></pre>\r\n </app-tab>\r\n </my-tabs>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal-footer\">\r\n <div *ngIf=\"pdfUrl || xmlUrl || additionalPdfUrl\"\r\n class=\"modal-footer-item\">\r\n <a *ngIf=\"pdfUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"pdfUrl\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\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\"\r\n stroke=\"#282828\" stroke-width=\"1.5\"/>\r\n </svg>\r\n <span>Скачать документ</span>\r\n </a>\r\n <a *ngIf=\"xmlUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"xmlUrl\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6 16L2 12L6 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M18 16L22 12L18 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"/>\r\n <path d=\"M7.56689 19.1782L15.5669 5.32182\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span>Скачать XML-данные</span>\r\n </a>\r\n <a *ngIf=\"additionalPdfUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"additionalPdfUrl\">\r\n <svg width=\"24\" height=\"20\" viewBox=\"0 0 24 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.21404 14.2776C7.50693 13.9847 7.98181 13.9847 8.2747 14.2776L12.2747 18.2776C12.5676 18.5705 12.5676 19.0454 12.2747 19.3383C11.9818 19.6312 11.5069 19.6312 11.214 19.3383L7.21404 15.3383C6.92115 15.0454 6.92115 14.5705 7.21404 14.2776Z\" fill=\"#33373C\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.2747 14.2776C16.5676 14.5705 16.5676 15.0454 16.2747 15.3383L12.2747 19.3383C11.9818 19.6312 11.5069 19.6312 11.214 19.3383C10.9211 19.0454 10.9211 18.5705 11.214 18.2776L15.214 14.2776C15.5069 13.9847 15.9818 13.9847 16.2747 14.2776Z\" fill=\"#33373C\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M11.7444 9.05796C12.1586 9.05796 12.4944 9.39374 12.4944 9.80796V18.808C12.4944 19.2222 12.1586 19.558 11.7444 19.558C11.3302 19.558 10.9944 19.2222 10.9944 18.808V9.80796C10.9944 9.39374 11.3302 9.05796 11.7444 9.05796Z\" fill=\"#33373C\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0.978206 4.66339C2.62297 1.48351 6.12559 -0.37405 9.73462 0.063407C13.146 0.476912 15.9708 2.84408 17.0094 6.05796H17.7444C20.2757 6.05796 22.4565 7.67267 23.2559 10.0708C23.2593 10.0811 23.2625 10.0915 23.2655 10.1019C23.9483 12.4917 23.1511 15.0227 21.0835 16.516C20.7477 16.7585 20.2789 16.6829 20.0364 16.3471C19.7938 16.0113 19.8695 15.5425 20.2053 15.2999C21.7333 14.1964 22.337 12.335 21.8277 10.5297C21.223 8.73647 19.6077 7.55796 17.7444 7.55796H16.4444C16.1002 7.55796 15.8002 7.32373 15.7168 6.98986C14.9919 4.0904 12.5447 1.915 9.55412 1.55251C6.56314 1.18997 3.66577 2.7324 2.31053 5.35252C0.950478 7.98196 1.3145 11.2478 3.3074 13.5125C3.58105 13.8234 3.5508 14.2974 3.23984 14.571C2.92888 14.8446 2.45498 14.8144 2.18133 14.5034C-0.225765 11.7681 -0.66174 7.83395 0.978206 4.66339Z\" fill=\"#33373C\"/>\r\n </svg>\r\n <span>{{additionalPdfUrlTitle}}</span>\r\n </a>\r\n </div>\r\n <div class=\"modal-footer-item\">\r\n <mrx-button\r\n [customClasses]=\"'mr-3'\"\r\n [type]=\"'secondary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"cancel()\"\r\n >{{cancelLabel || 'Отменить'}}</mrx-button>\r\n <mrx-button\r\n [type]=\"'primary'\"\r\n [size]=\"'medium'\"\r\n [disabled]=\"disabled\"\r\n (click)=\"ok()\"\r\n >{{okLabel || 'Подписать'}}</mrx-button>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { SimpleModalService } from 'ngx-simple-modal';\r\nimport { SignedResultModel, SignRequestModel } from '../models';\r\nimport { SignModalComponent } from '../components/sign-modal/sign-modal.component';\r\nimport { TmpTokenService, Utilities } from 'myrtex-mf-ui-composite';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SignService {\r\n\r\n constructor(private simpleModalService: SimpleModalService, private tmpTokenService: TmpTokenService) {\r\n }\r\n\r\n public sign(request: SignRequestModel,\r\n ok: (result?: SignedResultModel) => void,\r\n cancel?: () => void): void {\r\n\r\n const baseUrl = Utilities.commonPart(request.xmlUrl, request.pdfUrl);\r\n\r\n this.tmpTokenService.generate(baseUrl).subscribe(token => {\r\n\r\n const ph = `${window.location.protocol}//${window.location.host}`;\r\n if (request.xmlUrl) {\r\n request.xmlUrl = ph + Utilities.updateQueryStringParameter(request.xmlUrl, 'authToken', token);\r\n }\r\n\r\n if (request.pdfUrl) {\r\n request.pdfUrl = ph + Utilities.updateQueryStringParameter(request.pdfUrl, 'authToken', token);\r\n }\r\n\r\n this.simpleModalService.addModal(SignModalComponent, request, { wrapperClass: 'in xl' })\r\n .subscribe(result => {\r\n if (result && result.result) {\r\n ok(result.model);\r\n } else {\r\n if (cancel) {\r\n cancel();\r\n }\r\n }\r\n });\r\n\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { SignModalComponent } from './components/sign-modal/sign-modal.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MyrtexMfUiCompositeModule } from 'myrtex-mf-ui-composite';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { SignService } from './services/public.sign.service';\r\nimport { DownloadService } from './services/download.service';\r\nimport { CertificateSelectComponent } from './components/certificate-select/certificate-select.component';\r\nimport { CryptoApiService } from './services/crypto.api.service';\r\nimport { SignProviderFactory } from './providers/signprovider.factory';\r\nimport { CryptoProvider } from './providers/crypto.provider';\r\nimport { CryptoJinnProvider } from './providers/cryptojinn.provider';\r\nimport { CryptoTsProvider } from './providers/cryptots.provider';\r\nimport { EmptyProvider } from './providers/empty.provider';\r\nimport { ButtonModule } from 'myrtex-mf-ui';\r\n\r\n@NgModule({\r\n declarations: [\r\n SignModalComponent,\r\n CertificateSelectComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n HttpClientModule,\r\n NgSelectModule,\r\n MyrtexMfUiCompositeModule,\r\n ButtonModule,\r\n ],\r\n exports: [\r\n SignModalComponent\r\n ],\r\n providers: [\r\n SignProviderFactory,\r\n CryptoProvider,\r\n CryptoJinnProvider,\r\n CryptoTsProvider,\r\n EmptyProvider,\r\n\r\n CryptoApiService,\r\n SignService,\r\n DownloadService\r\n ]\r\n})\r\nexport class MyrtexSignerModule { }\r\n","/*\r\n * Public API Surface of myrtex-mf-signer\r\n */\r\n// enums\r\nexport * from './lib/enums/index';\r\n\r\n// models\r\nexport * from './lib/models/index';\r\n\r\n// components\r\nexport * from './lib/components/sign-modal/sign-modal.component';\r\n\r\n// modules\r\nexport * from './lib/myrtex-signer.module';\r\n\r\n// services\r\nexport * from './lib/services/public.sign.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CertificateAdjuster","i1","i2.CryptoService","i3.CryptoApiService","i1.CryptoProvider","i2.CryptoJinnProvider","i3.CryptoTsProvider","i4.EmptyProvider","i1.SignProviderFactory","i2.DownloadService","i5","i2"],"mappings":"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"}
@@ -756,7 +756,6 @@ class SignModalComponent extends SimpleModalComponent {
756
756
  }
757
757
  ngOnInit() {
758
758
  this.downloadXml();
759
- this.downloadPdf();
760
759
  }
761
760
  ok() {
762
761
  if (!this.signType) {
@@ -840,6 +839,7 @@ class SignModalComponent extends SimpleModalComponent {
840
839
  console.log('xmlToSign = ', result);
841
840
  }
842
841
  this.xmlToSign = result;
842
+ this.downloadPdf();
843
843
  });
844
844
  }
845
845
  downloadPdf() {
@@ -1 +1 @@
1
- {"version":3,"file":"myrtex-mf-signer.mjs","sources":["../../../projects/myrtex-mf-signer/src/lib/enums/signer-type.enum.ts","../../../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/helpers/strippingCharacters.ts","../../../projects/myrtex-mf-signer/src/lib/helpers/transformText.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 enum SignerTypeEnum {\r\n Unknown = 0,\r\n\r\n FL = 1,\r\n\r\n UL = 2,\r\n\r\n IP = 3,\r\n}\r\n","export class CryptoBaseService {\r\n\r\n public available = false;\r\n options: any = {};\r\n\r\n init(): Promise<CryptoBaseService> {\r\n return Promise.reject('Not implemented');\r\n };\r\n\r\n auth(): Promise<boolean> {\r\n return Promise.resolve(true);\r\n };\r\n}\r\n","class CertificateAdjuster {\r\n extract(s: string, name: string | string[]): string {\r\n if (typeof (name) === 'string') {\r\n name = [name];\r\n }\r\n\r\n for (var i = 0; i < name.length; i++) {\r\n const n = name[i];\r\n const re = new RegExp(n + '\\\\s*=\\\\s*(?<value>[^=]+)(?:[,\\\\\\\\/]|$)', 'g');\r\n const m = re.exec(s);\r\n if (m !== null && m.groups !== undefined && m.groups !== null) {\r\n let r = m.groups.value;\r\n r = r.replace(/^\\\"?/, '');\r\n r = r.replace(/\\\"$/, '');\r\n r = r.replace(/\\\"\\\"/g, '\"');\r\n return r;\r\n }\r\n }\r\n\r\n return '';\r\n };\r\n\r\n print2Digit(digit: number) {\r\n return (digit < 10) ? '0' + digit : digit;\r\n };\r\n\r\n getCertDate(paramDate: any) {\r\n let certDate = new Date(paramDate);\r\n return this.print2Digit(certDate.getUTCDate()) + '.' + this.print2Digit(certDate.getMonth() + 1) +\r\n '.' + certDate.getFullYear() + ' ' +\r\n this.print2Digit(certDate.getUTCHours()) + ':' + this.print2Digit(certDate.getUTCMinutes()) +\r\n ':' + this.print2Digit(certDate.getUTCSeconds());\r\n };\r\n\r\n getCertFio(certSubjectName: string) {\r\n const lastName = this.extract(certSubjectName, 'SN');\r\n const name = this.extract(certSubjectName, 'G');\r\n\r\n return lastName + ' ' + name;\r\n };\r\n\r\n getCertPost(certSubjectName: string) {\r\n return this.extract(certSubjectName, 'T');\r\n };\r\n\r\n getCertOgrn(certSubjectName: string) {\r\n return this.extract(certSubjectName, ['OGRN', 'ОГРН', 'ОГРНИП','OGRNIP', '1.2.643.100.1']);\r\n };\r\n\r\n getCertOrg(certSubjectName: string) {\r\n return this.extract(certSubjectName, 'O');\r\n };\r\n\r\n getCertInn(certSubjectName: string) {\r\n return this.extract(certSubjectName, ['INN', 'ИНН', '1.2.643.3.131.1.1']);\r\n };\r\n\r\n getCertSnils(certSubjectName: string) {\r\n return this.extract(certSubjectName, ['SNILS', 'СНИЛС', '1.2.643.100.3']);\r\n };\r\n\r\n getCertName(certSubjectName: string) {\r\n return this.extract(certSubjectName, 'CN');\r\n };\r\n\r\n getIssuer(certIssuerName: string) {\r\n return this.extract(certIssuerName, 'CN');\r\n };\r\n\r\n getCertInfoString(certSubjectName: string, certFromDate: any) {\r\n return this.extract(certSubjectName, 'CN') + '; Выдан: ' + this.getCertDate(certFromDate);\r\n };\r\n}\r\n\r\nconst instance = new CertificateAdjuster();\r\nexport { instance as CertificateAdjuster };","export const strippingCharacters = (text?: string): string => {\r\n if (!text) {\r\n return ''\r\n }\r\n return text.replace(/\\s+|\\.|,|!|\"|«|»|<|>|'|:|;|-|\\\\(|\\\\)/g, '').toLowerCase()\r\n}\r\n","export const transformText = (text?: string): string => {\r\n if (!text) {\r\n return '';\r\n }\r\n text = text.toLowerCase().trim();\r\n return text.replace(/ё/g, 'е').replace(/й/g, 'и');\r\n}\r\n","import {\r\n Async,\r\n CADESCOM_STORE_LOCATION,\r\n CAPICOM_STORE_NAMES,\r\n CAPICOM_STORE_OPEN_MODE,\r\n ProgIds\r\n} from 'cadesplugin-types';\r\nimport { CertificateCheck, CertificateModel } from '../../models';\r\n// @ts-ignore\r\nimport getCadesplugin from 'async-cadesplugin';\r\nimport { CryptoBaseService } from '../crypto.base.service';\r\nimport { CertificateAdjuster } from '../certificate.adjuster';\r\nimport { SignerTypeEnum } from '../../enums/signer-type.enum';\r\nimport { strippingCharacters } from '../../helpers/strippingCharacters';\r\nimport { transformText } from '../../helpers/transformText';\r\n\r\ndeclare global {\r\n interface Window {\r\n cadesplugin: Async.IWebClassFactory;\r\n CRYPTO_SKIP_CHECK?: boolean;\r\n }\r\n}\r\n\r\ninterface CertificateFilter {\r\n certificateCheck?: CertificateCheck;\r\n}\r\n\r\ninterface Certificate {\r\n id: number;\r\n certificate: any;\r\n subjectName: string;\r\n name: string;\r\n cn: string;\r\n fio: string;\r\n post: string;\r\n ogrn: string;\r\n organization: string;\r\n inn: string;\r\n validFromDate: string;\r\n validToDate: string;\r\n thumbprint: string;\r\n issuerName: string;\r\n serialNumber: string;\r\n isExpired: boolean;\r\n snils: string;\r\n}\r\n\r\nexport class CryptoProBaseService extends CryptoBaseService {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async init(): Promise<CryptoBaseService> {\r\n await getCadesplugin();\r\n return Promise.resolve(this);\r\n };\r\n\r\n public async getCertificates(filter?: CertificateFilter): Promise<CertificateModel[]> {\r\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\r\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\r\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\r\n\r\n let storeCerts = await store.Certificates;\r\n let count = await storeCerts.Count;\r\n let certificates: Array<CertificateModel> = [];\r\n\r\n for (let i = 1; i <= count; i++) {\r\n let cert = await storeCerts.Item(i);\r\n let validFromDate = new Date(await cert.ValidFromDate);\r\n let validToDate = new Date(await cert.ValidToDate);\r\n const subjectName = await cert.SubjectName;\r\n\r\n const certificate: Certificate = {\r\n id: i,\r\n certificate: cert,\r\n subjectName: subjectName,\r\n name: CertificateAdjuster.getCertInfoString(subjectName, validFromDate),\r\n cn: CertificateAdjuster.getCertName(subjectName),\r\n fio: CertificateAdjuster.getCertFio(subjectName),\r\n post: CertificateAdjuster.getCertPost(subjectName),\r\n ogrn: CertificateAdjuster.getCertOgrn(subjectName),\r\n snils: CertificateAdjuster.getCertSnils(subjectName),\r\n organization: CertificateAdjuster.getCertOrg(subjectName),\r\n inn: CertificateAdjuster.getCertInn(subjectName),\r\n validFromDate: validFromDate.toLocaleDateString('ru-RU'),\r\n validToDate: validToDate.toLocaleDateString('ru-RU'),\r\n thumbprint: await cert.Thumbprint,\r\n issuerName: await cert.IssuerName,\r\n serialNumber: await cert.SerialNumber,\r\n isExpired: validToDate < new Date()\r\n };\r\n\r\n if (certificate.isExpired) {\r\n continue;\r\n }\r\n\r\n let filterOk = true;\r\n if (window.CRYPTO_SKIP_CHECK !== true) {\r\n if (filter?.certificateCheck?.signerType === SignerTypeEnum.FL) {\r\n filterOk = !certificate.ogrn;\r\n } else if ([SignerTypeEnum.UL, SignerTypeEnum.IP]\r\n .indexOf(filter?.certificateCheck?.signerType || SignerTypeEnum.Unknown) > -1) {\r\n if (filterOk) {\r\n const organization = certificate.organization || certificate.cn;\r\n const orgIsValid = filter?.certificateCheck?.ogrn === certificate.ogrn;\r\n if (!orgIsValid) {\r\n if (filter?.certificateCheck?.isChief) {\r\n filterOk = false;\r\n } else {\r\n const orgNameIsValid = (filter?.certificateCheck?.fullName &&\r\n strippingCharacters(filter?.certificateCheck?.fullName)\r\n .indexOf(strippingCharacters(organization)) > -1)\r\n || (filter?.certificateCheck?.shortName &&\r\n strippingCharacters(filter?.certificateCheck?.shortName)\r\n .indexOf(strippingCharacters(organization)) > -1);\r\n if (!orgNameIsValid) {\r\n filterOk = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (filterOk && filter?.certificateCheck?.signerType) {\r\n const fio = transformText(certificate.fio);\r\n const snils = certificate.snils.replace(/[\\s-]+/g, '');\r\n const snilsCert = filter?.certificateCheck?.snils?.replace(/[\\s-]+/g, '');\r\n\r\n if ((filter?.certificateCheck?.fio ? transformText(filter.certificateCheck.fio) : null) !== transformText(fio) ||\r\n snilsCert !== snils) {\r\n filterOk = false;\r\n }\r\n }\r\n }\r\n\r\n if (filterOk) {\r\n certificates.push(certificate);\r\n }\r\n }\r\n\r\n await store.Close();\r\n return certificates;\r\n }\r\n}\r\n","import {\r\n Async,\r\n CADESCOM_CADES_TYPE,\r\n CADESCOM_CONTENT_ENCODING_TYPE,\r\n CADESCOM_STORE_LOCATION, CAPICOM_STORE_NAMES, CAPICOM_STORE_OPEN_MODE,\r\n ProgIds\r\n} from 'cadesplugin-types';\r\nimport { CryptoProBaseService } from './crypto.pro.base.service';\r\n\r\nexport class CryptoProAsyncService extends CryptoProBaseService {\r\n\r\n public static readonly key = 'cryptoproasync';\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async signXml(certificate: any, data: string): Promise<string> {\r\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\r\n await signer.propset_Certificate(certificate);\r\n\r\n let timestamp_service_url = 'http://qs.cryptopro.ru/tsp/tsp.srf';\r\n await signer.propset_TSAAddress(timestamp_service_url);\r\n\r\n let signed: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\r\n\r\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\r\n await signed.propset_Content(encodedXml);\r\n\r\n let cades_xml_signature_type_enveloped = 80;\r\n await signed.propset_SignatureType(cades_xml_signature_type_enveloped);\r\n\r\n const signedData = await signed.Sign(signer);\r\n\r\n return signedData;\r\n }\r\n\r\n public async signBase64(certificate: any, data: string, detached: boolean = false): Promise<string> {\r\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\r\n await signer.propset_Certificate(certificate);\r\n\r\n let signed: Async.ICPSignedData5 = await window.cadesplugin.CreateObjectAsync(ProgIds.CadesSignedData);\r\n\r\n await signed.propset_ContentEncoding(CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY);\r\n await signed.propset_Content(data);\r\n\r\n const signedData = await signed.SignCades(signer, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, detached);\r\n\r\n return signedData;\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { SimpleModalComponent } from 'ngx-simple-modal';\r\nimport { CertificateModel } from '../../models';\r\n\r\nexport interface CertificateSelectModel {\r\n certificates: CertificateModel[];\r\n}\r\n\r\nexport interface CertificateSelectResultModel {\r\n selected?: CertificateModel;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-certificate-select',\r\n templateUrl: './certificate-select.component.html',\r\n styleUrls: ['./certificate-select.component.css']\r\n})\r\nexport class CertificateSelectComponent extends SimpleModalComponent<CertificateSelectModel, CertificateSelectResultModel>\r\n implements CertificateSelectModel {\r\n\r\n certificates: CertificateModel[] = [];\r\n\r\n constructor() {\r\n super();\r\n this.result = {};\r\n }\r\n\r\n ok(cert: CertificateModel) {\r\n this.result = {selected: cert};\r\n this.close();\r\n }\r\n}\r\n","<div class=\"modal-content open accent-head certificate\">\r\n <div class=\"modal-header\">\r\n <div class=\"modal-title\" [innerHTML]=\"'Выберите сертификат'\">\r\n </div>\r\n <span class='close close-click' (click)=\"close()\">\r\n <svg width='14' height='14' fill='none' xmlns='http://www.w3.org/2000/svg'>\r\n <path d='M13 1L1 13M1 1l12 12' stroke='#3A3A3A' stroke-width='1.5' stroke-linecap='round'\r\n stroke-linejoin='round' />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"modal-body text-center\">\r\n\r\n <div class=\"modal-body-other\">\r\n <div *ngFor=\"let cert of certificates\">\r\n <div class=\"modal-body-info\">\r\n <div class=\"modal-body-info__item\">\r\n <span class=\"text\">\r\n Владелец:\r\n </span>\r\n <span class=\"text\">\r\n {{cert.cn}}<br/>\r\n {{cert.fio}}<span *ngIf=\"cert.post\">, {{cert.post}}</span>\r\n </span>\r\n </div>\r\n <div class=\"modal-body-info__item\">\r\n <span class=\"text\">\r\n Срок действия:\r\n </span>\r\n <span class=\"text\">\r\n {{cert.validFromDate}} - {{cert.validToDate}}\r\n </span>\r\n </div>\r\n <div class=\"modal-body-info__item\">\r\n <span class=\"text hash\">\r\n {{cert.thumbprint}} {{cert.isExpired ? \"(истек)\" : \"\"}}\r\n </span>\r\n </div>\r\n <button\r\n (click)=\"ok(cert)\"\r\n [disabled]=\"cert.isExpired\"\r\n class=\"btn btn-md\">Создать подпись</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n </div>\r\n</div>","import {\r\n Async,\r\n CADESCOM_STORE_LOCATION, CADESCOM_XML_SIGNATURE_TYPE,\r\n CAPICOM_STORE_NAMES,\r\n CAPICOM_STORE_OPEN_MODE,\r\n ProgIds\r\n} from 'cadesplugin-types';\r\nimport { CryptoProBaseService } from './crypto.pro.base.service';\r\n\r\ndeclare global {\r\n interface Window {\r\n cadesplugin: Async.IWebClassFactory;\r\n CRYPTO_SKIP_CHECK?: boolean;\r\n }\r\n}\r\n\r\nexport class CryptoProTsService extends CryptoProBaseService {\r\n\r\n public static readonly key = 'cryptoprots';\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n private get TIMESTAMP_SERVICE_URL(): string {\r\n return 'http://qs.cryptopro.ru/tsp/tsp.srf';\r\n }\r\n\r\n public async sign(certificate: any, data: string): Promise<string> {\r\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\r\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\r\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\r\n\r\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\r\n await signer.propset_Certificate(certificate);\r\n\r\n let signedXML: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\r\n\r\n let publicKey: Async.IPublicKey = await certificate.PublicKey();\r\n let algorithm: Async.IOID = await publicKey.Algorithm;\r\n let algorithmOid = await algorithm.Value;\r\n\r\n let { signMethod, digestMethod } = this.getSigningMethods(algorithmOid);\r\n\r\n //await signer.propset_Options(api.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN);\r\n\r\n await signer.propset_TSAAddress(this.TIMESTAMP_SERVICE_URL);\r\n\r\n if (data) {\r\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\r\n await signedXML.propset_Content(encodedXml);\r\n }\r\n\r\n await signedXML.propset_SignatureType(CADESCOM_XML_SIGNATURE_TYPE.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED);\r\n await signedXML.propset_SignatureMethod(signMethod);\r\n await signedXML.propset_DigestMethod(digestMethod);\r\n\r\n let signature = await signedXML.Sign(signer);\r\n\r\n await store.Close();\r\n\r\n return signature;\r\n }\r\n\r\n private getSigningMethods(algorithmOid: string): { signMethod: string, digestMethod: string } {\r\n let signMethod = '', digestMethod = '';\r\n\r\n if (algorithmOid == '1.2.643.7.1.1.1.1') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 256 бит\r\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\r\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\r\n } else if (algorithmOid == '1.2.643.7.1.1.1.2') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 512 бит\r\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512';\r\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512';\r\n } else if (algorithmOid == '1.2.643.2.2.19') { // алгоритм ГОСТ Р 34.10-2001\r\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\r\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\r\n }\r\n\r\n return { signMethod, digestMethod };\r\n }\r\n}\r\n","import { CryptoProAsyncService } from './cryptopro/crypto.pro.async.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { CryptoBaseService } from './crypto.base.service';\r\nimport { CryptoProTsService } from './cryptopro/crypto.pro.ts.service';\r\n\r\nexport interface CryptoHandler {\r\n key: string;\r\n name: string;\r\n service: CryptoBaseService;\r\n sign: boolean;\r\n default: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoService {\r\n\r\n handlers: Map<string, CryptoHandler> = new Map<string, CryptoHandler>();\r\n selectPromise: any = null;\r\n private _initialized = false;\r\n private _withLog = false;\r\n\r\n public async startUp(withLog? : boolean): Promise<void> {\r\n this._withLog = !!withLog;\r\n\r\n if (!this._initialized) {\r\n this.registerHandler({\r\n key: CryptoProAsyncService.key,\r\n name: 'КриптоПро',\r\n service: new CryptoProAsyncService(),\r\n sign: true,\r\n default: true\r\n });\r\n this.registerHandler({\r\n key: CryptoProTsService.key,\r\n name: 'КриптоПро',\r\n service: new CryptoProTsService(),\r\n sign: true,\r\n default: false\r\n });\r\n await this.init();\r\n this._initialized = true;\r\n }\r\n this.log('Handlers init completed');\r\n return Promise.resolve();\r\n }\r\n\r\n public registerHandler(options: CryptoHandler) {\r\n this.log('Register handler', options);\r\n\r\n options.disabled = false;\r\n this.handlers.set(options.key, options);\r\n };\r\n\r\n public disableHandler(key: string): void {\r\n const handler = this.handlers.get(key);\r\n if (handler) {\r\n handler.disabled = true;\r\n }\r\n };\r\n\r\n public getHandler(key: string): Promise<CryptoHandler> {\r\n const handler = this.getActiveHandlers()\r\n .find(x => x.key == key);\r\n\r\n if (handler) {\r\n return Promise.resolve(handler);\r\n }\r\n return Promise.reject(`Not found ${key} handler`);\r\n };\r\n\r\n public getDefaultHandler() : Promise<CryptoHandler> {\r\n const handler = this.getActiveHandlers()\r\n .find(x => x.default);\r\n\r\n if (handler) {\r\n return Promise.resolve(handler);\r\n }\r\n return Promise.reject(`Not found default handler`);\r\n };\r\n\r\n public getService<T extends CryptoBaseService>(key: string): Promise<T> {\r\n const handler = this.handlers.get(key);\r\n if (handler) {\r\n return Promise.resolve(handler.service as T);\r\n }\r\n return Promise.reject(`Not found ${key}`);\r\n };\r\n\r\n public getActiveHandlers(): Array<CryptoHandler> {\r\n const active = new Array<CryptoHandler>();\r\n this.handlers.forEach(s => {\r\n if (!s.disabled) {\r\n active.push(s);\r\n }\r\n });\r\n return active;\r\n };\r\n\r\n private log(...args: any[]) {\r\n if (this._withLog) {\r\n console.log(args);\r\n }\r\n };\r\n\r\n private async init(): Promise<any> {\r\n this.log('Initialize handlers');\r\n\r\n const promises: Array<Promise<any>> = [];\r\n this.handlers.forEach(handler => {\r\n handler.service.available = false;\r\n\r\n this.log('Initialize ' + handler.name);\r\n\r\n const promise = handler.service.init().then((result) => {\r\n result.available = true;\r\n this.log('Handler init success', result);\r\n }).catch(reason => {\r\n this.log('Handler init fail', reason);\r\n });\r\n\r\n promises.push(promise);\r\n });\r\n\r\n return await Promise.all(promises);\r\n };\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\r\nimport { SignValidateResponse } from '../models';\r\nimport { VerifyCertModel } from '../models/internal/verify.cert.model';\r\nimport { VerifyCertResponseModel } from '../models/internal/verify.cert.response.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoApiService extends EndpointBaseService {\r\n\r\n private urlCrypto = '/cryptopro/api/v1';\r\n private urlSigner = '/signer/api/v1';\r\n\r\n constructor(protected http: HttpClient, protected injector: Injector) {\r\n super(http, injector);\r\n }\r\n\r\n public verify(data: VerifyCertModel): Observable<VerifyCertResponseModel> {\r\n return this.http.post<VerifyCertResponseModel>(`${this.urlCrypto}/verify`, data);\r\n }\r\n\r\n public validate(data: string): Observable<SignValidateResponse> {\r\n return this.http.post<SignValidateResponse>(`${this.urlSigner}/jinn/validate`, {data});\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Base64 } from 'js-base64';\r\nimport { SimpleModalService } from 'ngx-simple-modal';\r\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\r\nimport { CryptoService } from '../services/crypto.service';\r\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\r\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\r\nimport { CryptoApiService } from '../services/crypto.api.service';\r\nimport { SignedResultModel } from '../models';\r\nimport { strippingCharacters } from '../helpers/strippingCharacters';\r\nimport { Async } from 'cadesplugin-types';\r\n\r\ndeclare global {\r\n interface Window {\r\n cadesplugin: Async.IWebClassFactory;\r\n CRYPTO_SKIP_CHECK?: boolean;\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoProvider implements ISignProvider {\r\n\r\n constructor(private simpleModalService: SimpleModalService,\r\n private cryptoService: CryptoService,\r\n private cryptoApiService: CryptoApiService) {\r\n }\r\n\r\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\r\n const withLog = options?.withLog;\r\n await this.cryptoService.startUp(withLog);\r\n\r\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\r\n const list = await service.getCertificates({\r\n certificateCheck: options?.certificateCheck\r\n });\r\n\r\n if (list.length === 0) {\r\n return Promise.reject('Отсутствует подходящий сертификат');\r\n }\r\n\r\n const modalResult = await this.simpleModalService\r\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\r\n\r\n if (!modalResult.selected) {\r\n if (withLog) {\r\n console.log('Сертификат не выбран, отмена');\r\n }\r\n return Promise.reject();\r\n }\r\n\r\n let certificateFail = 0;\r\n if (window.CRYPTO_SKIP_CHECK !== true && !options?.certificateCheck) {\r\n /** @deprecated */\r\n if (options?.checkFio &&\r\n modalResult.selected.fio.toLowerCase() !== options?.checkFio.toLowerCase()) {\r\n certificateFail = 1;\r\n }\r\n\r\n if (options?.checkOrganizationFullName || options?.checkOrganizationShortName) {\r\n let organization = modalResult.selected.organization;\r\n\r\n if (!organization) {\r\n organization = modalResult.selected.cn;\r\n }\r\n\r\n if (organization) {\r\n const orgIsValid = (options?.checkOrganizationFullName &&\r\n strippingCharacters(organization) == strippingCharacters(options?.checkOrganizationFullName))\r\n || (options?.checkOrganizationShortName &&\r\n strippingCharacters(organization) == strippingCharacters(options?.checkOrganizationShortName));\r\n if (!orgIsValid) {\r\n certificateFail = 2;\r\n }\r\n } else {\r\n certificateFail = 2;\r\n }\r\n }\r\n }\r\n\r\n if (certificateFail > 0) {\r\n return Promise.reject(\r\n certificateFail == 1 ?\r\n 'Данные лица, подписывающего заявку не совпадают с данными усиленной квалифицированной подписи.' :\r\n certificateFail === 3 ? 'Отсутствует активный КриптоПровайдер (не установлен либо недоступен плагин). ' +\r\n 'Чтобы подписать, установите плагин КриптоПро и проверьте наличие сертификата' :\r\n 'Данные организации не совпадают с данными усиленной квалифицированной подписи. ' +\r\n 'Убедитесь, что вы используете сертификат, выданные от организации.',\r\n );\r\n }\r\n\r\n if (withLog) {\r\n console.log('Подписываемые данные', data);\r\n }\r\n\r\n const signedData = await service.signBase64(modalResult.selected.certificate, data, true);\r\n\r\n if (withLog) {\r\n console.log('Подписанные данные', signedData);\r\n }\r\n\r\n if (!options?.skipServerCheck) {\r\n const verifyResult = await this.cryptoApiService.verify({\r\n data: data,\r\n signature: Base64.encode(signedData),\r\n detached: true\r\n }).toPromise();\r\n\r\n return {\r\n data,\r\n success: verifyResult.success,\r\n signed: signedData,\r\n certificate: modalResult.selected,\r\n };\r\n } else {\r\n return {\r\n data,\r\n success: true,\r\n signed: signedData,\r\n certificate: modalResult.selected,\r\n };\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SimpleModalService } from 'ngx-simple-modal';\r\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\r\nimport { CryptoService } from '../services/crypto.service';\r\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\r\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\r\nimport { CryptoApiService } from '../services/crypto.api.service';\r\nimport { SignedResultModel } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoJinnProvider implements ISignProvider {\r\n\r\n constructor(private simpleModalService: SimpleModalService,\r\n private cryptoService: CryptoService,\r\n private cryptoApiService: CryptoApiService) {\r\n }\r\n\r\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\r\n const withLog = options?.withLog;\r\n\r\n await this.cryptoService.startUp(withLog);\r\n\r\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\r\n\r\n const list = await service.getCertificates({\r\n certificateCheck: options?.certificateCheck\r\n });\r\n\r\n if (list.length === 0) {\r\n return Promise.reject('Отсутствует подходящий сертификат');\r\n }\r\n\r\n const modalResult = await this.simpleModalService\r\n .addModal(CertificateSelectComponent, { certificates: list }).toPromise();\r\n\r\n if (!modalResult.selected) {\r\n if (withLog) {\r\n console.log('Сертификат не выбран, отмена');\r\n }\r\n return Promise.reject();\r\n }\r\n\r\n if (withLog) {\r\n console.log('Подписываемые данные', data);\r\n }\r\n\r\n const signedData = await service.signXml(modalResult.selected.certificate, data);\r\n\r\n if (withLog) {\r\n console.log('Подписанные данные', signedData);\r\n }\r\n\r\n if (!options?.skipServerCheck) {\r\n const verifyResult = await this.cryptoApiService.validate(signedData).toPromise();\r\n\r\n return {\r\n data: signedData,\r\n success: verifyResult.success,\r\n certificate: modalResult.selected,\r\n validateResult: verifyResult.validateResult\r\n };\r\n } else {\r\n return {\r\n data: signedData,\r\n success: true,\r\n certificate: modalResult.selected\r\n };\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\r\nimport { SimpleModalService } from 'ngx-simple-modal';\r\nimport { CryptoService } from '../services/crypto.service';\r\nimport { CryptoApiService } from '../services/crypto.api.service';\r\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\r\nimport { CryptoProTsService } from '../services/cryptopro/crypto.pro.ts.service';\r\nimport { SignedResultModel } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoTsProvider implements ISignProvider {\r\n\r\n constructor(private simpleModalService: SimpleModalService,\r\n private cryptoService: CryptoService,\r\n private cryptoApiService: CryptoApiService) {\r\n }\r\n\r\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\r\n const withLog = options?.withLog;\r\n await this.cryptoService.startUp(withLog);\r\n const service = await this.cryptoService.getService<CryptoProTsService>(CryptoProTsService.key);\r\n const list = await service.getCertificates();\r\n const modalResult = await this.simpleModalService\r\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\r\n\r\n if (!modalResult.selected) {\r\n if (withLog) {\r\n console.log('No certificate selected, rejecting');\r\n }\r\n return Promise.reject();\r\n }\r\n\r\n const signedData = await service.sign(modalResult.selected.certificate, data);\r\n\r\n if (!options?.skipServerCheck) {\r\n const validateResult = await this.cryptoApiService.validate(signedData).toPromise();\r\n\r\n return {\r\n data,\r\n signed: signedData,\r\n success: validateResult.success,\r\n validateResult: validateResult.validateResult,\r\n certificate: modalResult.selected,\r\n };\r\n } else {\r\n return {\r\n data,\r\n signed: signedData,\r\n success: true,\r\n validateResult: '',\r\n certificate: modalResult.selected,\r\n };\r\n }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { ISignProvider, SignOptions } from \"./interfaces/isign.provider\";\r\nimport { SignedResultModel } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EmptyProvider implements ISignProvider {\r\n\r\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\r\n return Promise.resolve({\r\n data: data,\r\n success: true\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CryptoProvider } from './crypto.provider';\r\nimport { CryptoJinnProvider } from './cryptojinn.provider';\r\nimport { EmptyProvider } from './empty.provider';\r\nimport { CryptoTsProvider } from './cryptots.provider';\r\nimport { SignProviderType } from '../models';\r\nimport { ISignProvider } from './interfaces/isign.provider';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SignProviderFactory {\r\n constructor(\r\n protected cryptoProvider: CryptoProvider,\r\n protected cryptoJinnProvider: CryptoJinnProvider,\r\n protected cryptoTsProvider: CryptoTsProvider,\r\n protected emptyProvider: EmptyProvider) {\r\n }\r\n\r\n create(providerType: SignProviderType): ISignProvider {\r\n switch (providerType) {\r\n case 'crypto':\r\n return this.cryptoProvider;\r\n case 'cryptojinn':\r\n return this.cryptoJinnProvider;\r\n case 'cryptots':\r\n return this.cryptoTsProvider;\r\n case 'empty':\r\n return this.emptyProvider;\r\n }\r\n }\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DownloadService extends EndpointBaseService {\r\n\r\n private url = '/signer/api/v1/download';\r\n\r\n constructor(protected http: HttpClient, protected injector: Injector) {\r\n super(http, injector);\r\n }\r\n\r\n public xml(url: string): Observable<any> {\r\n return this.http.get(url,\r\n {\r\n headers: new HttpHeaders()\r\n .set('Content-Type', 'text/xml'),\r\n responseType: 'text'\r\n });\r\n }\r\n\r\n public pdf(url: string): Observable<any> {\r\n return this.http.get(url,\r\n {\r\n headers: new HttpHeaders()\r\n .set('Content-Type', 'application/pdf'),\r\n responseType: 'blob'\r\n });\r\n }\r\n\r\n /*public xml(url: string): Observable<any> {\r\n return this.http.get(`${this.url}/xml?url=${encodeURIComponent(url)}`,\r\n {\r\n headers: new HttpHeaders()\r\n .set('Content-Type', 'text/xml'),\r\n responseType: 'text'\r\n });\r\n }\r\n\r\n public pdf(url: string): Observable<any> {\r\n return this.http.get(`${this.url}/pdf?url=${encodeURIComponent(url)}`,\r\n {\r\n headers: new HttpHeaders()\r\n .set('Content-Type', 'application/pdf'),\r\n responseType: 'blob'\r\n });\r\n }*/\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { AlertService, DialogColor, DialogType, Utilities } from 'myrtex-mf-ui-composite';\r\nimport { SimpleModalComponent } from 'ngx-simple-modal';\r\nimport { Base64 } from 'js-base64';\r\nimport { SignProviderType, SignType } from '../../models';\r\nimport { SignedResultModel } from '../../models/signed-result.model';\r\nimport { CertificateCheck, SignRequestModel } from '../../models/sign-request.model';\r\nimport { DownloadService } from '../../services/download.service';\r\nimport { SignProviderFactory } from '../../providers/signprovider.factory';\r\nimport { OnInit } from '@angular/core/core';\r\nimport { SignerTypeEnum } from '../../enums/signer-type.enum';\r\n\r\nexport interface SignedResponseModel {\r\n result: boolean;\r\n model?: SignedResultModel;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-sign-modal',\r\n templateUrl: './sign-modal.component.html',\r\n styleUrls: ['./sign-modal.component.css']\r\n})\r\nexport class SignModalComponent\r\n extends SimpleModalComponent<SignRequestModel, SignedResponseModel> implements OnInit, SignRequestModel {\r\n\r\n public title = '';\r\n public okLabel = '';\r\n public cancelLabel = '';\r\n\r\n public xmlUrl?: string;\r\n public pdfUrl?: string;\r\n\r\n public additionalPdfUrl?: string;\r\n public additionalPdfUrlTitle?: string;\r\n\r\n public provider: SignProviderType = 'empty';\r\n public signType: SignType = 'xml';\r\n\r\n public xmlToSign = '';\r\n public pdfToSign = '';\r\n public withLog?: boolean;\r\n public skipServerCheck?: boolean;\r\n\r\n public signerType?: SignerTypeEnum;\r\n public certificateCheck?: CertificateCheck;\r\n\r\n /** @deprecated */\r\n public checkFio?: string;\r\n /** @deprecated */\r\n public checkOgrn?: string;\r\n /** @deprecated */\r\n public checkOrganizationFullName?: string;\r\n /** @deprecated */\r\n public checkOrganizationShortName?: string;\r\n /** @deprecated */\r\n public checkInn?: string;\r\n\r\n downloadingPdf = false;\r\n\r\n constructor(private signProviderFactory: SignProviderFactory,\r\n private downloadService: DownloadService,\r\n private alertService: AlertService) {\r\n super();\r\n this.result = { result: false };\r\n }\r\n\r\n get disabled() {\r\n // todo как можно дизеблить кнопу\r\n return false;\r\n }\r\n\r\n get pdfViewUrl(): string {\r\n return this.pdfUrl ?\r\n `/signer/pdfjs/web/viewer.html?file=${encodeURIComponent(this.pdfUrl)}` : '';\r\n }\r\n\r\n ngOnInit(): void {\r\n this.downloadXml();\r\n this.downloadPdf();\r\n }\r\n\r\n public ok() {\r\n\r\n if (!this.signType) {\r\n this.signType = 'xml';\r\n }\r\n\r\n let signData = this.xmlToSign;\r\n\r\n switch (this.signType) {\r\n case 'xml':\r\n signData = Base64.encode(this.xmlToSign);\r\n break;\r\n case 'pdf':\r\n signData = this.pdfToSign;\r\n break;\r\n case 'xmlts':\r\n signData = this.xmlToSign;\r\n break;\r\n }\r\n\r\n this.signProviderFactory.create(this.provider)\r\n .sign(signData, {\r\n skipServerCheck: this.skipServerCheck,\r\n withLog: this.withLog,\r\n\r\n certificateCheck: this.certificateCheck,\r\n\r\n checkFio: this.checkFio,\r\n checkOgrn: this.checkOgrn,\r\n checkOrganizationFullName: this.checkOrganizationFullName,\r\n checkOrganizationShortName: this.checkOrganizationShortName,\r\n checkInn: this.checkInn\r\n })\r\n .then((ok: SignedResultModel) => {\r\n this.processResult(ok);\r\n }).catch((error: any) => {\r\n this.processError(error);\r\n });\r\n }\r\n\r\n public cancel() {\r\n this.close();\r\n }\r\n\r\n private processResult(signResult: SignedResultModel): void {\r\n if (signResult.success) {\r\n signResult.pdfData = this.pdfToSign;\r\n signResult.xmlData = this.xmlToSign;\r\n this.result = { model: signResult, result: true };\r\n this.close();\r\n } else {\r\n this.alertService.showDialog({\r\n title: 'Ошибка проверки подписи',\r\n message: 'Подпись не валидна',\r\n color: DialogColor.red,\r\n type: DialogType.alert,\r\n okCallback: (ok) => {\r\n }\r\n });\r\n }\r\n }\r\n\r\n private processError(error: any): void {\r\n if (this.withLog) {\r\n console.error(error);\r\n }\r\n\r\n if (error) {\r\n this.alertService.showDialog({\r\n title: 'Ошибка проверки подписи',\r\n message: typeof (error) == 'string' ? error : JSON.stringify(error),\r\n color: DialogColor.red,\r\n type: DialogType.alert,\r\n okCallback: (ok) => {\r\n //\r\n }\r\n });\r\n }\r\n }\r\n\r\n private downloadXml(): void {\r\n if (!this.xmlUrl) {\r\n return;\r\n }\r\n\r\n if (this.withLog) {\r\n console.log('Downloading xml');\r\n }\r\n\r\n this.downloadService.xml(this.xmlUrl).subscribe(result => {\r\n if (this.withLog) {\r\n console.log('xmlToSign = ', result);\r\n }\r\n this.xmlToSign = result;\r\n });\r\n }\r\n\r\n private downloadPdf(): void {\r\n if (!this.pdfUrl) {\r\n return;\r\n }\r\n\r\n if (this.withLog) {\r\n console.log('Downloading pdf');\r\n }\r\n\r\n this.downloadingPdf = true;\r\n this.downloadService.pdf(this.pdfUrl)\r\n .subscribe(result => {\r\n this.downloadingPdf = false;\r\n // todo подумать, как правильно читать файл\r\n // const blob = new Blob([result], {type: 'application/pdf'});\r\n const reader = new FileReader();\r\n reader.readAsDataURL(result);\r\n reader.onloadend = () => {\r\n let base64data = reader.result as string;\r\n base64data = base64data.replace('data:application/pdf;base64,', '');\r\n\r\n if (this.withLog) {\r\n console.log('pdfToSign = ', base64data);\r\n }\r\n this.pdfToSign = base64data;\r\n }\r\n }, () => {\r\n this.downloadingPdf = false;\r\n });\r\n }\r\n}\r\n","<div class=\"modal-content accent-head xl\">\r\n <div class=\"modal-header\">\r\n <div class=\"modal-title uppercase\">\r\n <h4 class=\"ng-binding\">{{title || 'Направление документа на подписание'}}</h4>\r\n </div>\r\n <span class=\"close close-click\" (click)=\"close()\">\r\n <svg width=\"14\" height=\"14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M13 1L1 13M1 1l12 12\" stroke=\"#3A3A3A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"modal-body text-center\">\r\n <div class=\"widget\">\r\n <my-tabs>\r\n <app-tab tabTitle=\"Визуализация документа\" *ngIf=\"pdfUrl\">\r\n <pre *ngIf=\"downloadingPdf\">\r\n Подождите, идет формирование документа\r\n </pre>\r\n <iframe *ngIf=\"!downloadingPdf\" [src]=\"pdfViewUrl | safeurl\"\r\n title=\"webviewer\" frameborder=\"0\" width=\"100%\" height=\"800\"></iframe>\r\n </app-tab>\r\n <app-tab tabTitle=\"Подписываемые данные\" *ngIf=\"xmlUrl\">\r\n <pre [innerText]=\"xmlToSign\"></pre>\r\n </app-tab>\r\n </my-tabs>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal-footer\">\r\n <div *ngIf=\"pdfUrl || xmlUrl || additionalPdfUrl\"\r\n class=\"modal-footer-item\">\r\n <a *ngIf=\"pdfUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"pdfUrl\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\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\"\r\n stroke=\"#282828\" stroke-width=\"1.5\"/>\r\n </svg>\r\n <span>Скачать документ</span>\r\n </a>\r\n <a *ngIf=\"xmlUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"xmlUrl\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6 16L2 12L6 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M18 16L22 12L18 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"/>\r\n <path d=\"M7.56689 19.1782L15.5669 5.32182\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span>Скачать XML-данные</span>\r\n </a>\r\n <a *ngIf=\"additionalPdfUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"additionalPdfUrl\">\r\n <svg width=\"24\" height=\"20\" viewBox=\"0 0 24 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.21404 14.2776C7.50693 13.9847 7.98181 13.9847 8.2747 14.2776L12.2747 18.2776C12.5676 18.5705 12.5676 19.0454 12.2747 19.3383C11.9818 19.6312 11.5069 19.6312 11.214 19.3383L7.21404 15.3383C6.92115 15.0454 6.92115 14.5705 7.21404 14.2776Z\" fill=\"#33373C\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.2747 14.2776C16.5676 14.5705 16.5676 15.0454 16.2747 15.3383L12.2747 19.3383C11.9818 19.6312 11.5069 19.6312 11.214 19.3383C10.9211 19.0454 10.9211 18.5705 11.214 18.2776L15.214 14.2776C15.5069 13.9847 15.9818 13.9847 16.2747 14.2776Z\" fill=\"#33373C\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M11.7444 9.05796C12.1586 9.05796 12.4944 9.39374 12.4944 9.80796V18.808C12.4944 19.2222 12.1586 19.558 11.7444 19.558C11.3302 19.558 10.9944 19.2222 10.9944 18.808V9.80796C10.9944 9.39374 11.3302 9.05796 11.7444 9.05796Z\" fill=\"#33373C\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0.978206 4.66339C2.62297 1.48351 6.12559 -0.37405 9.73462 0.063407C13.146 0.476912 15.9708 2.84408 17.0094 6.05796H17.7444C20.2757 6.05796 22.4565 7.67267 23.2559 10.0708C23.2593 10.0811 23.2625 10.0915 23.2655 10.1019C23.9483 12.4917 23.1511 15.0227 21.0835 16.516C20.7477 16.7585 20.2789 16.6829 20.0364 16.3471C19.7938 16.0113 19.8695 15.5425 20.2053 15.2999C21.7333 14.1964 22.337 12.335 21.8277 10.5297C21.223 8.73647 19.6077 7.55796 17.7444 7.55796H16.4444C16.1002 7.55796 15.8002 7.32373 15.7168 6.98986C14.9919 4.0904 12.5447 1.915 9.55412 1.55251C6.56314 1.18997 3.66577 2.7324 2.31053 5.35252C0.950478 7.98196 1.3145 11.2478 3.3074 13.5125C3.58105 13.8234 3.5508 14.2974 3.23984 14.571C2.92888 14.8446 2.45498 14.8144 2.18133 14.5034C-0.225765 11.7681 -0.66174 7.83395 0.978206 4.66339Z\" fill=\"#33373C\"/>\r\n </svg>\r\n <span>{{additionalPdfUrlTitle}}</span>\r\n </a>\r\n </div>\r\n <div class=\"modal-footer-item\">\r\n <mrx-button\r\n [customClasses]=\"'mr-3'\"\r\n [type]=\"'secondary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"cancel()\"\r\n >{{cancelLabel || 'Отменить'}}</mrx-button>\r\n <mrx-button\r\n [type]=\"'primary'\"\r\n [size]=\"'medium'\"\r\n [disabled]=\"disabled\"\r\n (click)=\"ok()\"\r\n >{{okLabel || 'Подписать'}}</mrx-button>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { SimpleModalService } from 'ngx-simple-modal';\r\nimport { SignedResultModel, SignRequestModel } from '../models';\r\nimport { SignModalComponent } from '../components/sign-modal/sign-modal.component';\r\nimport { TmpTokenService, Utilities } from 'myrtex-mf-ui-composite';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SignService {\r\n\r\n constructor(private simpleModalService: SimpleModalService, private tmpTokenService: TmpTokenService) {\r\n }\r\n\r\n public sign(request: SignRequestModel,\r\n ok: (result?: SignedResultModel) => void,\r\n cancel?: () => void): void {\r\n\r\n const baseUrl = Utilities.commonPart(request.xmlUrl, request.pdfUrl);\r\n\r\n this.tmpTokenService.generate(baseUrl).subscribe(token => {\r\n\r\n const ph = `${window.location.protocol}//${window.location.host}`;\r\n if (request.xmlUrl) {\r\n request.xmlUrl = ph + Utilities.updateQueryStringParameter(request.xmlUrl, 'authToken', token);\r\n }\r\n\r\n if (request.pdfUrl) {\r\n request.pdfUrl = ph + Utilities.updateQueryStringParameter(request.pdfUrl, 'authToken', token);\r\n }\r\n\r\n this.simpleModalService.addModal(SignModalComponent, request, { wrapperClass: 'in xl' })\r\n .subscribe(result => {\r\n if (result && result.result) {\r\n ok(result.model);\r\n } else {\r\n if (cancel) {\r\n cancel();\r\n }\r\n }\r\n });\r\n\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { SignModalComponent } from './components/sign-modal/sign-modal.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MyrtexMfUiCompositeModule } from 'myrtex-mf-ui-composite';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { SignService } from './services/public.sign.service';\r\nimport { DownloadService } from './services/download.service';\r\nimport { CertificateSelectComponent } from './components/certificate-select/certificate-select.component';\r\nimport { CryptoApiService } from './services/crypto.api.service';\r\nimport { SignProviderFactory } from './providers/signprovider.factory';\r\nimport { CryptoProvider } from './providers/crypto.provider';\r\nimport { CryptoJinnProvider } from './providers/cryptojinn.provider';\r\nimport { CryptoTsProvider } from './providers/cryptots.provider';\r\nimport { EmptyProvider } from './providers/empty.provider';\r\nimport { ButtonModule } from 'myrtex-mf-ui';\r\n\r\n@NgModule({\r\n declarations: [\r\n SignModalComponent,\r\n CertificateSelectComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n HttpClientModule,\r\n NgSelectModule,\r\n MyrtexMfUiCompositeModule,\r\n ButtonModule,\r\n ],\r\n exports: [\r\n SignModalComponent\r\n ],\r\n providers: [\r\n SignProviderFactory,\r\n CryptoProvider,\r\n CryptoJinnProvider,\r\n CryptoTsProvider,\r\n EmptyProvider,\r\n\r\n CryptoApiService,\r\n SignService,\r\n DownloadService\r\n ]\r\n})\r\nexport class MyrtexSignerModule { }\r\n","/*\r\n * Public API Surface of myrtex-mf-signer\r\n */\r\n// enums\r\nexport * from './lib/enums/index';\r\n\r\n// models\r\nexport * from './lib/models/index';\r\n\r\n// components\r\nexport * from './lib/components/sign-modal/sign-modal.component';\r\n\r\n// modules\r\nexport * from './lib/myrtex-signer.module';\r\n\r\n// services\r\nexport * from './lib/services/public.sign.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CertificateAdjuster","i1","i2.CryptoService","i3.CryptoApiService","i1.CryptoProvider","i2.CryptoJinnProvider","i3.CryptoTsProvider","i4.EmptyProvider","i1.SignProviderFactory","i2.DownloadService","i5","i2"],"mappings":"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"}
1
+ {"version":3,"file":"myrtex-mf-signer.mjs","sources":["../../../projects/myrtex-mf-signer/src/lib/enums/signer-type.enum.ts","../../../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/helpers/strippingCharacters.ts","../../../projects/myrtex-mf-signer/src/lib/helpers/transformText.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 enum SignerTypeEnum {\r\n Unknown = 0,\r\n\r\n FL = 1,\r\n\r\n UL = 2,\r\n\r\n IP = 3,\r\n}\r\n","export class CryptoBaseService {\r\n\r\n public available = false;\r\n options: any = {};\r\n\r\n init(): Promise<CryptoBaseService> {\r\n return Promise.reject('Not implemented');\r\n };\r\n\r\n auth(): Promise<boolean> {\r\n return Promise.resolve(true);\r\n };\r\n}\r\n","class CertificateAdjuster {\r\n extract(s: string, name: string | string[]): string {\r\n if (typeof (name) === 'string') {\r\n name = [name];\r\n }\r\n\r\n for (var i = 0; i < name.length; i++) {\r\n const n = name[i];\r\n const re = new RegExp(n + '\\\\s*=\\\\s*(?<value>[^=]+)(?:[,\\\\\\\\/]|$)', 'g');\r\n const m = re.exec(s);\r\n if (m !== null && m.groups !== undefined && m.groups !== null) {\r\n let r = m.groups.value;\r\n r = r.replace(/^\\\"?/, '');\r\n r = r.replace(/\\\"$/, '');\r\n r = r.replace(/\\\"\\\"/g, '\"');\r\n return r;\r\n }\r\n }\r\n\r\n return '';\r\n };\r\n\r\n print2Digit(digit: number) {\r\n return (digit < 10) ? '0' + digit : digit;\r\n };\r\n\r\n getCertDate(paramDate: any) {\r\n let certDate = new Date(paramDate);\r\n return this.print2Digit(certDate.getUTCDate()) + '.' + this.print2Digit(certDate.getMonth() + 1) +\r\n '.' + certDate.getFullYear() + ' ' +\r\n this.print2Digit(certDate.getUTCHours()) + ':' + this.print2Digit(certDate.getUTCMinutes()) +\r\n ':' + this.print2Digit(certDate.getUTCSeconds());\r\n };\r\n\r\n getCertFio(certSubjectName: string) {\r\n const lastName = this.extract(certSubjectName, 'SN');\r\n const name = this.extract(certSubjectName, 'G');\r\n\r\n return lastName + ' ' + name;\r\n };\r\n\r\n getCertPost(certSubjectName: string) {\r\n return this.extract(certSubjectName, 'T');\r\n };\r\n\r\n getCertOgrn(certSubjectName: string) {\r\n return this.extract(certSubjectName, ['OGRN', 'ОГРН', 'ОГРНИП','OGRNIP', '1.2.643.100.1']);\r\n };\r\n\r\n getCertOrg(certSubjectName: string) {\r\n return this.extract(certSubjectName, 'O');\r\n };\r\n\r\n getCertInn(certSubjectName: string) {\r\n return this.extract(certSubjectName, ['INN', 'ИНН', '1.2.643.3.131.1.1']);\r\n };\r\n\r\n getCertSnils(certSubjectName: string) {\r\n return this.extract(certSubjectName, ['SNILS', 'СНИЛС', '1.2.643.100.3']);\r\n };\r\n\r\n getCertName(certSubjectName: string) {\r\n return this.extract(certSubjectName, 'CN');\r\n };\r\n\r\n getIssuer(certIssuerName: string) {\r\n return this.extract(certIssuerName, 'CN');\r\n };\r\n\r\n getCertInfoString(certSubjectName: string, certFromDate: any) {\r\n return this.extract(certSubjectName, 'CN') + '; Выдан: ' + this.getCertDate(certFromDate);\r\n };\r\n}\r\n\r\nconst instance = new CertificateAdjuster();\r\nexport { instance as CertificateAdjuster };","export const strippingCharacters = (text?: string): string => {\r\n if (!text) {\r\n return ''\r\n }\r\n return text.replace(/\\s+|\\.|,|!|\"|«|»|<|>|'|:|;|-|\\\\(|\\\\)/g, '').toLowerCase()\r\n}\r\n","export const transformText = (text?: string): string => {\r\n if (!text) {\r\n return '';\r\n }\r\n text = text.toLowerCase().trim();\r\n return text.replace(/ё/g, 'е').replace(/й/g, 'и');\r\n}\r\n","import {\r\n Async,\r\n CADESCOM_STORE_LOCATION,\r\n CAPICOM_STORE_NAMES,\r\n CAPICOM_STORE_OPEN_MODE,\r\n ProgIds\r\n} from 'cadesplugin-types';\r\nimport { CertificateCheck, CertificateModel } from '../../models';\r\n// @ts-ignore\r\nimport getCadesplugin from 'async-cadesplugin';\r\nimport { CryptoBaseService } from '../crypto.base.service';\r\nimport { CertificateAdjuster } from '../certificate.adjuster';\r\nimport { SignerTypeEnum } from '../../enums/signer-type.enum';\r\nimport { strippingCharacters } from '../../helpers/strippingCharacters';\r\nimport { transformText } from '../../helpers/transformText';\r\n\r\ndeclare global {\r\n interface Window {\r\n cadesplugin: Async.IWebClassFactory;\r\n CRYPTO_SKIP_CHECK?: boolean;\r\n }\r\n}\r\n\r\ninterface CertificateFilter {\r\n certificateCheck?: CertificateCheck;\r\n}\r\n\r\ninterface Certificate {\r\n id: number;\r\n certificate: any;\r\n subjectName: string;\r\n name: string;\r\n cn: string;\r\n fio: string;\r\n post: string;\r\n ogrn: string;\r\n organization: string;\r\n inn: string;\r\n validFromDate: string;\r\n validToDate: string;\r\n thumbprint: string;\r\n issuerName: string;\r\n serialNumber: string;\r\n isExpired: boolean;\r\n snils: string;\r\n}\r\n\r\nexport class CryptoProBaseService extends CryptoBaseService {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async init(): Promise<CryptoBaseService> {\r\n await getCadesplugin();\r\n return Promise.resolve(this);\r\n };\r\n\r\n public async getCertificates(filter?: CertificateFilter): Promise<CertificateModel[]> {\r\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\r\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\r\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\r\n\r\n let storeCerts = await store.Certificates;\r\n let count = await storeCerts.Count;\r\n let certificates: Array<CertificateModel> = [];\r\n\r\n for (let i = 1; i <= count; i++) {\r\n let cert = await storeCerts.Item(i);\r\n let validFromDate = new Date(await cert.ValidFromDate);\r\n let validToDate = new Date(await cert.ValidToDate);\r\n const subjectName = await cert.SubjectName;\r\n\r\n const certificate: Certificate = {\r\n id: i,\r\n certificate: cert,\r\n subjectName: subjectName,\r\n name: CertificateAdjuster.getCertInfoString(subjectName, validFromDate),\r\n cn: CertificateAdjuster.getCertName(subjectName),\r\n fio: CertificateAdjuster.getCertFio(subjectName),\r\n post: CertificateAdjuster.getCertPost(subjectName),\r\n ogrn: CertificateAdjuster.getCertOgrn(subjectName),\r\n snils: CertificateAdjuster.getCertSnils(subjectName),\r\n organization: CertificateAdjuster.getCertOrg(subjectName),\r\n inn: CertificateAdjuster.getCertInn(subjectName),\r\n validFromDate: validFromDate.toLocaleDateString('ru-RU'),\r\n validToDate: validToDate.toLocaleDateString('ru-RU'),\r\n thumbprint: await cert.Thumbprint,\r\n issuerName: await cert.IssuerName,\r\n serialNumber: await cert.SerialNumber,\r\n isExpired: validToDate < new Date()\r\n };\r\n\r\n if (certificate.isExpired) {\r\n continue;\r\n }\r\n\r\n let filterOk = true;\r\n if (window.CRYPTO_SKIP_CHECK !== true) {\r\n if (filter?.certificateCheck?.signerType === SignerTypeEnum.FL) {\r\n filterOk = !certificate.ogrn;\r\n } else if ([SignerTypeEnum.UL, SignerTypeEnum.IP]\r\n .indexOf(filter?.certificateCheck?.signerType || SignerTypeEnum.Unknown) > -1) {\r\n if (filterOk) {\r\n const organization = certificate.organization || certificate.cn;\r\n const orgIsValid = filter?.certificateCheck?.ogrn === certificate.ogrn;\r\n if (!orgIsValid) {\r\n if (filter?.certificateCheck?.isChief) {\r\n filterOk = false;\r\n } else {\r\n const orgNameIsValid = (filter?.certificateCheck?.fullName &&\r\n strippingCharacters(filter?.certificateCheck?.fullName)\r\n .indexOf(strippingCharacters(organization)) > -1)\r\n || (filter?.certificateCheck?.shortName &&\r\n strippingCharacters(filter?.certificateCheck?.shortName)\r\n .indexOf(strippingCharacters(organization)) > -1);\r\n if (!orgNameIsValid) {\r\n filterOk = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (filterOk && filter?.certificateCheck?.signerType) {\r\n const fio = transformText(certificate.fio);\r\n const snils = certificate.snils.replace(/[\\s-]+/g, '');\r\n const snilsCert = filter?.certificateCheck?.snils?.replace(/[\\s-]+/g, '');\r\n\r\n if ((filter?.certificateCheck?.fio ? transformText(filter.certificateCheck.fio) : null) !== transformText(fio) ||\r\n snilsCert !== snils) {\r\n filterOk = false;\r\n }\r\n }\r\n }\r\n\r\n if (filterOk) {\r\n certificates.push(certificate);\r\n }\r\n }\r\n\r\n await store.Close();\r\n return certificates;\r\n }\r\n}\r\n","import {\r\n Async,\r\n CADESCOM_CADES_TYPE,\r\n CADESCOM_CONTENT_ENCODING_TYPE,\r\n CADESCOM_STORE_LOCATION, CAPICOM_STORE_NAMES, CAPICOM_STORE_OPEN_MODE,\r\n ProgIds\r\n} from 'cadesplugin-types';\r\nimport { CryptoProBaseService } from './crypto.pro.base.service';\r\n\r\nexport class CryptoProAsyncService extends CryptoProBaseService {\r\n\r\n public static readonly key = 'cryptoproasync';\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async signXml(certificate: any, data: string): Promise<string> {\r\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\r\n await signer.propset_Certificate(certificate);\r\n\r\n let timestamp_service_url = 'http://qs.cryptopro.ru/tsp/tsp.srf';\r\n await signer.propset_TSAAddress(timestamp_service_url);\r\n\r\n let signed: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\r\n\r\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\r\n await signed.propset_Content(encodedXml);\r\n\r\n let cades_xml_signature_type_enveloped = 80;\r\n await signed.propset_SignatureType(cades_xml_signature_type_enveloped);\r\n\r\n const signedData = await signed.Sign(signer);\r\n\r\n return signedData;\r\n }\r\n\r\n public async signBase64(certificate: any, data: string, detached: boolean = false): Promise<string> {\r\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\r\n await signer.propset_Certificate(certificate);\r\n\r\n let signed: Async.ICPSignedData5 = await window.cadesplugin.CreateObjectAsync(ProgIds.CadesSignedData);\r\n\r\n await signed.propset_ContentEncoding(CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY);\r\n await signed.propset_Content(data);\r\n\r\n const signedData = await signed.SignCades(signer, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, detached);\r\n\r\n return signedData;\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { SimpleModalComponent } from 'ngx-simple-modal';\r\nimport { CertificateModel } from '../../models';\r\n\r\nexport interface CertificateSelectModel {\r\n certificates: CertificateModel[];\r\n}\r\n\r\nexport interface CertificateSelectResultModel {\r\n selected?: CertificateModel;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-certificate-select',\r\n templateUrl: './certificate-select.component.html',\r\n styleUrls: ['./certificate-select.component.css']\r\n})\r\nexport class CertificateSelectComponent extends SimpleModalComponent<CertificateSelectModel, CertificateSelectResultModel>\r\n implements CertificateSelectModel {\r\n\r\n certificates: CertificateModel[] = [];\r\n\r\n constructor() {\r\n super();\r\n this.result = {};\r\n }\r\n\r\n ok(cert: CertificateModel) {\r\n this.result = {selected: cert};\r\n this.close();\r\n }\r\n}\r\n","<div class=\"modal-content open accent-head certificate\">\r\n <div class=\"modal-header\">\r\n <div class=\"modal-title\" [innerHTML]=\"'Выберите сертификат'\">\r\n </div>\r\n <span class='close close-click' (click)=\"close()\">\r\n <svg width='14' height='14' fill='none' xmlns='http://www.w3.org/2000/svg'>\r\n <path d='M13 1L1 13M1 1l12 12' stroke='#3A3A3A' stroke-width='1.5' stroke-linecap='round'\r\n stroke-linejoin='round' />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"modal-body text-center\">\r\n\r\n <div class=\"modal-body-other\">\r\n <div *ngFor=\"let cert of certificates\">\r\n <div class=\"modal-body-info\">\r\n <div class=\"modal-body-info__item\">\r\n <span class=\"text\">\r\n Владелец:\r\n </span>\r\n <span class=\"text\">\r\n {{cert.cn}}<br/>\r\n {{cert.fio}}<span *ngIf=\"cert.post\">, {{cert.post}}</span>\r\n </span>\r\n </div>\r\n <div class=\"modal-body-info__item\">\r\n <span class=\"text\">\r\n Срок действия:\r\n </span>\r\n <span class=\"text\">\r\n {{cert.validFromDate}} - {{cert.validToDate}}\r\n </span>\r\n </div>\r\n <div class=\"modal-body-info__item\">\r\n <span class=\"text hash\">\r\n {{cert.thumbprint}} {{cert.isExpired ? \"(истек)\" : \"\"}}\r\n </span>\r\n </div>\r\n <button\r\n (click)=\"ok(cert)\"\r\n [disabled]=\"cert.isExpired\"\r\n class=\"btn btn-md\">Создать подпись</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n </div>\r\n</div>","import {\r\n Async,\r\n CADESCOM_STORE_LOCATION, CADESCOM_XML_SIGNATURE_TYPE,\r\n CAPICOM_STORE_NAMES,\r\n CAPICOM_STORE_OPEN_MODE,\r\n ProgIds\r\n} from 'cadesplugin-types';\r\nimport { CryptoProBaseService } from './crypto.pro.base.service';\r\n\r\ndeclare global {\r\n interface Window {\r\n cadesplugin: Async.IWebClassFactory;\r\n CRYPTO_SKIP_CHECK?: boolean;\r\n }\r\n}\r\n\r\nexport class CryptoProTsService extends CryptoProBaseService {\r\n\r\n public static readonly key = 'cryptoprots';\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n private get TIMESTAMP_SERVICE_URL(): string {\r\n return 'http://qs.cryptopro.ru/tsp/tsp.srf';\r\n }\r\n\r\n public async sign(certificate: any, data: string): Promise<string> {\r\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\r\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\r\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\r\n\r\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\r\n await signer.propset_Certificate(certificate);\r\n\r\n let signedXML: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\r\n\r\n let publicKey: Async.IPublicKey = await certificate.PublicKey();\r\n let algorithm: Async.IOID = await publicKey.Algorithm;\r\n let algorithmOid = await algorithm.Value;\r\n\r\n let { signMethod, digestMethod } = this.getSigningMethods(algorithmOid);\r\n\r\n //await signer.propset_Options(api.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN);\r\n\r\n await signer.propset_TSAAddress(this.TIMESTAMP_SERVICE_URL);\r\n\r\n if (data) {\r\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\r\n await signedXML.propset_Content(encodedXml);\r\n }\r\n\r\n await signedXML.propset_SignatureType(CADESCOM_XML_SIGNATURE_TYPE.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED);\r\n await signedXML.propset_SignatureMethod(signMethod);\r\n await signedXML.propset_DigestMethod(digestMethod);\r\n\r\n let signature = await signedXML.Sign(signer);\r\n\r\n await store.Close();\r\n\r\n return signature;\r\n }\r\n\r\n private getSigningMethods(algorithmOid: string): { signMethod: string, digestMethod: string } {\r\n let signMethod = '', digestMethod = '';\r\n\r\n if (algorithmOid == '1.2.643.7.1.1.1.1') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 256 бит\r\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\r\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\r\n } else if (algorithmOid == '1.2.643.7.1.1.1.2') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 512 бит\r\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512';\r\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512';\r\n } else if (algorithmOid == '1.2.643.2.2.19') { // алгоритм ГОСТ Р 34.10-2001\r\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\r\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\r\n }\r\n\r\n return { signMethod, digestMethod };\r\n }\r\n}\r\n","import { CryptoProAsyncService } from './cryptopro/crypto.pro.async.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { CryptoBaseService } from './crypto.base.service';\r\nimport { CryptoProTsService } from './cryptopro/crypto.pro.ts.service';\r\n\r\nexport interface CryptoHandler {\r\n key: string;\r\n name: string;\r\n service: CryptoBaseService;\r\n sign: boolean;\r\n default: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoService {\r\n\r\n handlers: Map<string, CryptoHandler> = new Map<string, CryptoHandler>();\r\n selectPromise: any = null;\r\n private _initialized = false;\r\n private _withLog = false;\r\n\r\n public async startUp(withLog? : boolean): Promise<void> {\r\n this._withLog = !!withLog;\r\n\r\n if (!this._initialized) {\r\n this.registerHandler({\r\n key: CryptoProAsyncService.key,\r\n name: 'КриптоПро',\r\n service: new CryptoProAsyncService(),\r\n sign: true,\r\n default: true\r\n });\r\n this.registerHandler({\r\n key: CryptoProTsService.key,\r\n name: 'КриптоПро',\r\n service: new CryptoProTsService(),\r\n sign: true,\r\n default: false\r\n });\r\n await this.init();\r\n this._initialized = true;\r\n }\r\n this.log('Handlers init completed');\r\n return Promise.resolve();\r\n }\r\n\r\n public registerHandler(options: CryptoHandler) {\r\n this.log('Register handler', options);\r\n\r\n options.disabled = false;\r\n this.handlers.set(options.key, options);\r\n };\r\n\r\n public disableHandler(key: string): void {\r\n const handler = this.handlers.get(key);\r\n if (handler) {\r\n handler.disabled = true;\r\n }\r\n };\r\n\r\n public getHandler(key: string): Promise<CryptoHandler> {\r\n const handler = this.getActiveHandlers()\r\n .find(x => x.key == key);\r\n\r\n if (handler) {\r\n return Promise.resolve(handler);\r\n }\r\n return Promise.reject(`Not found ${key} handler`);\r\n };\r\n\r\n public getDefaultHandler() : Promise<CryptoHandler> {\r\n const handler = this.getActiveHandlers()\r\n .find(x => x.default);\r\n\r\n if (handler) {\r\n return Promise.resolve(handler);\r\n }\r\n return Promise.reject(`Not found default handler`);\r\n };\r\n\r\n public getService<T extends CryptoBaseService>(key: string): Promise<T> {\r\n const handler = this.handlers.get(key);\r\n if (handler) {\r\n return Promise.resolve(handler.service as T);\r\n }\r\n return Promise.reject(`Not found ${key}`);\r\n };\r\n\r\n public getActiveHandlers(): Array<CryptoHandler> {\r\n const active = new Array<CryptoHandler>();\r\n this.handlers.forEach(s => {\r\n if (!s.disabled) {\r\n active.push(s);\r\n }\r\n });\r\n return active;\r\n };\r\n\r\n private log(...args: any[]) {\r\n if (this._withLog) {\r\n console.log(args);\r\n }\r\n };\r\n\r\n private async init(): Promise<any> {\r\n this.log('Initialize handlers');\r\n\r\n const promises: Array<Promise<any>> = [];\r\n this.handlers.forEach(handler => {\r\n handler.service.available = false;\r\n\r\n this.log('Initialize ' + handler.name);\r\n\r\n const promise = handler.service.init().then((result) => {\r\n result.available = true;\r\n this.log('Handler init success', result);\r\n }).catch(reason => {\r\n this.log('Handler init fail', reason);\r\n });\r\n\r\n promises.push(promise);\r\n });\r\n\r\n return await Promise.all(promises);\r\n };\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\r\nimport { SignValidateResponse } from '../models';\r\nimport { VerifyCertModel } from '../models/internal/verify.cert.model';\r\nimport { VerifyCertResponseModel } from '../models/internal/verify.cert.response.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoApiService extends EndpointBaseService {\r\n\r\n private urlCrypto = '/cryptopro/api/v1';\r\n private urlSigner = '/signer/api/v1';\r\n\r\n constructor(protected http: HttpClient, protected injector: Injector) {\r\n super(http, injector);\r\n }\r\n\r\n public verify(data: VerifyCertModel): Observable<VerifyCertResponseModel> {\r\n return this.http.post<VerifyCertResponseModel>(`${this.urlCrypto}/verify`, data);\r\n }\r\n\r\n public validate(data: string): Observable<SignValidateResponse> {\r\n return this.http.post<SignValidateResponse>(`${this.urlSigner}/jinn/validate`, {data});\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Base64 } from 'js-base64';\r\nimport { SimpleModalService } from 'ngx-simple-modal';\r\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\r\nimport { CryptoService } from '../services/crypto.service';\r\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\r\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\r\nimport { CryptoApiService } from '../services/crypto.api.service';\r\nimport { SignedResultModel } from '../models';\r\nimport { strippingCharacters } from '../helpers/strippingCharacters';\r\nimport { Async } from 'cadesplugin-types';\r\n\r\ndeclare global {\r\n interface Window {\r\n cadesplugin: Async.IWebClassFactory;\r\n CRYPTO_SKIP_CHECK?: boolean;\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoProvider implements ISignProvider {\r\n\r\n constructor(private simpleModalService: SimpleModalService,\r\n private cryptoService: CryptoService,\r\n private cryptoApiService: CryptoApiService) {\r\n }\r\n\r\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\r\n const withLog = options?.withLog;\r\n await this.cryptoService.startUp(withLog);\r\n\r\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\r\n const list = await service.getCertificates({\r\n certificateCheck: options?.certificateCheck\r\n });\r\n\r\n if (list.length === 0) {\r\n return Promise.reject('Отсутствует подходящий сертификат');\r\n }\r\n\r\n const modalResult = await this.simpleModalService\r\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\r\n\r\n if (!modalResult.selected) {\r\n if (withLog) {\r\n console.log('Сертификат не выбран, отмена');\r\n }\r\n return Promise.reject();\r\n }\r\n\r\n let certificateFail = 0;\r\n if (window.CRYPTO_SKIP_CHECK !== true && !options?.certificateCheck) {\r\n /** @deprecated */\r\n if (options?.checkFio &&\r\n modalResult.selected.fio.toLowerCase() !== options?.checkFio.toLowerCase()) {\r\n certificateFail = 1;\r\n }\r\n\r\n if (options?.checkOrganizationFullName || options?.checkOrganizationShortName) {\r\n let organization = modalResult.selected.organization;\r\n\r\n if (!organization) {\r\n organization = modalResult.selected.cn;\r\n }\r\n\r\n if (organization) {\r\n const orgIsValid = (options?.checkOrganizationFullName &&\r\n strippingCharacters(organization) == strippingCharacters(options?.checkOrganizationFullName))\r\n || (options?.checkOrganizationShortName &&\r\n strippingCharacters(organization) == strippingCharacters(options?.checkOrganizationShortName));\r\n if (!orgIsValid) {\r\n certificateFail = 2;\r\n }\r\n } else {\r\n certificateFail = 2;\r\n }\r\n }\r\n }\r\n\r\n if (certificateFail > 0) {\r\n return Promise.reject(\r\n certificateFail == 1 ?\r\n 'Данные лица, подписывающего заявку не совпадают с данными усиленной квалифицированной подписи.' :\r\n certificateFail === 3 ? 'Отсутствует активный КриптоПровайдер (не установлен либо недоступен плагин). ' +\r\n 'Чтобы подписать, установите плагин КриптоПро и проверьте наличие сертификата' :\r\n 'Данные организации не совпадают с данными усиленной квалифицированной подписи. ' +\r\n 'Убедитесь, что вы используете сертификат, выданные от организации.',\r\n );\r\n }\r\n\r\n if (withLog) {\r\n console.log('Подписываемые данные', data);\r\n }\r\n\r\n const signedData = await service.signBase64(modalResult.selected.certificate, data, true);\r\n\r\n if (withLog) {\r\n console.log('Подписанные данные', signedData);\r\n }\r\n\r\n if (!options?.skipServerCheck) {\r\n const verifyResult = await this.cryptoApiService.verify({\r\n data: data,\r\n signature: Base64.encode(signedData),\r\n detached: true\r\n }).toPromise();\r\n\r\n return {\r\n data,\r\n success: verifyResult.success,\r\n signed: signedData,\r\n certificate: modalResult.selected,\r\n };\r\n } else {\r\n return {\r\n data,\r\n success: true,\r\n signed: signedData,\r\n certificate: modalResult.selected,\r\n };\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SimpleModalService } from 'ngx-simple-modal';\r\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\r\nimport { CryptoService } from '../services/crypto.service';\r\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\r\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\r\nimport { CryptoApiService } from '../services/crypto.api.service';\r\nimport { SignedResultModel } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoJinnProvider implements ISignProvider {\r\n\r\n constructor(private simpleModalService: SimpleModalService,\r\n private cryptoService: CryptoService,\r\n private cryptoApiService: CryptoApiService) {\r\n }\r\n\r\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\r\n const withLog = options?.withLog;\r\n\r\n await this.cryptoService.startUp(withLog);\r\n\r\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\r\n\r\n const list = await service.getCertificates({\r\n certificateCheck: options?.certificateCheck\r\n });\r\n\r\n if (list.length === 0) {\r\n return Promise.reject('Отсутствует подходящий сертификат');\r\n }\r\n\r\n const modalResult = await this.simpleModalService\r\n .addModal(CertificateSelectComponent, { certificates: list }).toPromise();\r\n\r\n if (!modalResult.selected) {\r\n if (withLog) {\r\n console.log('Сертификат не выбран, отмена');\r\n }\r\n return Promise.reject();\r\n }\r\n\r\n if (withLog) {\r\n console.log('Подписываемые данные', data);\r\n }\r\n\r\n const signedData = await service.signXml(modalResult.selected.certificate, data);\r\n\r\n if (withLog) {\r\n console.log('Подписанные данные', signedData);\r\n }\r\n\r\n if (!options?.skipServerCheck) {\r\n const verifyResult = await this.cryptoApiService.validate(signedData).toPromise();\r\n\r\n return {\r\n data: signedData,\r\n success: verifyResult.success,\r\n certificate: modalResult.selected,\r\n validateResult: verifyResult.validateResult\r\n };\r\n } else {\r\n return {\r\n data: signedData,\r\n success: true,\r\n certificate: modalResult.selected\r\n };\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\r\nimport { SimpleModalService } from 'ngx-simple-modal';\r\nimport { CryptoService } from '../services/crypto.service';\r\nimport { CryptoApiService } from '../services/crypto.api.service';\r\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\r\nimport { CryptoProTsService } from '../services/cryptopro/crypto.pro.ts.service';\r\nimport { SignedResultModel } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoTsProvider implements ISignProvider {\r\n\r\n constructor(private simpleModalService: SimpleModalService,\r\n private cryptoService: CryptoService,\r\n private cryptoApiService: CryptoApiService) {\r\n }\r\n\r\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\r\n const withLog = options?.withLog;\r\n await this.cryptoService.startUp(withLog);\r\n const service = await this.cryptoService.getService<CryptoProTsService>(CryptoProTsService.key);\r\n const list = await service.getCertificates();\r\n const modalResult = await this.simpleModalService\r\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\r\n\r\n if (!modalResult.selected) {\r\n if (withLog) {\r\n console.log('No certificate selected, rejecting');\r\n }\r\n return Promise.reject();\r\n }\r\n\r\n const signedData = await service.sign(modalResult.selected.certificate, data);\r\n\r\n if (!options?.skipServerCheck) {\r\n const validateResult = await this.cryptoApiService.validate(signedData).toPromise();\r\n\r\n return {\r\n data,\r\n signed: signedData,\r\n success: validateResult.success,\r\n validateResult: validateResult.validateResult,\r\n certificate: modalResult.selected,\r\n };\r\n } else {\r\n return {\r\n data,\r\n signed: signedData,\r\n success: true,\r\n validateResult: '',\r\n certificate: modalResult.selected,\r\n };\r\n }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { ISignProvider, SignOptions } from \"./interfaces/isign.provider\";\r\nimport { SignedResultModel } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EmptyProvider implements ISignProvider {\r\n\r\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\r\n return Promise.resolve({\r\n data: data,\r\n success: true\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CryptoProvider } from './crypto.provider';\r\nimport { CryptoJinnProvider } from './cryptojinn.provider';\r\nimport { EmptyProvider } from './empty.provider';\r\nimport { CryptoTsProvider } from './cryptots.provider';\r\nimport { SignProviderType } from '../models';\r\nimport { ISignProvider } from './interfaces/isign.provider';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SignProviderFactory {\r\n constructor(\r\n protected cryptoProvider: CryptoProvider,\r\n protected cryptoJinnProvider: CryptoJinnProvider,\r\n protected cryptoTsProvider: CryptoTsProvider,\r\n protected emptyProvider: EmptyProvider) {\r\n }\r\n\r\n create(providerType: SignProviderType): ISignProvider {\r\n switch (providerType) {\r\n case 'crypto':\r\n return this.cryptoProvider;\r\n case 'cryptojinn':\r\n return this.cryptoJinnProvider;\r\n case 'cryptots':\r\n return this.cryptoTsProvider;\r\n case 'empty':\r\n return this.emptyProvider;\r\n }\r\n }\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DownloadService extends EndpointBaseService {\r\n\r\n private url = '/signer/api/v1/download';\r\n\r\n constructor(protected http: HttpClient, protected injector: Injector) {\r\n super(http, injector);\r\n }\r\n\r\n public xml(url: string): Observable<any> {\r\n return this.http.get(url,\r\n {\r\n headers: new HttpHeaders()\r\n .set('Content-Type', 'text/xml'),\r\n responseType: 'text'\r\n });\r\n }\r\n\r\n public pdf(url: string): Observable<any> {\r\n return this.http.get(url,\r\n {\r\n headers: new HttpHeaders()\r\n .set('Content-Type', 'application/pdf'),\r\n responseType: 'blob'\r\n });\r\n }\r\n\r\n /*public xml(url: string): Observable<any> {\r\n return this.http.get(`${this.url}/xml?url=${encodeURIComponent(url)}`,\r\n {\r\n headers: new HttpHeaders()\r\n .set('Content-Type', 'text/xml'),\r\n responseType: 'text'\r\n });\r\n }\r\n\r\n public pdf(url: string): Observable<any> {\r\n return this.http.get(`${this.url}/pdf?url=${encodeURIComponent(url)}`,\r\n {\r\n headers: new HttpHeaders()\r\n .set('Content-Type', 'application/pdf'),\r\n responseType: 'blob'\r\n });\r\n }*/\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { AlertService, DialogColor, DialogType, Utilities } from 'myrtex-mf-ui-composite';\r\nimport { SimpleModalComponent } from 'ngx-simple-modal';\r\nimport { Base64 } from 'js-base64';\r\nimport { SignProviderType, SignType } from '../../models';\r\nimport { SignedResultModel } from '../../models/signed-result.model';\r\nimport { CertificateCheck, SignRequestModel } from '../../models/sign-request.model';\r\nimport { DownloadService } from '../../services/download.service';\r\nimport { SignProviderFactory } from '../../providers/signprovider.factory';\r\nimport { OnInit } from '@angular/core/core';\r\nimport { SignerTypeEnum } from '../../enums/signer-type.enum';\r\n\r\nexport interface SignedResponseModel {\r\n result: boolean;\r\n model?: SignedResultModel;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-sign-modal',\r\n templateUrl: './sign-modal.component.html',\r\n styleUrls: ['./sign-modal.component.css']\r\n})\r\nexport class SignModalComponent\r\n extends SimpleModalComponent<SignRequestModel, SignedResponseModel> implements OnInit, SignRequestModel {\r\n\r\n public title = '';\r\n public okLabel = '';\r\n public cancelLabel = '';\r\n\r\n public xmlUrl?: string;\r\n public pdfUrl?: string;\r\n\r\n public additionalPdfUrl?: string;\r\n public additionalPdfUrlTitle?: string;\r\n\r\n public provider: SignProviderType = 'empty';\r\n public signType: SignType = 'xml';\r\n\r\n public xmlToSign = '';\r\n public pdfToSign = '';\r\n public withLog?: boolean;\r\n public skipServerCheck?: boolean;\r\n\r\n public signerType?: SignerTypeEnum;\r\n public certificateCheck?: CertificateCheck;\r\n\r\n /** @deprecated */\r\n public checkFio?: string;\r\n /** @deprecated */\r\n public checkOgrn?: string;\r\n /** @deprecated */\r\n public checkOrganizationFullName?: string;\r\n /** @deprecated */\r\n public checkOrganizationShortName?: string;\r\n /** @deprecated */\r\n public checkInn?: string;\r\n\r\n downloadingPdf = false;\r\n\r\n constructor(private signProviderFactory: SignProviderFactory,\r\n private downloadService: DownloadService,\r\n private alertService: AlertService) {\r\n super();\r\n this.result = { result: false };\r\n }\r\n\r\n get disabled() {\r\n // todo как можно дизеблить кнопу\r\n return false;\r\n }\r\n\r\n get pdfViewUrl(): string {\r\n return this.pdfUrl ?\r\n `/signer/pdfjs/web/viewer.html?file=${encodeURIComponent(this.pdfUrl)}` : '';\r\n }\r\n\r\n ngOnInit(): void {\r\n this.downloadXml();\r\n }\r\n\r\n public ok() {\r\n\r\n if (!this.signType) {\r\n this.signType = 'xml';\r\n }\r\n\r\n let signData = this.xmlToSign;\r\n\r\n switch (this.signType) {\r\n case 'xml':\r\n signData = Base64.encode(this.xmlToSign);\r\n break;\r\n case 'pdf':\r\n signData = this.pdfToSign;\r\n break;\r\n case 'xmlts':\r\n signData = this.xmlToSign;\r\n break;\r\n }\r\n\r\n this.signProviderFactory.create(this.provider)\r\n .sign(signData, {\r\n skipServerCheck: this.skipServerCheck,\r\n withLog: this.withLog,\r\n\r\n certificateCheck: this.certificateCheck,\r\n\r\n checkFio: this.checkFio,\r\n checkOgrn: this.checkOgrn,\r\n checkOrganizationFullName: this.checkOrganizationFullName,\r\n checkOrganizationShortName: this.checkOrganizationShortName,\r\n checkInn: this.checkInn\r\n })\r\n .then((ok: SignedResultModel) => {\r\n this.processResult(ok);\r\n }).catch((error: any) => {\r\n this.processError(error);\r\n });\r\n }\r\n\r\n public cancel() {\r\n this.close();\r\n }\r\n\r\n private processResult(signResult: SignedResultModel): void {\r\n if (signResult.success) {\r\n signResult.pdfData = this.pdfToSign;\r\n signResult.xmlData = this.xmlToSign;\r\n this.result = { model: signResult, result: true };\r\n this.close();\r\n } else {\r\n this.alertService.showDialog({\r\n title: 'Ошибка проверки подписи',\r\n message: 'Подпись не валидна',\r\n color: DialogColor.red,\r\n type: DialogType.alert,\r\n okCallback: (ok) => {\r\n }\r\n });\r\n }\r\n }\r\n\r\n private processError(error: any): void {\r\n if (this.withLog) {\r\n console.error(error);\r\n }\r\n\r\n if (error) {\r\n this.alertService.showDialog({\r\n title: 'Ошибка проверки подписи',\r\n message: typeof (error) == 'string' ? error : JSON.stringify(error),\r\n color: DialogColor.red,\r\n type: DialogType.alert,\r\n okCallback: (ok) => {\r\n //\r\n }\r\n });\r\n }\r\n }\r\n\r\n private downloadXml(): void {\r\n if (!this.xmlUrl) {\r\n return;\r\n }\r\n\r\n if (this.withLog) {\r\n console.log('Downloading xml');\r\n }\r\n\r\n this.downloadService.xml(this.xmlUrl).subscribe(result => {\r\n if (this.withLog) {\r\n console.log('xmlToSign = ', result);\r\n }\r\n this.xmlToSign = result;\r\n this.downloadPdf();\r\n });\r\n }\r\n\r\n private downloadPdf(): void {\r\n if (!this.pdfUrl) {\r\n return;\r\n }\r\n\r\n if (this.withLog) {\r\n console.log('Downloading pdf');\r\n }\r\n\r\n this.downloadingPdf = true;\r\n this.downloadService.pdf(this.pdfUrl)\r\n .subscribe(result => {\r\n this.downloadingPdf = false;\r\n // todo подумать, как правильно читать файл\r\n // const blob = new Blob([result], {type: 'application/pdf'});\r\n const reader = new FileReader();\r\n reader.readAsDataURL(result);\r\n reader.onloadend = () => {\r\n let base64data = reader.result as string;\r\n base64data = base64data.replace('data:application/pdf;base64,', '');\r\n\r\n if (this.withLog) {\r\n console.log('pdfToSign = ', base64data);\r\n }\r\n this.pdfToSign = base64data;\r\n }\r\n }, () => {\r\n this.downloadingPdf = false;\r\n });\r\n }\r\n}\r\n","<div class=\"modal-content accent-head xl\">\r\n <div class=\"modal-header\">\r\n <div class=\"modal-title uppercase\">\r\n <h4 class=\"ng-binding\">{{title || 'Направление документа на подписание'}}</h4>\r\n </div>\r\n <span class=\"close close-click\" (click)=\"close()\">\r\n <svg width=\"14\" height=\"14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M13 1L1 13M1 1l12 12\" stroke=\"#3A3A3A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"modal-body text-center\">\r\n <div class=\"widget\">\r\n <my-tabs>\r\n <app-tab tabTitle=\"Визуализация документа\" *ngIf=\"pdfUrl\">\r\n <pre *ngIf=\"downloadingPdf\">\r\n Подождите, идет формирование документа\r\n </pre>\r\n <iframe *ngIf=\"!downloadingPdf\" [src]=\"pdfViewUrl | safeurl\"\r\n title=\"webviewer\" frameborder=\"0\" width=\"100%\" height=\"800\"></iframe>\r\n </app-tab>\r\n <app-tab tabTitle=\"Подписываемые данные\" *ngIf=\"xmlUrl\">\r\n <pre [innerText]=\"xmlToSign\"></pre>\r\n </app-tab>\r\n </my-tabs>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal-footer\">\r\n <div *ngIf=\"pdfUrl || xmlUrl || additionalPdfUrl\"\r\n class=\"modal-footer-item\">\r\n <a *ngIf=\"pdfUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"pdfUrl\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\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\"\r\n stroke=\"#282828\" stroke-width=\"1.5\"/>\r\n </svg>\r\n <span>Скачать документ</span>\r\n </a>\r\n <a *ngIf=\"xmlUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"xmlUrl\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6 16L2 12L6 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M18 16L22 12L18 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"/>\r\n <path d=\"M7.56689 19.1782L15.5669 5.32182\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span>Скачать XML-данные</span>\r\n </a>\r\n <a *ngIf=\"additionalPdfUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"additionalPdfUrl\">\r\n <svg width=\"24\" height=\"20\" viewBox=\"0 0 24 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.21404 14.2776C7.50693 13.9847 7.98181 13.9847 8.2747 14.2776L12.2747 18.2776C12.5676 18.5705 12.5676 19.0454 12.2747 19.3383C11.9818 19.6312 11.5069 19.6312 11.214 19.3383L7.21404 15.3383C6.92115 15.0454 6.92115 14.5705 7.21404 14.2776Z\" fill=\"#33373C\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.2747 14.2776C16.5676 14.5705 16.5676 15.0454 16.2747 15.3383L12.2747 19.3383C11.9818 19.6312 11.5069 19.6312 11.214 19.3383C10.9211 19.0454 10.9211 18.5705 11.214 18.2776L15.214 14.2776C15.5069 13.9847 15.9818 13.9847 16.2747 14.2776Z\" fill=\"#33373C\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M11.7444 9.05796C12.1586 9.05796 12.4944 9.39374 12.4944 9.80796V18.808C12.4944 19.2222 12.1586 19.558 11.7444 19.558C11.3302 19.558 10.9944 19.2222 10.9944 18.808V9.80796C10.9944 9.39374 11.3302 9.05796 11.7444 9.05796Z\" fill=\"#33373C\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0.978206 4.66339C2.62297 1.48351 6.12559 -0.37405 9.73462 0.063407C13.146 0.476912 15.9708 2.84408 17.0094 6.05796H17.7444C20.2757 6.05796 22.4565 7.67267 23.2559 10.0708C23.2593 10.0811 23.2625 10.0915 23.2655 10.1019C23.9483 12.4917 23.1511 15.0227 21.0835 16.516C20.7477 16.7585 20.2789 16.6829 20.0364 16.3471C19.7938 16.0113 19.8695 15.5425 20.2053 15.2999C21.7333 14.1964 22.337 12.335 21.8277 10.5297C21.223 8.73647 19.6077 7.55796 17.7444 7.55796H16.4444C16.1002 7.55796 15.8002 7.32373 15.7168 6.98986C14.9919 4.0904 12.5447 1.915 9.55412 1.55251C6.56314 1.18997 3.66577 2.7324 2.31053 5.35252C0.950478 7.98196 1.3145 11.2478 3.3074 13.5125C3.58105 13.8234 3.5508 14.2974 3.23984 14.571C2.92888 14.8446 2.45498 14.8144 2.18133 14.5034C-0.225765 11.7681 -0.66174 7.83395 0.978206 4.66339Z\" fill=\"#33373C\"/>\r\n </svg>\r\n <span>{{additionalPdfUrlTitle}}</span>\r\n </a>\r\n </div>\r\n <div class=\"modal-footer-item\">\r\n <mrx-button\r\n [customClasses]=\"'mr-3'\"\r\n [type]=\"'secondary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"cancel()\"\r\n >{{cancelLabel || 'Отменить'}}</mrx-button>\r\n <mrx-button\r\n [type]=\"'primary'\"\r\n [size]=\"'medium'\"\r\n [disabled]=\"disabled\"\r\n (click)=\"ok()\"\r\n >{{okLabel || 'Подписать'}}</mrx-button>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { SimpleModalService } from 'ngx-simple-modal';\r\nimport { SignedResultModel, SignRequestModel } from '../models';\r\nimport { SignModalComponent } from '../components/sign-modal/sign-modal.component';\r\nimport { TmpTokenService, Utilities } from 'myrtex-mf-ui-composite';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SignService {\r\n\r\n constructor(private simpleModalService: SimpleModalService, private tmpTokenService: TmpTokenService) {\r\n }\r\n\r\n public sign(request: SignRequestModel,\r\n ok: (result?: SignedResultModel) => void,\r\n cancel?: () => void): void {\r\n\r\n const baseUrl = Utilities.commonPart(request.xmlUrl, request.pdfUrl);\r\n\r\n this.tmpTokenService.generate(baseUrl).subscribe(token => {\r\n\r\n const ph = `${window.location.protocol}//${window.location.host}`;\r\n if (request.xmlUrl) {\r\n request.xmlUrl = ph + Utilities.updateQueryStringParameter(request.xmlUrl, 'authToken', token);\r\n }\r\n\r\n if (request.pdfUrl) {\r\n request.pdfUrl = ph + Utilities.updateQueryStringParameter(request.pdfUrl, 'authToken', token);\r\n }\r\n\r\n this.simpleModalService.addModal(SignModalComponent, request, { wrapperClass: 'in xl' })\r\n .subscribe(result => {\r\n if (result && result.result) {\r\n ok(result.model);\r\n } else {\r\n if (cancel) {\r\n cancel();\r\n }\r\n }\r\n });\r\n\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { SignModalComponent } from './components/sign-modal/sign-modal.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MyrtexMfUiCompositeModule } from 'myrtex-mf-ui-composite';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { SignService } from './services/public.sign.service';\r\nimport { DownloadService } from './services/download.service';\r\nimport { CertificateSelectComponent } from './components/certificate-select/certificate-select.component';\r\nimport { CryptoApiService } from './services/crypto.api.service';\r\nimport { SignProviderFactory } from './providers/signprovider.factory';\r\nimport { CryptoProvider } from './providers/crypto.provider';\r\nimport { CryptoJinnProvider } from './providers/cryptojinn.provider';\r\nimport { CryptoTsProvider } from './providers/cryptots.provider';\r\nimport { EmptyProvider } from './providers/empty.provider';\r\nimport { ButtonModule } from 'myrtex-mf-ui';\r\n\r\n@NgModule({\r\n declarations: [\r\n SignModalComponent,\r\n CertificateSelectComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n HttpClientModule,\r\n NgSelectModule,\r\n MyrtexMfUiCompositeModule,\r\n ButtonModule,\r\n ],\r\n exports: [\r\n SignModalComponent\r\n ],\r\n providers: [\r\n SignProviderFactory,\r\n CryptoProvider,\r\n CryptoJinnProvider,\r\n CryptoTsProvider,\r\n EmptyProvider,\r\n\r\n CryptoApiService,\r\n SignService,\r\n DownloadService\r\n ]\r\n})\r\nexport class MyrtexSignerModule { }\r\n","/*\r\n * Public API Surface of myrtex-mf-signer\r\n */\r\n// enums\r\nexport * from './lib/enums/index';\r\n\r\n// models\r\nexport * from './lib/models/index';\r\n\r\n// components\r\nexport * from './lib/components/sign-modal/sign-modal.component';\r\n\r\n// modules\r\nexport * from './lib/myrtex-signer.module';\r\n\r\n// services\r\nexport * from './lib/services/public.sign.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CertificateAdjuster","i1","i2.CryptoService","i3.CryptoApiService","i1.CryptoProvider","i2.CryptoJinnProvider","i3.CryptoTsProvider","i4.EmptyProvider","i1.SignProviderFactory","i2.DownloadService","i5","i2"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "myrtex-mf-signer",
3
- "version": "1.1.80",
3
+ "version": "1.1.81",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.3.11",
6
6
  "@angular/core": "^13.3.11",