myrtex-mf-signer 1.1.54 → 1.1.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/providers/crypto.provider.mjs +1 -1
- package/esm2020/lib/services/cryptopro/crypto.pro.async.service.mjs +1 -1
- package/esm2020/lib/services/cryptopro/crypto.pro.base.service.mjs +1 -1
- package/esm2020/lib/services/cryptopro/crypto.pro.ts.service.mjs +1 -1
- package/fesm2015/myrtex-mf-signer.mjs.map +1 -1
- package/fesm2020/myrtex-mf-signer.mjs.map +1 -1
- package/lib/providers/crypto.provider.d.ts +7 -0
- package/lib/services/cryptopro/crypto.pro.ts.service.d.ts +7 -0
- package/package.json +1 -1
|
@@ -125,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
125
125
|
providedIn: 'root'
|
|
126
126
|
}]
|
|
127
127
|
}], ctorParameters: function () { return [{ type: i1.SimpleModalService }, { type: i2.CryptoService }, { type: i3.CryptoApiService }]; } });
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LW1mLXNpZ25lci9zcmMvbGliL3Byb3ZpZGVycy9jcnlwdG8ucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSW5DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7OztBQU9yRSxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUFvQixrQkFBc0MsRUFDdEMsYUFBNEIsRUFDNUIsZ0JBQWtDO1FBRmxDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUN0RCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFZLEVBQUUsT0FBcUI7UUFDbkQsTUFBTSxPQUFPLEdBQUcsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUNqQyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQXdCLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RHLE1BQU0sSUFBSSxHQUFHLE1BQU0sT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUN6QyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCO1NBQzVDLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLE1B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QUNIO2FBQU07WUFDTCxPQUFPO2dCQUNMLElBQUk7Z0JBQ0osT0FBTyxFQUFFLElBQUk7Z0JBQ2IsTUFBTSxFQUFFLFVBQVU7Z0JBQ2xCLFdBQVcsRUFBRSxXQUFXLENBQUMsUUFBUTthQUNsQyxDQUFDO1NBQ0g7SUFDSCxDQUFDOzs0R0E5SFUsY0FBYztnSEFBZCxjQUFjLGNBRmIsTUFBTTs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2U2NCB9IGZyb20gJ2pzLWJhc2U2NCc7XG5pbXBvcnQgeyBTaW1wbGVNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtc2ltcGxlLW1vZGFsJztcbmltcG9ydCB7IElTaWduUHJvdmlkZXIsIFNpZ25PcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2lzaWduLnByb3ZpZGVyJztcbmltcG9ydCB7IENyeXB0b1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jcnlwdG8uc2VydmljZSc7XG5pbXBvcnQgeyBDcnlwdG9Qcm9Bc3luY1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jcnlwdG9wcm8vY3J5cHRvLnByby5hc3luYy5zZXJ2aWNlJztcbmltcG9ydCB7IENlcnRpZmljYXRlU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jZXJ0aWZpY2F0ZS1zZWxlY3QvY2VydGlmaWNhdGUtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcnlwdG9BcGlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY3J5cHRvLmFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IFNpZ25lZFJlc3VsdE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IHN0cmlwcGluZ0NoYXJhY3RlcnMgfSBmcm9tICcuLi9oZWxwZXJzL3N0cmlwcGluZ0NoYXJhY3RlcnMnO1xuXG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogYW55O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDcnlwdG9Qcm92aWRlciBpbXBsZW1lbnRzIElTaWduUHJvdmlkZXIge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2ltcGxlTW9kYWxTZXJ2aWNlOiBTaW1wbGVNb2RhbFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgY3J5cHRvU2VydmljZTogQ3J5cHRvU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjcnlwdG9BcGlTZXJ2aWNlOiBDcnlwdG9BcGlTZXJ2aWNlKSB7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2lnbihkYXRhOiBzdHJpbmcsIG9wdGlvbnM/OiBTaWduT3B0aW9ucyk6IFByb21pc2U8U2lnbmVkUmVzdWx0TW9kZWw+IHtcbiAgICBjb25zdCB3aXRoTG9nID0gb3B0aW9ucz8ud2l0aExvZztcbiAgICBhd2FpdCB0aGlzLmNyeXB0b1NlcnZpY2Uuc3RhcnRVcCh3aXRoTG9nKTtcblxuICAgIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmNyeXB0b1NlcnZpY2UuZ2V0U2VydmljZTxDcnlwdG9Qcm9Bc3luY1NlcnZpY2U+KENyeXB0b1Byb0FzeW5jU2VydmljZS5rZXkpO1xuICAgIGNvbnN0IGxpc3QgPSBhd2FpdCBzZXJ2aWNlLmdldENlcnRpZmljYXRlcyh7XG4gICAgICBjZXJ0aWZpY2F0ZUNoZWNrOiBvcHRpb25zPy5jZXJ0aWZpY2F0ZUNoZWNrXG4gICAgfSk7XG5cbiAgICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgn0J7RgtGB0YPRgtGB0YLQstGD0LXRgiDQv9C+0LTRhdC+0LTRj9GJ0LjQuSDRgdC10YDRgtC40YTQuNC60LDRgicpO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGFsUmVzdWx0ID0gYXdhaXQgdGhpcy5zaW1wbGVNb2RhbFNlcnZpY2VcbiAgICAgIC5hZGRNb2RhbChDZXJ0aWZpY2F0ZVNlbGVjdENvbXBvbmVudCwge2NlcnRpZmljYXRlczogbGlzdH0pLnRvUHJvbWlzZSgpO1xuXG4gICAgaWYgKCFtb2RhbFJlc3VsdC5zZWxlY3RlZCkge1xuICAgICAgaWYgKHdpdGhMb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ9Ch0LXRgNGC0LjRhNC40LrQsNGCINC90LUg0LLRi9Cx0YDQsNC9LCDQvtGC0LzQtdC90LAnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIH1cblxuICAgIGxldCBjZXJ0aWZpY2F0ZUZhaWwgPSAwO1xuICAgIGlmICh3aW5kb3cuQ1JZUFRPX1NLSVBfQ0hFQ0sgIT09IHRydWUpIHtcbiAgICAgIGlmIChvcHRpb25zPy5jZXJ0aWZpY2F0ZUNoZWNrPy5maW8gJiZcbiAgICAgICAgbW9kYWxSZXN1bHQuc2VsZWN0ZWQuZmlvLnRvTG93ZXJDYXNlKCkgIT09IG9wdGlvbnM/LmNlcnRpZmljYXRlQ2hlY2s/LmZpby50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgIGNlcnRpZmljYXRlRmFpbCA9IDE7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zPy5jZXJ0aWZpY2F0ZUNoZWNrPy5mdWxsTmFtZSB8fCBvcHRpb25zPy5jZXJ0aWZpY2F0ZUNoZWNrPy5zaG9ydE5hbWUpIHtcbiAgICAgICAgbGV0IG9yZ2FuaXphdGlvbiA9IG1vZGFsUmVzdWx0LnNlbGVjdGVkLm9yZ2FuaXphdGlvbjtcblxuICAgICAgICBpZiAoIW9yZ2FuaXphdGlvbikge1xuICAgICAgICAgIG9yZ2FuaXphdGlvbiA9IG1vZGFsUmVzdWx0LnNlbGVjdGVkLmNuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9yZ2FuaXphdGlvbikge1xuICAgICAgICAgIGNvbnN0IG9yZ0lzVmFsaWQgPSAob3B0aW9ucz8uY2VydGlmaWNhdGVDaGVjaz8uZnVsbE5hbWUgJiZcbiAgICAgICAgICAgICAgc3RyaXBwaW5nQ2hhcmFjdGVycyhvcmdhbml6YXRpb24pID09IHN0cmlwcGluZ0NoYXJhY3RlcnMob3B0aW9ucz8uY2VydGlmaWNhdGVDaGVjaz8uZnVsbE5hbWUpKVxuICAgICAgICAgICAgfHwgKG9wdGlvbnM/LmNlcnRpZmljYXRlQ2hlY2s/LnNob3J0TmFtZSAmJlxuICAgICAgICAgICAgICBzdHJpcHBpbmdDaGFyYWN0ZXJzKG9yZ2FuaXphdGlvbikgPT0gc3RyaXBwaW5nQ2hhcmFjdGVycyhvcHRpb25zPy5jZXJ0aWZpY2F0ZUNoZWNrPy5zaG9ydE5hbWUpKTtcbiAgICAgICAgICBpZiAoIW9yZ0lzVmFsaWQpIHtcbiAgICAgICAgICAgIGNlcnRpZmljYXRlRmFpbCA9IDI7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNlcnRpZmljYXRlRmFpbCA9IDI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLyoqIEBkZXByZWNhdGVkICovXG4gICAgICBpZiAob3B0aW9ucz8uY2hlY2tGaW8gJiZcbiAgICAgICAgbW9kYWxSZXN1bHQuc2VsZWN0ZWQuZmlvLnRvTG93ZXJDYXNlKCkgIT09IG9wdGlvbnM/LmNoZWNrRmlvLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgY2VydGlmaWNhdGVGYWlsID0gMTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnM/LmNoZWNrT3JnYW5pemF0aW9uRnVsbE5hbWUgfHwgb3B0aW9ucz8uY2hlY2tPcmdhbml6YXRpb25TaG9ydE5hbWUpIHtcbiAgICAgICAgbGV0IG9yZ2FuaXphdGlvbiA9IG1vZGFsUmVzdWx0LnNlbGVjdGVkLm9yZ2FuaXphdGlvbjtcblxuICAgICAgICBpZiAoIW9yZ2FuaXphdGlvbikge1xuICAgICAgICAgIG9yZ2FuaXphdGlvbiA9IG1vZGFsUmVzdWx0LnNlbGVjdGVkLmNuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9yZ2FuaXphdGlvbikge1xuICAgICAgICAgIGNvbnN0IG9yZ0lzVmFsaWQgPSAob3B0aW9ucz8uY2hlY2tPcmdhbml6YXRpb25GdWxsTmFtZSAmJlxuICAgICAgICAgICAgICBzdHJpcHBpbmdDaGFyYWN0ZXJzKG9yZ2FuaXphdGlvbikgPT0gc3RyaXBwaW5nQ2hhcmFjdGVycyhvcHRpb25zPy5jaGVja09yZ2FuaXphdGlvbkZ1bGxOYW1lKSlcbiAgICAgICAgICAgIHx8IChvcHRpb25zPy5jaGVja09yZ2FuaXphdGlvblNob3J0TmFtZSAmJlxuICAgICAgICAgICAgICBzdHJpcHBpbmdDaGFyYWN0ZXJzKG9yZ2FuaXphdGlvbikgPT0gc3RyaXBwaW5nQ2hhcmFjdGVycyhvcHRpb25zPy5jaGVja09yZ2FuaXphdGlvblNob3J0TmFtZSkpO1xuICAgICAgICAgIGlmICghb3JnSXNWYWxpZCkge1xuICAgICAgICAgICAgY2VydGlmaWNhdGVGYWlsID0gMjtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2VydGlmaWNhdGVGYWlsID0gMjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjZXJ0aWZpY2F0ZUZhaWwgPiAwKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgIGNlcnRpZmljYXRlRmFpbCA9PSAxID9cbiAgICAgICAgICAn0JTQsNC90L3Ri9C1INC70LjRhtCwLCDQv9C+0LTQv9C40YHRi9Cy0LDRjtGJ0LXQs9C+INC30LDRj9Cy0LrRgyDQvdC1INGB0L7QstC/0LDQtNCw0Y7RgiDRgSDQtNCw0L3QvdGL0LzQuCDRg9GB0LjQu9C10L3QvdC+0Lkg0LrQstCw0LvQuNGE0LjRhtC40YDQvtCy0LDQvdC90L7QuSDQv9C+0LTQv9C40YHQuC4nIDpcbiAgICAgICAgICBjZXJ0aWZpY2F0ZUZhaWwgPT09IDMgPyAn0J7RgtGB0YPRgtGB0YLQstGD0LXRgiDQsNC60YLQuNCy0L3Ri9C5INCa0YDQuNC/0YLQvtCf0YDQvtCy0LDQudC00LXRgCAo0L3QtSDRg9GB0YLQsNC90L7QstC70LXQvSDQu9C40LHQviDQvdC10LTQvtGB0YLRg9C/0LXQvSDQv9C70LDQs9C40L0pLiAnICtcbiAgICAgICAgICAgICfQp9GC0L7QsdGLINC/0L7QtNC/0LjRgdCw0YLRjCwg0YPRgdGC0LDQvdC+0LLQuNGC0LUg0L/Qu9Cw0LPQuNC9INCa0YDQuNC/0YLQvtCf0YDQviDQuCDQv9GA0L7QstC10YDRjNGC0LUg0L3QsNC70LjRh9C40LUg0YHQtdGA0YLQuNGE0LjQutCw0YLQsCcgOlxuICAgICAgICAgICAgJ9CU0LDQvdC90YvQtSDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4INC90LUg0YHQvtCy0L/QsNC00LDRjtGCINGBINC00LDQvdC90YvQvNC4INGD0YHQuNC70LXQvdC90L7QuSDQutCy0LDQu9C40YTQuNGG0LjRgNC+0LLQsNC90L3QvtC5INC/0L7QtNC/0LjRgdC4LiAnICtcbiAgICAgICAgICAgICfQo9Cx0LXQtNC40YLQtdGB0YwsINGH0YLQviDQstGLINC40YHQv9C+0LvRjNC30YPQtdGC0LUg0YHQtdGA0YLQuNGE0LjQutCw0YIsINCy0YvQtNCw0L3QvdGL0LUg0L7RgiDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4LicsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh3aXRoTG9nKSB7XG4gICAgICBjb25zb2xlLmxvZygn0J/QvtC00L/QuNGB0YvQstCw0LXQvNGL0LUg0LTQsNC90L3Ri9C1JywgZGF0YSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2lnbmVkRGF0YSA9IGF3YWl0IHNlcnZpY2Uuc2lnbkJhc2U2NChtb2RhbFJlc3VsdC5zZWxlY3RlZC5jZXJ0aWZpY2F0ZSwgZGF0YSwgdHJ1ZSk7XG5cbiAgICBpZiAod2l0aExvZykge1xuICAgICAgY29uc29sZS5sb2coJ9Cf0L7QtNC/0LjRgdCw0L3QvdGL0LUg0LTQsNC90L3Ri9C1Jywgc2lnbmVkRGF0YSk7XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zPy5za2lwU2VydmVyQ2hlY2spIHtcbiAgICAgIGNvbnN0IHZlcmlmeVJlc3VsdCA9IGF3YWl0IHRoaXMuY3J5cHRvQXBpU2VydmljZS52ZXJpZnkoe1xuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBzaWduYXR1cmU6IEJhc2U2NC5lbmNvZGUoc2lnbmVkRGF0YSksXG4gICAgICAgIGRldGFjaGVkOiB0cnVlXG4gICAgICB9KS50b1Byb21pc2UoKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YSxcbiAgICAgICAgc3VjY2VzczogdmVyaWZ5UmVzdWx0LnN1Y2Nlc3MsXG4gICAgICAgIHNpZ25lZDogc2lnbmVkRGF0YSxcbiAgICAgICAgY2VydGlmaWNhdGU6IG1vZGFsUmVzdWx0LnNlbGVjdGVkLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YSxcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgc2lnbmVkOiBzaWduZWREYXRhLFxuICAgICAgICBjZXJ0aWZpY2F0ZTogbW9kYWxSZXN1bHQuc2VsZWN0ZWQsXG4gICAgICB9O1xuICAgIH1cbiAgfVxufVxuIl19
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LW1mLXNpZ25lci9zcmMvbGliL3Byb3ZpZGVycy9jcnlwdG8ucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSW5DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7OztBQWFyRSxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUFvQixrQkFBc0MsRUFDdEMsYUFBNEIsRUFDNUIsZ0JBQWtDO1FBRmxDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUN0RCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFZLEVBQUUsT0FBcUI7UUFDbkQsTUFBTSxPQUFPLEdBQUcsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUNqQyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQXdCLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RHLE1BQU0sSUFBSSxHQUFHLE1BQU0sT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUN6QyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCO1NBQzVDLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLE1B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QUNIO2FBQU07WUFDTCxPQUFPO2dCQUNMLElBQUk7Z0JBQ0osT0FBTyxFQUFFLElBQUk7Z0JBQ2IsTUFBTSxFQUFFLFVBQVU7Z0JBQ2xCLFdBQVcsRUFBRSxXQUFXLENBQUMsUUFBUTthQUNsQyxDQUFDO1NBQ0g7SUFDSCxDQUFDOzs0R0E5SFUsY0FBYztnSEFBZCxjQUFjLGNBRmIsTUFBTTs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2U2NCB9IGZyb20gJ2pzLWJhc2U2NCc7XG5pbXBvcnQgeyBTaW1wbGVNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtc2ltcGxlLW1vZGFsJztcbmltcG9ydCB7IElTaWduUHJvdmlkZXIsIFNpZ25PcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2lzaWduLnByb3ZpZGVyJztcbmltcG9ydCB7IENyeXB0b1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jcnlwdG8uc2VydmljZSc7XG5pbXBvcnQgeyBDcnlwdG9Qcm9Bc3luY1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jcnlwdG9wcm8vY3J5cHRvLnByby5hc3luYy5zZXJ2aWNlJztcbmltcG9ydCB7IENlcnRpZmljYXRlU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jZXJ0aWZpY2F0ZS1zZWxlY3QvY2VydGlmaWNhdGUtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcnlwdG9BcGlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY3J5cHRvLmFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IFNpZ25lZFJlc3VsdE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IHN0cmlwcGluZ0NoYXJhY3RlcnMgfSBmcm9tICcuLi9oZWxwZXJzL3N0cmlwcGluZ0NoYXJhY3RlcnMnO1xuaW1wb3J0IHsgQXN5bmMgfSBmcm9tICdjYWRlc3BsdWdpbi10eXBlcyc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgY2FkZXNwbHVnaW46IEFzeW5jLklXZWJDbGFzc0ZhY3Rvcnk7XG4gICAgQ1JZUFRPX1NLSVBfQ0hFQ0s/OiBib29sZWFuO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENyeXB0b1Byb3ZpZGVyIGltcGxlbWVudHMgSVNpZ25Qcm92aWRlciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzaW1wbGVNb2RhbFNlcnZpY2U6IFNpbXBsZU1vZGFsU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjcnlwdG9TZXJ2aWNlOiBDcnlwdG9TZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGNyeXB0b0FwaVNlcnZpY2U6IENyeXB0b0FwaVNlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzaWduKGRhdGE6IHN0cmluZywgb3B0aW9ucz86IFNpZ25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRSZXN1bHRNb2RlbD4ge1xuICAgIGNvbnN0IHdpdGhMb2cgPSBvcHRpb25zPy53aXRoTG9nO1xuICAgIGF3YWl0IHRoaXMuY3J5cHRvU2VydmljZS5zdGFydFVwKHdpdGhMb2cpO1xuXG4gICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHRoaXMuY3J5cHRvU2VydmljZS5nZXRTZXJ2aWNlPENyeXB0b1Byb0FzeW5jU2VydmljZT4oQ3J5cHRvUHJvQXN5bmNTZXJ2aWNlLmtleSk7XG4gICAgY29uc3QgbGlzdCA9IGF3YWl0IHNlcnZpY2UuZ2V0Q2VydGlmaWNhdGVzKHtcbiAgICAgIGNlcnRpZmljYXRlQ2hlY2s6IG9wdGlvbnM/LmNlcnRpZmljYXRlQ2hlY2tcbiAgICB9KTtcblxuICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCfQntGC0YHRg9GC0YHRgtCy0YPQtdGCINC/0L7QtNGF0L7QtNGP0YnQuNC5INGB0LXRgNGC0LjRhNC40LrQsNGCJyk7XG4gICAgfVxuXG4gICAgY29uc3QgbW9kYWxSZXN1bHQgPSBhd2FpdCB0aGlzLnNpbXBsZU1vZGFsU2VydmljZVxuICAgICAgLmFkZE1vZGFsKENlcnRpZmljYXRlU2VsZWN0Q29tcG9uZW50LCB7Y2VydGlmaWNhdGVzOiBsaXN0fSkudG9Qcm9taXNlKCk7XG5cbiAgICBpZiAoIW1vZGFsUmVzdWx0LnNlbGVjdGVkKSB7XG4gICAgICBpZiAod2l0aExvZykge1xuICAgICAgICBjb25zb2xlLmxvZygn0KHQtdGA0YLQuNGE0LjQutCw0YIg0L3QtSDQstGL0LHRgNCw0L0sINC+0YLQvNC10L3QsCcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgfVxuXG4gICAgbGV0IGNlcnRpZmljYXRlRmFpbCA9IDA7XG4gICAgaWYgKHdpbmRvdy5DUllQVE9fU0tJUF9DSEVDSyAhPT0gdHJ1ZSkge1xuICAgICAgaWYgKG9wdGlvbnM/LmNlcnRpZmljYXRlQ2hlY2s/LmZpbyAmJlxuICAgICAgICBtb2RhbFJlc3VsdC5zZWxlY3RlZC5maW8udG9Mb3dlckNhc2UoKSAhPT0gb3B0aW9ucz8uY2VydGlmaWNhdGVDaGVjaz8uZmlvLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgY2VydGlmaWNhdGVGYWlsID0gMTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnM/LmNlcnRpZmljYXRlQ2hlY2s/LmZ1bGxOYW1lIHx8IG9wdGlvbnM/LmNlcnRpZmljYXRlQ2hlY2s/LnNob3J0TmFtZSkge1xuICAgICAgICBsZXQgb3JnYW5pemF0aW9uID0gbW9kYWxSZXN1bHQuc2VsZWN0ZWQub3JnYW5pemF0aW9uO1xuXG4gICAgICAgIGlmICghb3JnYW5pemF0aW9uKSB7XG4gICAgICAgICAgb3JnYW5pemF0aW9uID0gbW9kYWxSZXN1bHQuc2VsZWN0ZWQuY247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3JnYW5pemF0aW9uKSB7XG4gICAgICAgICAgY29uc3Qgb3JnSXNWYWxpZCA9IChvcHRpb25zPy5jZXJ0aWZpY2F0ZUNoZWNrPy5mdWxsTmFtZSAmJlxuICAgICAgICAgICAgICBzdHJpcHBpbmdDaGFyYWN0ZXJzKG9yZ2FuaXphdGlvbikgPT0gc3RyaXBwaW5nQ2hhcmFjdGVycyhvcHRpb25zPy5jZXJ0aWZpY2F0ZUNoZWNrPy5mdWxsTmFtZSkpXG4gICAgICAgICAgICB8fCAob3B0aW9ucz8uY2VydGlmaWNhdGVDaGVjaz8uc2hvcnROYW1lICYmXG4gICAgICAgICAgICAgIHN0cmlwcGluZ0NoYXJhY3RlcnMob3JnYW5pemF0aW9uKSA9PSBzdHJpcHBpbmdDaGFyYWN0ZXJzKG9wdGlvbnM/LmNlcnRpZmljYXRlQ2hlY2s/LnNob3J0TmFtZSkpO1xuICAgICAgICAgIGlmICghb3JnSXNWYWxpZCkge1xuICAgICAgICAgICAgY2VydGlmaWNhdGVGYWlsID0gMjtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2VydGlmaWNhdGVGYWlsID0gMjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgICAgIGlmIChvcHRpb25zPy5jaGVja0ZpbyAmJlxuICAgICAgICBtb2RhbFJlc3VsdC5zZWxlY3RlZC5maW8udG9Mb3dlckNhc2UoKSAhPT0gb3B0aW9ucz8uY2hlY2tGaW8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgICBjZXJ0aWZpY2F0ZUZhaWwgPSAxO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucz8uY2hlY2tPcmdhbml6YXRpb25GdWxsTmFtZSB8fCBvcHRpb25zPy5jaGVja09yZ2FuaXphdGlvblNob3J0TmFtZSkge1xuICAgICAgICBsZXQgb3JnYW5pemF0aW9uID0gbW9kYWxSZXN1bHQuc2VsZWN0ZWQub3JnYW5pemF0aW9uO1xuXG4gICAgICAgIGlmICghb3JnYW5pemF0aW9uKSB7XG4gICAgICAgICAgb3JnYW5pemF0aW9uID0gbW9kYWxSZXN1bHQuc2VsZWN0ZWQuY247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3JnYW5pemF0aW9uKSB7XG4gICAgICAgICAgY29uc3Qgb3JnSXNWYWxpZCA9IChvcHRpb25zPy5jaGVja09yZ2FuaXphdGlvbkZ1bGxOYW1lICYmXG4gICAgICAgICAgICAgIHN0cmlwcGluZ0NoYXJhY3RlcnMob3JnYW5pemF0aW9uKSA9PSBzdHJpcHBpbmdDaGFyYWN0ZXJzKG9wdGlvbnM/LmNoZWNrT3JnYW5pemF0aW9uRnVsbE5hbWUpKVxuICAgICAgICAgICAgfHwgKG9wdGlvbnM/LmNoZWNrT3JnYW5pemF0aW9uU2hvcnROYW1lICYmXG4gICAgICAgICAgICAgIHN0cmlwcGluZ0NoYXJhY3RlcnMob3JnYW5pemF0aW9uKSA9PSBzdHJpcHBpbmdDaGFyYWN0ZXJzKG9wdGlvbnM/LmNoZWNrT3JnYW5pemF0aW9uU2hvcnROYW1lKSk7XG4gICAgICAgICAgaWYgKCFvcmdJc1ZhbGlkKSB7XG4gICAgICAgICAgICBjZXJ0aWZpY2F0ZUZhaWwgPSAyO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjZXJ0aWZpY2F0ZUZhaWwgPSAyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNlcnRpZmljYXRlRmFpbCA+IDApIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgY2VydGlmaWNhdGVGYWlsID09IDEgP1xuICAgICAgICAgICfQlNCw0L3QvdGL0LUg0LvQuNGG0LAsINC/0L7QtNC/0LjRgdGL0LLQsNGO0YnQtdCz0L4g0LfQsNGP0LLQutGDINC90LUg0YHQvtCy0L/QsNC00LDRjtGCINGBINC00LDQvdC90YvQvNC4INGD0YHQuNC70LXQvdC90L7QuSDQutCy0LDQu9C40YTQuNGG0LjRgNC+0LLQsNC90L3QvtC5INC/0L7QtNC/0LjRgdC4LicgOlxuICAgICAgICAgIGNlcnRpZmljYXRlRmFpbCA9PT0gMyA/ICfQntGC0YHRg9GC0YHRgtCy0YPQtdGCINCw0LrRgtC40LLQvdGL0Lkg0JrRgNC40L/RgtC+0J/RgNC+0LLQsNC50LTQtdGAICjQvdC1INGD0YHRgtCw0L3QvtCy0LvQtdC9INC70LjQsdC+INC90LXQtNC+0YHRgtGD0L/QtdC9INC/0LvQsNCz0LjQvSkuICcgK1xuICAgICAgICAgICAgJ9Cn0YLQvtCx0Ysg0L/QvtC00L/QuNGB0LDRgtGMLCDRg9GB0YLQsNC90L7QstC40YLQtSDQv9C70LDQs9C40L0g0JrRgNC40L/RgtC+0J/RgNC+INC4INC/0YDQvtCy0LXRgNGM0YLQtSDQvdCw0LvQuNGH0LjQtSDRgdC10YDRgtC40YTQuNC60LDRgtCwJyA6XG4gICAgICAgICAgICAn0JTQsNC90L3Ri9C1INC+0YDQs9Cw0L3QuNC30LDRhtC40Lgg0L3QtSDRgdC+0LLQv9Cw0LTQsNGO0YIg0YEg0LTQsNC90L3Ri9C80Lgg0YPRgdC40LvQtdC90L3QvtC5INC60LLQsNC70LjRhNC40YbQuNGA0L7QstCw0L3QvdC+0Lkg0L/QvtC00L/QuNGB0LguICcgK1xuICAgICAgICAgICAgJ9Cj0LHQtdC00LjRgtC10YHRjCwg0YfRgtC+INCy0Ysg0LjRgdC/0L7Qu9GM0LfRg9C10YLQtSDRgdC10YDRgtC40YTQuNC60LDRgiwg0LLRi9C00LDQvdC90YvQtSDQvtGCINC+0YDQs9Cw0L3QuNC30LDRhtC40LguJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHdpdGhMb2cpIHtcbiAgICAgIGNvbnNvbGUubG9nKCfQn9C+0LTQv9C40YHRi9Cy0LDQtdC80YvQtSDQtNCw0L3QvdGL0LUnLCBkYXRhKTtcbiAgICB9XG5cbiAgICBjb25zdCBzaWduZWREYXRhID0gYXdhaXQgc2VydmljZS5zaWduQmFzZTY0KG1vZGFsUmVzdWx0LnNlbGVjdGVkLmNlcnRpZmljYXRlLCBkYXRhLCB0cnVlKTtcblxuICAgIGlmICh3aXRoTG9nKSB7XG4gICAgICBjb25zb2xlLmxvZygn0J/QvtC00L/QuNGB0LDQvdC90YvQtSDQtNCw0L3QvdGL0LUnLCBzaWduZWREYXRhKTtcbiAgICB9XG5cbiAgICBpZiAoIW9wdGlvbnM/LnNraXBTZXJ2ZXJDaGVjaykge1xuICAgICAgY29uc3QgdmVyaWZ5UmVzdWx0ID0gYXdhaXQgdGhpcy5jcnlwdG9BcGlTZXJ2aWNlLnZlcmlmeSh7XG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIHNpZ25hdHVyZTogQmFzZTY0LmVuY29kZShzaWduZWREYXRhKSxcbiAgICAgICAgZGV0YWNoZWQ6IHRydWVcbiAgICAgIH0pLnRvUHJvbWlzZSgpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhLFxuICAgICAgICBzdWNjZXNzOiB2ZXJpZnlSZXN1bHQuc3VjY2VzcyxcbiAgICAgICAgc2lnbmVkOiBzaWduZWREYXRhLFxuICAgICAgICBjZXJ0aWZpY2F0ZTogbW9kYWxSZXN1bHQuc2VsZWN0ZWQsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhLFxuICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICBzaWduZWQ6IHNpZ25lZERhdGEsXG4gICAgICAgIGNlcnRpZmljYXRlOiBtb2RhbFJlc3VsdC5zZWxlY3RlZCxcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -27,4 +27,4 @@ export class CryptoProAsyncService extends CryptoProBaseService {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
CryptoProAsyncService.key = 'cryptoproasync';
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLnByby5hc3luYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LW1mLXNpZ25lci9zcmMvbGliL3NlcnZpY2VzL2NyeXB0b3Byby9jcnlwdG8ucHJvLmFzeW5jLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQUk3RDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBZ0IsRUFBRSxJQUFZO1FBQ2pELElBQUksTUFBTSxHQUFxQixNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLG9DQUFrQixDQUFDO1FBQzVGLE1BQU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTlDLElBQUkscUJBQXFCLEdBQUcsd0NBQXdDLENBQUM7UUFDckUsTUFBTSxNQUFNLENBQUMsa0JBQWtCLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUV2RCxJQUFJLE1BQU0sR0FBcUIsTUFBTSxNQUFNLENBQUMsV0FBVyxDQUFDLGlCQUFpQixzQ0FBbUIsQ0FBQztRQUU3RixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRCxNQUFNLE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFekMsSUFBSSxrQ0FBa0MsR0FBRyxFQUFFLENBQUM7UUFDNUMsTUFBTSxNQUFNLENBQUMscUJBQXFCLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUV2RSxNQUFNLFVBQVUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFN0MsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVNLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBZ0IsRUFBRSxJQUFZLEVBQUUsV0FBb0IsS0FBSztRQUMvRSxJQUFJLE1BQU0sR0FBcUIsTUFBTSxNQUFNLENBQUMsV0FBVyxDQUFDLGlCQUFpQixvQ0FBa0IsQ0FBQztRQUM1RixNQUFNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU5QyxJQUFJLE1BQU0sR0FBeUIsTUFBTSxNQUFNLENBQUMsV0FBVyxDQUFDLGlCQUFpQixrREFBeUIsQ0FBQztRQUV2RyxNQUFNLE1BQU0sQ0FBQyx1QkFBdUIsbUNBQTBELENBQUM7UUFDL0YsTUFBTSxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLE1BQU0sVUFBVSxHQUFHLE1BQU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLDhCQUEwQyxRQUFRLENBQUMsQ0FBQztRQUVwRyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOztBQXRDc0IseUJBQUcsR0FBRyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFzeW5jLFxuICBDQURFU0NPTV9DQURFU19UWVBFLFxuICBDQURFU0NPTV9DT05URU5UX0VOQ09ESU5HX1RZUEUsXG4gIENBREVTQ09NX1NUT1JFX0xPQ0FUSU9OLCBDQVBJQ09NX1NUT1JFX05BTUVTLCBDQVBJQ09NX1NUT1JFX09QRU5fTU9ERSxcbiAgUHJvZ0lkc1xufSBmcm9tICdjYWRlc3BsdWdpbi10eXBlcyc7XG5pbXBvcnQgeyBDcnlwdG9Qcm9CYXNlU2VydmljZSB9IGZyb20gJy4vY3J5cHRvLnByby5iYXNlLnNlcnZpY2UnO1xuXG5leHBvcnQgY2xhc3MgQ3J5cHRvUHJvQXN5bmNTZXJ2aWNlIGV4dGVuZHMgQ3J5cHRvUHJvQmFzZVNlcnZpY2Uge1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkga2V5ID0gJ2NyeXB0b3Byb2FzeW5jJztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNpZ25YbWwoY2VydGlmaWNhdGU6IGFueSwgZGF0YTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLnByby5hc3luYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LW1mLXNpZ25lci9zcmMvbGliL3NlcnZpY2VzL2NyeXB0b3Byby9jcnlwdG8ucHJvLmFzeW5jLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQUk3RDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBZ0IsRUFBRSxJQUFZO1FBQ2pELElBQUksTUFBTSxHQUFxQixNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLG9DQUFrQixDQUFDO1FBQzVGLE1BQU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTlDLElBQUkscUJBQXFCLEdBQUcsd0NBQXdDLENBQUM7UUFDckUsTUFBTSxNQUFNLENBQUMsa0JBQWtCLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUV2RCxJQUFJLE1BQU0sR0FBcUIsTUFBTSxNQUFNLENBQUMsV0FBVyxDQUFDLGlCQUFpQixzQ0FBbUIsQ0FBQztRQUU3RixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRCxNQUFNLE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFekMsSUFBSSxrQ0FBa0MsR0FBRyxFQUFFLENBQUM7UUFDNUMsTUFBTSxNQUFNLENBQUMscUJBQXFCLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUV2RSxNQUFNLFVBQVUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFN0MsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVNLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBZ0IsRUFBRSxJQUFZLEVBQUUsV0FBb0IsS0FBSztRQUMvRSxJQUFJLE1BQU0sR0FBcUIsTUFBTSxNQUFNLENBQUMsV0FBVyxDQUFDLGlCQUFpQixvQ0FBa0IsQ0FBQztRQUM1RixNQUFNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU5QyxJQUFJLE1BQU0sR0FBeUIsTUFBTSxNQUFNLENBQUMsV0FBVyxDQUFDLGlCQUFpQixrREFBeUIsQ0FBQztRQUV2RyxNQUFNLE1BQU0sQ0FBQyx1QkFBdUIsbUNBQTBELENBQUM7UUFDL0YsTUFBTSxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLE1BQU0sVUFBVSxHQUFHLE1BQU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLDhCQUEwQyxRQUFRLENBQUMsQ0FBQztRQUVwRyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOztBQXRDc0IseUJBQUcsR0FBRyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFzeW5jLFxuICBDQURFU0NPTV9DQURFU19UWVBFLFxuICBDQURFU0NPTV9DT05URU5UX0VOQ09ESU5HX1RZUEUsXG4gIENBREVTQ09NX1NUT1JFX0xPQ0FUSU9OLCBDQVBJQ09NX1NUT1JFX05BTUVTLCBDQVBJQ09NX1NUT1JFX09QRU5fTU9ERSxcbiAgUHJvZ0lkc1xufSBmcm9tICdjYWRlc3BsdWdpbi10eXBlcyc7XG5pbXBvcnQgeyBDcnlwdG9Qcm9CYXNlU2VydmljZSB9IGZyb20gJy4vY3J5cHRvLnByby5iYXNlLnNlcnZpY2UnO1xuXG5leHBvcnQgY2xhc3MgQ3J5cHRvUHJvQXN5bmNTZXJ2aWNlIGV4dGVuZHMgQ3J5cHRvUHJvQmFzZVNlcnZpY2Uge1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkga2V5ID0gJ2NyeXB0b3Byb2FzeW5jJztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNpZ25YbWwoY2VydGlmaWNhdGU6IGFueSwgZGF0YTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBsZXQgc2lnbmVyOiBBc3luYy5JQ1BTaWduZXI2ID0gYXdhaXQgd2luZG93LmNhZGVzcGx1Z2luLkNyZWF0ZU9iamVjdEFzeW5jKFByb2dJZHMuQ1BTaWduZXIpO1xuICAgIGF3YWl0IHNpZ25lci5wcm9wc2V0X0NlcnRpZmljYXRlKGNlcnRpZmljYXRlKTtcblxuICAgIGxldCB0aW1lc3RhbXBfc2VydmljZV91cmwgPSAnaHR0cDovL3Rlc3RjYS5jcnlwdG9wcm8ucnUvdHNwL3RzcC5zcmYnO1xuICAgIGF3YWl0IHNpZ25lci5wcm9wc2V0X1RTQUFkZHJlc3ModGltZXN0YW1wX3NlcnZpY2VfdXJsKTtcblxuICAgIGxldCBzaWduZWQ6IEFzeW5jLklTaWduZWRYTUwgPSBhd2FpdCB3aW5kb3cuY2FkZXNwbHVnaW4uQ3JlYXRlT2JqZWN0QXN5bmMoUHJvZ0lkcy5TaWduZWRYTUwpO1xuXG4gICAgbGV0IGVuY29kZWRYbWwgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChkYXRhKSkpO1xuICAgIGF3YWl0IHNpZ25lZC5wcm9wc2V0X0NvbnRlbnQoZW5jb2RlZFhtbCk7XG5cbiAgICBsZXQgY2FkZXNfeG1sX3NpZ25hdHVyZV90eXBlX2VudmVsb3BlZCA9IDgwO1xuICAgIGF3YWl0IHNpZ25lZC5wcm9wc2V0X1NpZ25hdHVyZVR5cGUoY2FkZXNfeG1sX3NpZ25hdHVyZV90eXBlX2VudmVsb3BlZCk7XG5cbiAgICBjb25zdCBzaWduZWREYXRhID0gYXdhaXQgc2lnbmVkLlNpZ24oc2lnbmVyKTtcblxuICAgIHJldHVybiBzaWduZWREYXRhO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNpZ25CYXNlNjQoY2VydGlmaWNhdGU6IGFueSwgZGF0YTogc3RyaW5nLCBkZXRhY2hlZDogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBsZXQgc2lnbmVyOiBBc3luYy5JQ1BTaWduZXI2ID0gYXdhaXQgd2luZG93LmNhZGVzcGx1Z2luLkNyZWF0ZU9iamVjdEFzeW5jKFByb2dJZHMuQ1BTaWduZXIpO1xuICAgIGF3YWl0IHNpZ25lci5wcm9wc2V0X0NlcnRpZmljYXRlKGNlcnRpZmljYXRlKTtcblxuICAgIGxldCBzaWduZWQ6IEFzeW5jLklDUFNpZ25lZERhdGE1ID0gYXdhaXQgd2luZG93LmNhZGVzcGx1Z2luLkNyZWF0ZU9iamVjdEFzeW5jKFByb2dJZHMuQ2FkZXNTaWduZWREYXRhKTtcblxuICAgIGF3YWl0IHNpZ25lZC5wcm9wc2V0X0NvbnRlbnRFbmNvZGluZyhDQURFU0NPTV9DT05URU5UX0VOQ09ESU5HX1RZUEUuQ0FERVNDT01fQkFTRTY0X1RPX0JJTkFSWSk7XG4gICAgYXdhaXQgc2lnbmVkLnByb3BzZXRfQ29udGVudChkYXRhKTtcblxuICAgIGNvbnN0IHNpZ25lZERhdGEgPSBhd2FpdCBzaWduZWQuU2lnbkNhZGVzKHNpZ25lciwgQ0FERVNDT01fQ0FERVNfVFlQRS5DQURFU0NPTV9DQURFU19CRVMsIGRldGFjaGVkKTtcblxuICAgIHJldHVybiBzaWduZWREYXRhO1xuICB9XG59XG4iXX0=
|
|
@@ -81,4 +81,4 @@ export class CryptoProBaseService extends CryptoBaseService {
|
|
|
81
81
|
return certificates;
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLnByby5iYXNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtbWYtc2lnbmVyL3NyYy9saWIvc2VydmljZXMvY3J5cHRvcHJvL2NyeXB0by5wcm8uYmFzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLGFBQWE7QUFDYixPQUFPLGNBQWMsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFnQ3hFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxpQkFBaUI7SUFFekQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSTtRQUNmLE1BQU0sY0FBYyxFQUFFLENBQUM7UUFDdkIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFBQSxDQUFDO0lBRUssS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUEwQjtRQUNyRCxNQUFNLEtBQUssR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLDhCQUFlLENBQUM7UUFDeEUsTUFBTSxLQUFLLENBQUMsSUFBSSw2R0FDNkMsQ0FBQztRQUU5RCxJQUFJLFVBQVUsR0FBRyxNQUFNLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDMUMsSUFBSSxLQUFLLEdBQUcsTUFBTSxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ25DLElBQUksWUFBWSxHQUE0QixFQUFFLENBQUM7UUFFL0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FB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Q0FBQzs2QkFDbEI7eUJBQ0Y7NkJBQU07NEJBQ0wsUUFBUSxHQUFHLEtBQUssQ0FBQzt5QkFDbEI7cUJBQ0Y7aUJBQ0Y7Z0JBRUQsSUFBSSxRQUFRLElBQUksTUFBTSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRTtvQkFDcEQsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFFMUMsSUFBSSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLGlCQUFpQixFQUFFLEtBQUssR0FBRyxFQUFFO3dCQUM5RCxRQUFRLEdBQUcsS0FBSyxDQUFDO3FCQUNsQjtpQkFDRjthQUNGO1lBRUQsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNoQztTQUNGO1FBRUQsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ0FERVNDT01fU1RPUkVfTE9DQVRJT04sXG4gIENBUElDT01fU1RPUkVfTkFNRVMsXG4gIENBUElDT01fU1RPUkVfT1BFTl9NT0RFLFxuICBQcm9nSWRzLFxuICBBc3luY1xufSBmcm9tICdjYWRlc3BsdWdpbi10eXBlcyc7XG5pbXBvcnQgeyBDZXJ0aWZpY2F0ZUNoZWNrLCBDZXJ0aWZpY2F0ZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCBnZXRDYWRlc3BsdWdpbiBmcm9tICdhc3luYy1jYWRlc3BsdWdpbic7XG5pbXBvcnQgeyBDcnlwdG9CYXNlU2VydmljZSB9IGZyb20gJy4uL2NyeXB0by5iYXNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2VydGlmaWNhdGVBZGp1c3RlciB9IGZyb20gJy4uL2NlcnRpZmljYXRlLmFkanVzdGVyJztcbmltcG9ydCB7IFNpZ25lclR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vZW51bXMvc2lnbmVyLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBzdHJpcHBpbmdDaGFyYWN0ZXJzIH0gZnJvbSAnLi4vLi4vaGVscGVycy9zdHJpcHBpbmdDaGFyYWN0ZXJzJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBjYWRlc3BsdWdpbjogQXN5bmMuSVdlYkNsYXNzRmFjdG9yeTtcbiAgICBDUllQVE9fU0tJUF9DSEVDSz86IGJvb2xlYW47XG4gIH1cbn1cblxuaW50ZXJmYWNlIENlcnRpZmljYXRlRmlsdGVyIHtcbiAgY2VydGlmaWNhdGVDaGVjaz86IENlcnRpZmljYXRlQ2hlY2s7XG59XG5cbmludGVyZmFjZSBDZXJ0aWZpY2F0ZSB7XG4gIGlkOiBudW1iZXI7XG4gIGNlcnRpZmljYXRlOiBhbnk7XG4gIHN1YmplY3ROYW1lOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgY246IHN0cmluZztcbiAgZmlvOiBzdHJpbmc7XG4gIHBvc3Q6IHN0cmluZztcbiAgb2dybjogc3RyaW5nO1xuICBvcmdhbml6YXRpb246IHN0cmluZztcbiAgaW5uOiBzdHJpbmc7XG4gIHZhbGlkRnJvbURhdGU6IHN0cmluZztcbiAgdmFsaWRUb0RhdGU6IHN0cmluZztcbiAgdGh1bWJwcmludDogc3RyaW5nO1xuICBpc3N1ZXJOYW1lOiBzdHJpbmc7XG4gIHNlcmlhbE51bWJlcjogc3RyaW5nO1xuICBpc0V4cGlyZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBDcnlwdG9Qcm9CYXNlU2VydmljZSBleHRlbmRzIENyeXB0b0Jhc2VTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXQoKTogUHJvbWlzZTxDcnlwdG9CYXNlU2VydmljZT4ge1xuICAgIGF3YWl0IGdldENhZGVzcGx1Z2luKCk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzKTtcbiAgfTtcblxuICBwdWJsaWMgYXN5bmMgZ2V0Q2VydGlmaWNhdGVzKGZpbHRlcj86IENlcnRpZmljYXRlRmlsdGVyKTogUHJvbWlzZTxDZXJ0aWZpY2F0ZU1vZGVsW10+IHtcbiAgICBjb25zdCBzdG9yZSA9IGF3YWl0IHdpbmRvdy5jYWRlc3BsdWdpbi5DcmVhdGVPYmplY3RBc3luYyhQcm9nSWRzLlN0b3JlKTtcbiAgICBhd2FpdCBzdG9yZS5PcGVuKENBREVTQ09NX1NUT1JFX0xPQ0FUSU9OLkNBUElDT01fQ1VSUkVOVF9VU0VSX1NUT1JFLCBDQVBJQ09NX1NUT1JFX05BTUVTLkNBUElDT01fTVlfU1RPUkUsXG4gICAgICBDQVBJQ09NX1NUT1JFX09QRU5fTU9ERS5DQVBJQ09NX1NUT1JFX09QRU5fTUFYSU1VTV9BTExPV0VEKTtcblxuICAgIGxldCBzdG9yZUNlcnRzID0gYXdhaXQgc3RvcmUuQ2VydGlmaWNhdGVzO1xuICAgIGxldCBjb3VudCA9IGF3YWl0IHN0b3JlQ2VydHMuQ291bnQ7XG4gICAgbGV0IGNlcnRpZmljYXRlczogQXJyYXk8Q2VydGlmaWNhdGVNb2RlbD4gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGNvdW50OyBpKyspIHtcbiAgICAgIGxldCBjZXJ0ID0gYXdhaXQgc3RvcmVDZXJ0cy5JdGVtKGkpO1xuICAgICAgbGV0IHZhbGlkRnJvbURhdGUgPSBuZXcgRGF0ZShhd2FpdCBjZXJ0LlZhbGlkRnJvbURhdGUpO1xuICAgICAgbGV0IHZhbGlkVG9EYXRlID0gbmV3IERhdGUoYXdhaXQgY2VydC5WYWxpZFRvRGF0ZSk7XG4gICAgICBjb25zdCBzdWJqZWN0TmFtZSA9IGF3YWl0IGNlcnQuU3ViamVjdE5hbWU7XG5cbiAgICAgIGNvbnN0IGNlcnRpZmljYXRlOiBDZXJ0aWZpY2F0ZSA9IHtcbiAgICAgICAgaWQ6IGksXG4gICAgICAgIGNlcnRpZmljYXRlOiBjZXJ0LFxuICAgICAgICBzdWJqZWN0TmFtZTogc3ViamVjdE5hbWUsXG4gICAgICAgIG5hbWU6IENlcnRpZmljYXRlQWRqdXN0ZXIuZ2V0Q2VydEluZm9TdHJpbmcoc3ViamVjdE5hbWUsIHZhbGlkRnJvbURhdGUpLFxuICAgICAgICBjbjogQ2VydGlmaWNhdGVBZGp1c3Rlci5nZXRDZXJ0TmFtZShzdWJqZWN0TmFtZSksXG4gICAgICAgIGZpbzogQ2VydGlmaWNhdGVBZGp1c3Rlci5nZXRDZXJ0RmlvKHN1YmplY3ROYW1lKSxcbiAgICAgICAgcG9zdDogQ2VydGlmaWNhdGVBZGp1c3Rlci5nZXRDZXJ0UG9zdChzdWJqZWN0TmFtZSksXG4gICAgICAgIG9ncm46IENlcnRpZmljYXRlQWRqdXN0ZXIuZ2V0Q2VydE9ncm4oc3ViamVjdE5hbWUpLFxuICAgICAgICBvcmdhbml6YXRpb246IENlcnRpZmljYXRlQWRqdXN0ZXIuZ2V0Q2VydE9yZyhzdWJqZWN0TmFtZSksXG4gICAgICAgIGlubjogQ2VydGlmaWNhdGVBZGp1c3Rlci5nZXRDZXJ0SW5uKHN1YmplY3ROYW1lKSxcbiAgICAgICAgdmFsaWRGcm9tRGF0ZTogdmFsaWRGcm9tRGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoJ3J1LVJVJyksXG4gICAgICAgIHZhbGlkVG9EYXRlOiB2YWxpZFRvRGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoJ3J1LVJVJyksXG4gICAgICAgIHRodW1icHJpbnQ6IGF3YWl0IGNlcnQuVGh1bWJwcmludCxcbiAgICAgICAgaXNzdWVyTmFtZTogYXdhaXQgY2VydC5Jc3N1ZXJOYW1lLFxuICAgICAgICBzZXJpYWxOdW1iZXI6IGF3YWl0IGNlcnQuU2VyaWFsTnVtYmVyLFxuICAgICAgICBpc0V4cGlyZWQ6IHZhbGlkVG9EYXRlIDwgbmV3IERhdGUoKVxuICAgICAgfTtcblxuICAgICAgbGV0IGZpbHRlck9rID0gdHJ1ZTtcbiAgICAgIGlmICh3aW5kb3cuQ1JZUFRPX1NLSVBfQ0hFQ0sgIT09IHRydWUpIHtcbiAgICAgICAgaWYgKGZpbHRlcj8uY2VydGlmaWNhdGVDaGVjaz8uc2lnbmVyVHlwZSA9PT0gU2lnbmVyVHlwZUVudW0uRkwpIHtcbiAgICAgICAgICBmaWx0ZXJPayA9ICFjZXJ0aWZpY2F0ZS5vZ3JuO1xuICAgICAgICB9IGVsc2UgaWYgKFtTaWduZXJUeXBlRW51bS5VTCwgU2lnbmVyVHlwZUVudW0uSVBdXG4gICAgICAgICAgLmluZGV4T2YoZmlsdGVyPy5jZXJ0aWZpY2F0ZUNoZWNrPy5zaWduZXJUeXBlIHx8IFNpZ25lclR5cGVFbnVtLlVua25vd24pID4gLTEpIHtcbiAgICAgICAgICBmaWx0ZXJPayA9IGNlcnRpZmljYXRlLm9ncm4gPyB0cnVlIDogZmFsc2U7XG4gICAgICAgICAgaWYgKGZpbHRlck9rKSB7XG4gICAgICAgICAgICBjb25zdCBvcmdhbml6YXRpb24gPSBjZXJ0aWZpY2F0ZS5vcmdhbml6YXRpb24gfHwgY2VydGlmaWNhdGUuY247XG5cbiAgICAgICAgICAgIGlmIChvcmdhbml6YXRpb24pIHtcbiAgICAgICAgICAgICAgY29uc3Qgb3JnSXNWYWxpZCA9IChmaWx0ZXI/LmNlcnRpZmljYXRlQ2hlY2s/LmZ1bGxOYW1lICYmXG4gICAgICAgICAgICAgICAgc3RyaXBwaW5nQ2hhcmFjdGVycyhvcmdhbml6YXRpb24pID09IHN0cmlwcGluZ0NoYXJhY3RlcnMoZmlsdGVyPy5jZXJ0aWZpY2F0ZUNoZWNrPy5mdWxsTmFtZSkpXG4gICAgICAgICAgICAgICAgfHwgKGZpbHRlcj8uY2VydGlmaWNhdGVDaGVjaz8uc2hvcnROYW1lICYmXG4gICAgICAgICAgICAgICAgICBzdHJpcHBpbmdDaGFyYWN0ZXJzKG9yZ2FuaXphdGlvbikgPT0gc3RyaXBwaW5nQ2hhcmFjdGVycyhmaWx0ZXI/LmNlcnRpZmljYXRlQ2hlY2s/LnNob3J0TmFtZSkpO1xuICAgICAgICAgICAgICBpZiAoIW9yZ0lzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJPayA9IGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWx0ZXJPayA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWx0ZXJPayAmJiBmaWx0ZXI/LmNlcnRpZmljYXRlQ2hlY2s/LnNpZ25lclR5cGUpIHtcbiAgICAgICAgICBjb25zdCBmaW8gPSBjZXJ0aWZpY2F0ZS5maW8udG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgIGlmIChmaWx0ZXI/LmNlcnRpZmljYXRlQ2hlY2s/LmZpbz8udG9Mb2NhbGVMb3dlckNhc2UoKSAhPT0gZmlvKSB7XG4gICAgICAgICAgICBmaWx0ZXJPayA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmlsdGVyT2spIHtcbiAgICAgICAgY2VydGlmaWNhdGVzLnB1c2goY2VydGlmaWNhdGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGF3YWl0IHN0b3JlLkNsb3NlKCk7XG4gICAgcmV0dXJuIGNlcnRpZmljYXRlcztcbiAgfVxufVxuIl19
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLnByby5iYXNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtbWYtc2lnbmVyL3NyYy9saWIvc2VydmljZXMvY3J5cHRvcHJvL2NyeXB0by5wcm8uYmFzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLGFBQWE7QUFDYixPQUFPLGNBQWMsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFnQ3hFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxpQkFBaUI7SUFFekQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSTtRQUNmLE1BQU0sY0FBYyxFQUFFLENBQUM7UUFDdkIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFBQSxDQUFDO0lBRUssS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUEwQjtRQUNyRCxNQUFNLEtBQUssR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLDhCQUFlLENBQUM7UUFDeEUsTUFBTSxLQUFLLENBQUMsSUFBSSw2R0FDNkMsQ0FBQztRQUU5RCxJQUFJLFVBQVUsR0FBRyxNQUFNLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDMUMsSUFBSSxLQUFLLEdBQUcsTUFBTSxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ25DLElBQUksWUFBWSxHQUE0QixFQUFFLENBQUM7UUFFL0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMvQixJQUFJLElBQUksR0FBRyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsSUFBSSxhQUFhLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdkQsSUFBSSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbkQsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDO1lBRTNDLE1BQU0sV0FBVyxHQUFnQjtnQkFDL0IsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLFdBQVcsRUFBRSxXQUFXO2dCQUN4QixJQUFJLEVBQUUsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQztnQkFDdkUsRUFBRSxFQUFFLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7Z0JBQ2hELEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO2dCQUNoRCxJQUFJLEVBQUUsbUJBQW1CLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztnQkFDbEQsSUFBSSxFQUFFLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7Z0JBQ2xELFlBQVksRUFBRSxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO2dCQUN6RCxHQUFHLEVBQUUsbUJBQW1CLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztnQkFDaEQsYUFBYSxFQUFFLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7Z0JBQ3hELFdBQVcsRUFBRSxXQUFXLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDO2dCQUNwRCxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUMsVUFBVTtnQkFDakMsVUFBVSxFQUFFLE1BQU0sSUFBSSxDQUFDLFVBQVU7Z0JBQ2pDLFlBQVksRUFBRSxNQUFNLElBQUksQ0FBQyxZQUFZO2dCQUNyQyxTQUFTLEVBQUUsV0FBVyxHQUFHLElBQUksSUFBSSxFQUFFO2FBQ3BDLENBQUM7WUFFRixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEtBQUssSUFBSSxFQUFFO2dCQUNyQyxJQUFJLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEtBQUssY0FBYyxDQUFDLEVBQUUsRUFBRTtvQkFDOUQsUUFBUSxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztpQkFDOUI7cUJBQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQztxQkFDOUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUMvRSxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQzNDLElBQUksUUFBUSxFQUFFO3dCQUNaLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxZQUFZLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQzt3QkFFaEUsSUFBSSxZQUFZLEVBQUU7NEJBQ2hCLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLFFBQVE7Z0NBQ3BELG1CQUFtQixDQUFDLFlBQVksQ0FBQyxJQUFJLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQzttQ0FDMUYsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUztvQ0FDckMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLElBQUksbUJBQW1CLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7NEJBQ25HLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0NBQ2YsUUFBUSxHQUFHLEtBQUssQ0FBQzs2QkFDbEI7eUJBQ0Y7NkJBQU07NEJBQ0wsUUFBUSxHQUFHLEtBQUssQ0FBQzt5QkFDbEI7cUJBQ0Y7aUJBQ0Y7Z0JBRUQsSUFBSSxRQUFRLElBQUksTUFBTSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRTtvQkFDcEQsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFFMUMsSUFBSSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLGlCQUFpQixFQUFFLEtBQUssR0FBRyxFQUFFO3dCQUM5RCxRQUFRLEdBQUcsS0FBSyxDQUFDO3FCQUNsQjtpQkFDRjthQUNGO1lBRUQsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNoQztTQUNGO1FBRUQsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXN5bmMsXG4gIENBREVTQ09NX1NUT1JFX0xPQ0FUSU9OLFxuICBDQVBJQ09NX1NUT1JFX05BTUVTLFxuICBDQVBJQ09NX1NUT1JFX09QRU5fTU9ERSxcbiAgUHJvZ0lkc1xufSBmcm9tICdjYWRlc3BsdWdpbi10eXBlcyc7XG5pbXBvcnQgeyBDZXJ0aWZpY2F0ZUNoZWNrLCBDZXJ0aWZpY2F0ZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCBnZXRDYWRlc3BsdWdpbiBmcm9tICdhc3luYy1jYWRlc3BsdWdpbic7XG5pbXBvcnQgeyBDcnlwdG9CYXNlU2VydmljZSB9IGZyb20gJy4uL2NyeXB0by5iYXNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2VydGlmaWNhdGVBZGp1c3RlciB9IGZyb20gJy4uL2NlcnRpZmljYXRlLmFkanVzdGVyJztcbmltcG9ydCB7IFNpZ25lclR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vZW51bXMvc2lnbmVyLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBzdHJpcHBpbmdDaGFyYWN0ZXJzIH0gZnJvbSAnLi4vLi4vaGVscGVycy9zdHJpcHBpbmdDaGFyYWN0ZXJzJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBjYWRlc3BsdWdpbjogQXN5bmMuSVdlYkNsYXNzRmFjdG9yeTtcbiAgICBDUllQVE9fU0tJUF9DSEVDSz86IGJvb2xlYW47XG4gIH1cbn1cblxuaW50ZXJmYWNlIENlcnRpZmljYXRlRmlsdGVyIHtcbiAgY2VydGlmaWNhdGVDaGVjaz86IENlcnRpZmljYXRlQ2hlY2s7XG59XG5cbmludGVyZmFjZSBDZXJ0aWZpY2F0ZSB7XG4gIGlkOiBudW1iZXI7XG4gIGNlcnRpZmljYXRlOiBhbnk7XG4gIHN1YmplY3ROYW1lOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgY246IHN0cmluZztcbiAgZmlvOiBzdHJpbmc7XG4gIHBvc3Q6IHN0cmluZztcbiAgb2dybjogc3RyaW5nO1xuICBvcmdhbml6YXRpb246IHN0cmluZztcbiAgaW5uOiBzdHJpbmc7XG4gIHZhbGlkRnJvbURhdGU6IHN0cmluZztcbiAgdmFsaWRUb0RhdGU6IHN0cmluZztcbiAgdGh1bWJwcmludDogc3RyaW5nO1xuICBpc3N1ZXJOYW1lOiBzdHJpbmc7XG4gIHNlcmlhbE51bWJlcjogc3RyaW5nO1xuICBpc0V4cGlyZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBDcnlwdG9Qcm9CYXNlU2VydmljZSBleHRlbmRzIENyeXB0b0Jhc2VTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXQoKTogUHJvbWlzZTxDcnlwdG9CYXNlU2VydmljZT4ge1xuICAgIGF3YWl0IGdldENhZGVzcGx1Z2luKCk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzKTtcbiAgfTtcblxuICBwdWJsaWMgYXN5bmMgZ2V0Q2VydGlmaWNhdGVzKGZpbHRlcj86IENlcnRpZmljYXRlRmlsdGVyKTogUHJvbWlzZTxDZXJ0aWZpY2F0ZU1vZGVsW10+IHtcbiAgICBjb25zdCBzdG9yZSA9IGF3YWl0IHdpbmRvdy5jYWRlc3BsdWdpbi5DcmVhdGVPYmplY3RBc3luYyhQcm9nSWRzLlN0b3JlKTtcbiAgICBhd2FpdCBzdG9yZS5PcGVuKENBREVTQ09NX1NUT1JFX0xPQ0FUSU9OLkNBUElDT01fQ1VSUkVOVF9VU0VSX1NUT1JFLCBDQVBJQ09NX1NUT1JFX05BTUVTLkNBUElDT01fTVlfU1RPUkUsXG4gICAgICBDQVBJQ09NX1NUT1JFX09QRU5fTU9ERS5DQVBJQ09NX1NUT1JFX09QRU5fTUFYSU1VTV9BTExPV0VEKTtcblxuICAgIGxldCBzdG9yZUNlcnRzID0gYXdhaXQgc3RvcmUuQ2VydGlmaWNhdGVzO1xuICAgIGxldCBjb3VudCA9IGF3YWl0IHN0b3JlQ2VydHMuQ291bnQ7XG4gICAgbGV0IGNlcnRpZmljYXRlczogQXJyYXk8Q2VydGlmaWNhdGVNb2RlbD4gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGNvdW50OyBpKyspIHtcbiAgICAgIGxldCBjZXJ0ID0gYXdhaXQgc3RvcmVDZXJ0cy5JdGVtKGkpO1xuICAgICAgbGV0IHZhbGlkRnJvbURhdGUgPSBuZXcgRGF0ZShhd2FpdCBjZXJ0LlZhbGlkRnJvbURhdGUpO1xuICAgICAgbGV0IHZhbGlkVG9EYXRlID0gbmV3IERhdGUoYXdhaXQgY2VydC5WYWxpZFRvRGF0ZSk7XG4gICAgICBjb25zdCBzdWJqZWN0TmFtZSA9IGF3YWl0IGNlcnQuU3ViamVjdE5hbWU7XG5cbiAgICAgIGNvbnN0IGNlcnRpZmljYXRlOiBDZXJ0aWZpY2F0ZSA9IHtcbiAgICAgICAgaWQ6IGksXG4gICAgICAgIGNlcnRpZmljYXRlOiBjZXJ0LFxuICAgICAgICBzdWJqZWN0TmFtZTogc3ViamVjdE5hbWUsXG4gICAgICAgIG5hbWU6IENlcnRpZmljYXRlQWRqdXN0ZXIuZ2V0Q2VydEluZm9TdHJpbmcoc3ViamVjdE5hbWUsIHZhbGlkRnJvbURhdGUpLFxuICAgICAgICBjbjogQ2VydGlmaWNhdGVBZGp1c3Rlci5nZXRDZXJ0TmFtZShzdWJqZWN0TmFtZSksXG4gICAgICAgIGZpbzogQ2VydGlmaWNhdGVBZGp1c3Rlci5nZXRDZXJ0RmlvKHN1YmplY3ROYW1lKSxcbiAgICAgICAgcG9zdDogQ2VydGlmaWNhdGVBZGp1c3Rlci5nZXRDZXJ0UG9zdChzdWJqZWN0TmFtZSksXG4gICAgICAgIG9ncm46IENlcnRpZmljYXRlQWRqdXN0ZXIuZ2V0Q2VydE9ncm4oc3ViamVjdE5hbWUpLFxuICAgICAgICBvcmdhbml6YXRpb246IENlcnRpZmljYXRlQWRqdXN0ZXIuZ2V0Q2VydE9yZyhzdWJqZWN0TmFtZSksXG4gICAgICAgIGlubjogQ2VydGlmaWNhdGVBZGp1c3Rlci5nZXRDZXJ0SW5uKHN1YmplY3ROYW1lKSxcbiAgICAgICAgdmFsaWRGcm9tRGF0ZTogdmFsaWRGcm9tRGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoJ3J1LVJVJyksXG4gICAgICAgIHZhbGlkVG9EYXRlOiB2YWxpZFRvRGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoJ3J1LVJVJyksXG4gICAgICAgIHRodW1icHJpbnQ6IGF3YWl0IGNlcnQuVGh1bWJwcmludCxcbiAgICAgICAgaXNzdWVyTmFtZTogYXdhaXQgY2VydC5Jc3N1ZXJOYW1lLFxuICAgICAgICBzZXJpYWxOdW1iZXI6IGF3YWl0IGNlcnQuU2VyaWFsTnVtYmVyLFxuICAgICAgICBpc0V4cGlyZWQ6IHZhbGlkVG9EYXRlIDwgbmV3IERhdGUoKVxuICAgICAgfTtcblxuICAgICAgbGV0IGZpbHRlck9rID0gdHJ1ZTtcbiAgICAgIGlmICh3aW5kb3cuQ1JZUFRPX1NLSVBfQ0hFQ0sgIT09IHRydWUpIHtcbiAgICAgICAgaWYgKGZpbHRlcj8uY2VydGlmaWNhdGVDaGVjaz8uc2lnbmVyVHlwZSA9PT0gU2lnbmVyVHlwZUVudW0uRkwpIHtcbiAgICAgICAgICBmaWx0ZXJPayA9ICFjZXJ0aWZpY2F0ZS5vZ3JuO1xuICAgICAgICB9IGVsc2UgaWYgKFtTaWduZXJUeXBlRW51bS5VTCwgU2lnbmVyVHlwZUVudW0uSVBdXG4gICAgICAgICAgLmluZGV4T2YoZmlsdGVyPy5jZXJ0aWZpY2F0ZUNoZWNrPy5zaWduZXJUeXBlIHx8IFNpZ25lclR5cGVFbnVtLlVua25vd24pID4gLTEpIHtcbiAgICAgICAgICBmaWx0ZXJPayA9IGNlcnRpZmljYXRlLm9ncm4gPyB0cnVlIDogZmFsc2U7XG4gICAgICAgICAgaWYgKGZpbHRlck9rKSB7XG4gICAgICAgICAgICBjb25zdCBvcmdhbml6YXRpb24gPSBjZXJ0aWZpY2F0ZS5vcmdhbml6YXRpb24gfHwgY2VydGlmaWNhdGUuY247XG5cbiAgICAgICAgICAgIGlmIChvcmdhbml6YXRpb24pIHtcbiAgICAgICAgICAgICAgY29uc3Qgb3JnSXNWYWxpZCA9IChmaWx0ZXI/LmNlcnRpZmljYXRlQ2hlY2s/LmZ1bGxOYW1lICYmXG4gICAgICAgICAgICAgICAgc3RyaXBwaW5nQ2hhcmFjdGVycyhvcmdhbml6YXRpb24pID09IHN0cmlwcGluZ0NoYXJhY3RlcnMoZmlsdGVyPy5jZXJ0aWZpY2F0ZUNoZWNrPy5mdWxsTmFtZSkpXG4gICAgICAgICAgICAgICAgfHwgKGZpbHRlcj8uY2VydGlmaWNhdGVDaGVjaz8uc2hvcnROYW1lICYmXG4gICAgICAgICAgICAgICAgICBzdHJpcHBpbmdDaGFyYWN0ZXJzKG9yZ2FuaXphdGlvbikgPT0gc3RyaXBwaW5nQ2hhcmFjdGVycyhmaWx0ZXI/LmNlcnRpZmljYXRlQ2hlY2s/LnNob3J0TmFtZSkpO1xuICAgICAgICAgICAgICBpZiAoIW9yZ0lzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJPayA9IGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWx0ZXJPayA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWx0ZXJPayAmJiBmaWx0ZXI/LmNlcnRpZmljYXRlQ2hlY2s/LnNpZ25lclR5cGUpIHtcbiAgICAgICAgICBjb25zdCBmaW8gPSBjZXJ0aWZpY2F0ZS5maW8udG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgIGlmIChmaWx0ZXI/LmNlcnRpZmljYXRlQ2hlY2s/LmZpbz8udG9Mb2NhbGVMb3dlckNhc2UoKSAhPT0gZmlvKSB7XG4gICAgICAgICAgICBmaWx0ZXJPayA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmlsdGVyT2spIHtcbiAgICAgICAgY2VydGlmaWNhdGVzLnB1c2goY2VydGlmaWNhdGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGF3YWl0IHN0b3JlLkNsb3NlKCk7XG4gICAgcmV0dXJuIGNlcnRpZmljYXRlcztcbiAgfVxufVxuIl19
|
|
@@ -47,4 +47,4 @@ export class CryptoProTsService extends CryptoProBaseService {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
CryptoProTsService.key = 'cryptoprots';
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLnByby50cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LW1mLXNpZ25lci9zcmMvbGliL3NlcnZpY2VzL2NyeXB0b3Byby9jcnlwdG8ucHJvLnRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFTakUsTUFBTSxPQUFPLGtCQUFtQixTQUFRLG9CQUFvQjtJQUkxRDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUVELElBQVkscUJBQXFCO1FBQy9CLE9BQU8sd0NBQXdDLENBQUM7SUFDbEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBZ0IsRUFBRSxJQUFZO1FBQzlDLE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsOEJBQWUsQ0FBQztRQUN4RSxNQUFNLEtBQUssQ0FBQyxJQUFJLDZHQUM2QyxDQUFDO1FBRTlELElBQUksTUFBTSxHQUFxQixNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLG9DQUFrQixDQUFDO1FBQzVGLE1BQU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTlDLElBQUksU0FBUyxHQUFxQixNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLHNDQUFtQixDQUFDO1FBRWhHLElBQUksU0FBUyxHQUFxQixNQUFNLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoRSxJQUFJLFNBQVMsR0FBZSxNQUFNLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDdEQsSUFBSSxZQUFZLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxDQUFDO1FBRXpDLElBQUksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXhFLDRFQUE0RTtRQUU1RSxNQUFNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUU1RCxJQUFJLElBQUksRUFBRTtZQUNSLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFELE1BQU0sU0FBUyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM3QztRQUVELE1BQU0sU0FBUyxDQUFDLHFCQUFxQiwrQ0FBbUUsQ0FBQztRQUN6RyxNQUFNLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRCxNQUFNLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVuRCxJQUFJLFNBQVMsR0FBRyxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFN0MsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFcEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVPLGlCQUFpQixDQUFDLFlBQW9CO1FBQzVDLElBQUksVUFBVSxHQUFHLEVBQUUsRUFBRSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBRXZDLElBQUksWUFBWSxJQUFJLG1CQUFtQixFQUFFLEVBQUksc0RBQXNEO1lBQ2pHLFVBQVUsR0FBRyw0RUFBNEUsQ0FBQztZQUMxRixZQUFZLEdBQUcsOERBQThELENBQUM7U0FDL0U7YUFBTSxJQUFJLFlBQVksSUFBSSxtQkFBbUIsRUFBRSxFQUFJLHNEQUFzRDtZQUN4RyxVQUFVLEdBQUcsNEVBQTRFLENBQUM7WUFDMUYsWUFBWSxHQUFHLDhEQUE4RCxDQUFDO1NBQy9FO2FBQU0sSUFBSSxZQUFZLElBQUksZ0JBQWdCLEVBQUUsRUFBRyw2QkFBNkI7WUFDM0UsVUFBVSxHQUFHLG9FQUFvRSxDQUFDO1lBQ2xGLFlBQVksR0FBRyxzREFBc0QsQ0FBQztTQUN2RTtRQUVELE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQzs7QUE3RHNCLHNCQUFHLEdBQUcsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXN5bmMsXG4gIENBREVTQ09NX1NUT1JFX0xPQ0FUSU9OLCBDQURFU0NPTV9YTUxfU0lHTkFUVVJFX1RZUEUsXG4gIENBUElDT01fU1RPUkVfTkFNRVMsXG4gIENBUElDT01fU1RPUkVfT1BFTl9NT0RFLFxuICBQcm9nSWRzXG59IGZyb20gJ2NhZGVzcGx1Z2luLXR5cGVzJztcbmltcG9ydCB7IENyeXB0b1Byb0Jhc2VTZXJ2aWNlIH0gZnJvbSAnLi9jcnlwdG8ucHJvLmJhc2Uuc2VydmljZSc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgY2FkZXNwbHVnaW46IEFzeW5jLklXZWJDbGFzc0ZhY3Rvcnk7XG4gICAgQ1JZUFRPX1NLSVBfQ0hFQ0s/OiBib29sZWFuO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDcnlwdG9Qcm9Uc1NlcnZpY2UgZXh0ZW5kcyBDcnlwdG9Qcm9CYXNlU2VydmljZSB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBrZXkgPSAnY3J5cHRvcHJvdHMnO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBUSU1FU1RBTVBfU0VSVklDRV9VUkwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2h0dHA6Ly90ZXN0Y2EuY3J5cHRvcHJvLnJ1L3RzcC90c3Auc3JmJztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzaWduKGNlcnRpZmljYXRlOiBhbnksIGRhdGE6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3Qgc3RvcmUgPSBhd2FpdCB3aW5kb3cuY2FkZXNwbHVnaW4uQ3JlYXRlT2JqZWN0QXN5bmMoUHJvZ0lkcy5TdG9yZSk7XG4gICAgYXdhaXQgc3RvcmUuT3BlbihDQURFU0NPTV9TVE9SRV9MT0NBVElPTi5DQVBJQ09NX0NVUlJFTlRfVVNFUl9TVE9SRSwgQ0FQSUNPTV9TVE9SRV9OQU1FUy5DQVBJQ09NX01ZX1NUT1JFLFxuICAgICAgQ0FQSUNPTV9TVE9SRV9PUEVOX01PREUuQ0FQSUNPTV9TVE9SRV9PUEVOX01BWElNVU1fQUxMT1dFRCk7XG5cbiAgICBsZXQgc2lnbmVyOiBBc3luYy5JQ1BTaWduZXI2ID0gYXdhaXQgd2luZG93LmNhZGVzcGx1Z2luLkNyZWF0ZU9iamVjdEFzeW5jKFByb2dJZHMuQ1BTaWduZXIpO1xuICAgIGF3YWl0IHNpZ25lci5wcm9wc2V0X0NlcnRpZmljYXRlKGNlcnRpZmljYXRlKTtcblxuICAgIGxldCBzaWduZWRYTUw6IEFzeW5jLklTaWduZWRYTUwgPSBhd2FpdCB3aW5kb3cuY2FkZXNwbHVnaW4uQ3JlYXRlT2JqZWN0QXN5bmMoUHJvZ0lkcy5TaWduZWRYTUwpO1xuXG4gICAgbGV0IHB1YmxpY0tleTogQXN5bmMuSVB1YmxpY0tleSA9IGF3YWl0IGNlcnRpZmljYXRlLlB1YmxpY0tleSgpO1xuICAgIGxldCBhbGdvcml0aG06IEFzeW5jLklPSUQgPSBhd2FpdCBwdWJsaWNLZXkuQWxnb3JpdGhtO1xuICAgIGxldCBhbGdvcml0aG1PaWQgPSBhd2FpdCBhbGdvcml0aG0uVmFsdWU7XG5cbiAgICBsZXQgeyBzaWduTWV0aG9kLCBkaWdlc3RNZXRob2QgfSA9IHRoaXMuZ2V0U2lnbmluZ01ldGhvZHMoYWxnb3JpdGhtT2lkKTtcblxuICAgIC8vYXdhaXQgc2lnbmVyLnByb3BzZXRfT3B0aW9ucyhhcGkuQ0FQSUNPTV9DRVJUSUZJQ0FURV9JTkNMVURFX1dIT0xFX0NIQUlOKTtcblxuICAgIGF3YWl0IHNpZ25lci5wcm9wc2V0X1RTQUFkZHJlc3ModGhpcy5USU1FU1RBTVBfU0VSVklDRV9VUkwpO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGxldCBlbmNvZGVkWG1sID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZGF0YSkpKTtcbiAgICAgIGF3YWl0IHNpZ25lZFhNTC5wcm9wc2V0X0NvbnRlbnQoZW5jb2RlZFhtbCk7XG4gICAgfVxuXG4gICAgYXdhaXQgc2lnbmVkWE1MLnByb3BzZXRfU2lnbmF0dXJlVHlwZShDQURFU0NPTV9YTUxfU0lHTkFUVVJFX1RZUEUuQ0FERVNDT01fWE1MX1NJR05BVFVSRV9UWVBFX0VOVkVMT1BFRCk7XG4gICAgYXdhaXQgc2lnbmVkWE1MLnByb3BzZXRfU2lnbmF0dXJlTWV0aG9kKHNpZ25NZXRob2QpO1xuICAgIGF3YWl0IHNpZ25lZFhNTC5wcm9wc2V0X0RpZ2VzdE1ldGhvZChkaWdlc3RNZXRob2QpO1xuXG4gICAgbGV0IHNpZ25hdHVyZSA9IGF3YWl0IHNpZ25lZFhNTC5TaWduKHNpZ25lcik7XG5cbiAgICBhd2FpdCBzdG9yZS5DbG9zZSgpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2lnbmluZ01ldGhvZHMoYWxnb3JpdGhtT2lkOiBzdHJpbmcpOiB7IHNpZ25NZXRob2Q6IHN0cmluZywgZGlnZXN0TWV0aG9kOiBzdHJpbmcgfSB7XG4gICAgbGV0IHNpZ25NZXRob2QgPSAnJywgZGlnZXN0TWV0aG9kID0gJyc7XG5cbiAgICBpZiAoYWxnb3JpdGhtT2lkID09ICcxLjIuNjQzLjcuMS4xLjEuMScpIHsgICAvLyDQsNC70LPQvtGA0LjRgtC8INC/0L7QtNC/0LjRgdC4INCT0J7QodCiINCgIDM0LjEwLTIwMTIg0YEg0LrQu9GO0YfQvtC8IDI1NiDQsdC40YJcbiAgICAgIHNpZ25NZXRob2QgPSAndXJuOmlldGY6cGFyYW1zOnhtbDpuczpjcHhtbHNlYzphbGdvcml0aG1zOmdvc3RyMzQxMDIwMTItZ29zdHIzNDExMjAxMi0yNTYnO1xuICAgICAgZGlnZXN0TWV0aG9kID0gJ3VybjppZXRmOnBhcmFtczp4bWw6bnM6Y3B4bWxzZWM6YWxnb3JpdGhtczpnb3N0cjM0MTEyMDEyLTI1Nic7XG4gICAgfSBlbHNlIGlmIChhbGdvcml0aG1PaWQgPT0gJzEuMi42NDMuNy4xLjEuMS4yJykgeyAgIC8vINCw0LvQs9C+0YDQuNGC0Lwg0L/QvtC00L/QuNGB0Lgg0JPQntCh0KIg0KAgMzQuMTAtMjAxMiDRgSDQutC70Y7Rh9C+0LwgNTEyINCx0LjRglxuICAgICAgc2lnbk1ldGhvZCA9ICd1cm46aWV0ZjpwYXJhbXM6eG1sOm5zOmNweG1sc2VjOmFsZ29yaXRobXM6Z29zdHIzNDEwMjAxMi1nb3N0cjM0MTEyMDEyLTUxMic7XG4gICAgICBkaWdlc3RNZXRob2QgPSAndXJuOmlldGY6cGFyYW1zOnhtbDpuczpjcHhtbHNlYzphbGdvcml0aG1zOmdvc3RyMzQxMTIwMTItNTEyJztcbiAgICB9IGVsc2UgaWYgKGFsZ29yaXRobU9pZCA9PSAnMS4yLjY0My4yLjIuMTknKSB7ICAvLyDQsNC70LPQvtGA0LjRgtC8INCT0J7QodCiINCgIDM0LjEwLTIwMDFcbiAgICAgIHNpZ25NZXRob2QgPSAndXJuOmlldGY6cGFyYW1zOnhtbDpuczpjcHhtbHNlYzphbGdvcml0aG1zOmdvc3RyMzQxMDIwMDEtZ29zdHIzNDExJztcbiAgICAgIGRpZ2VzdE1ldGhvZCA9ICd1cm46aWV0ZjpwYXJhbXM6eG1sOm5zOmNweG1sc2VjOmFsZ29yaXRobXM6Z29zdHIzNDExJztcbiAgICB9XG5cbiAgICByZXR1cm4geyBzaWduTWV0aG9kLCBkaWdlc3RNZXRob2QgfTtcbiAgfVxufVxuIl19
|
|
@@ -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/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 {\n\n public available = false;\n options: any = {};\n\n init(): Promise<CryptoBaseService> {\n return Promise.reject('Not implemented');\n };\n\n auth(): Promise<boolean> {\n return Promise.resolve(true);\n };\n}\n","class CertificateAdjuster {\n extract(s: string, name: string | string[]): string {\n if (typeof (name) === 'string') {\n name = [name];\n }\n\n for (var i = 0; i < name.length; i++) {\n const n = name[i];\n const re = new RegExp(n + '\\\\s*=\\\\s*(?<value>[^=]+)(?:[,\\\\\\\\/]|$)', 'g');\n const m = re.exec(s);\n if (m !== null && m.groups !== undefined && m.groups !== null) {\n let r = m.groups.value;\n r = r.replace(/^\\\"?/, '');\n r = r.replace(/\\\"$/, '');\n r = r.replace(/\\\"\\\"/g, '\"');\n return r;\n }\n }\n\n return '';\n };\n\n print2Digit(digit: number) {\n return (digit < 10) ? '0' + digit : digit;\n };\n\n getCertDate(paramDate: any) {\n let certDate = new Date(paramDate);\n return this.print2Digit(certDate.getUTCDate()) + '.' + this.print2Digit(certDate.getMonth() + 1) +\n '.' + certDate.getFullYear() + ' ' +\n this.print2Digit(certDate.getUTCHours()) + ':' + this.print2Digit(certDate.getUTCMinutes()) +\n ':' + this.print2Digit(certDate.getUTCSeconds());\n };\n\n getCertFio(certSubjectName: string) {\n const lastName = this.extract(certSubjectName, 'SN');\n const name = this.extract(certSubjectName, 'G');\n\n return lastName + ' ' + name;\n };\n\n getCertPost(certSubjectName: string) {\n return this.extract(certSubjectName, 'T');\n };\n\n getCertOgrn(certSubjectName: string) {\n return this.extract(certSubjectName, ['OGRN', 'ОГРН', 'ОГРНИП','OGRNIP', '1.2.643.100.1']);\n };\n\n getCertOrg(certSubjectName: string) {\n return this.extract(certSubjectName, 'O');\n };\n\n getCertInn(certSubjectName: string) {\n return this.extract(certSubjectName, ['INN', 'ИНН', '1.2.643.3.131.1.1']);\n };\n\n getCertName(certSubjectName: string) {\n return this.extract(certSubjectName, 'CN');\n };\n\n getIssuer(certIssuerName: string) {\n return this.extract(certIssuerName, 'CN');\n };\n\n getCertInfoString(certSubjectName: string, certFromDate: any) {\n return this.extract(certSubjectName, 'CN') + '; Выдан: ' + this.getCertDate(certFromDate);\n };\n}\n\nconst instance = new CertificateAdjuster();\nexport { instance as CertificateAdjuster };","export const strippingCharacters = (text?: string): string => {\n if (!text) {\n return ''\n }\n return text.replace(/\\.|,|!|\"|«|»|<|>|'|:|;|-|\\\\(|\\\\)/g, '').toLowerCase()\n}\n","import {\n CADESCOM_STORE_LOCATION,\n CAPICOM_STORE_NAMES,\n CAPICOM_STORE_OPEN_MODE,\n ProgIds,\n Async\n} from 'cadesplugin-types';\nimport { CertificateCheck, CertificateModel } from '../../models';\n// @ts-ignore\nimport getCadesplugin from 'async-cadesplugin';\nimport { CryptoBaseService } from '../crypto.base.service';\nimport { CertificateAdjuster } from '../certificate.adjuster';\nimport { SignerTypeEnum } from '../../enums/signer-type.enum';\nimport { strippingCharacters } from '../../helpers/strippingCharacters';\n\ndeclare global {\n interface Window {\n cadesplugin: Async.IWebClassFactory;\n CRYPTO_SKIP_CHECK?: boolean;\n }\n}\n\ninterface CertificateFilter {\n certificateCheck?: CertificateCheck;\n}\n\ninterface Certificate {\n id: number;\n certificate: any;\n subjectName: string;\n name: string;\n cn: string;\n fio: string;\n post: string;\n ogrn: string;\n organization: string;\n inn: string;\n validFromDate: string;\n validToDate: string;\n thumbprint: string;\n issuerName: string;\n serialNumber: string;\n isExpired: boolean;\n}\n\nexport class CryptoProBaseService extends CryptoBaseService {\n\n constructor() {\n super();\n }\n\n public async init(): Promise<CryptoBaseService> {\n await getCadesplugin();\n return Promise.resolve(this);\n };\n\n public async getCertificates(filter?: CertificateFilter): Promise<CertificateModel[]> {\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\n\n let storeCerts = await store.Certificates;\n let count = await storeCerts.Count;\n let certificates: Array<CertificateModel> = [];\n\n for (let i = 1; i <= count; i++) {\n let cert = await storeCerts.Item(i);\n let validFromDate = new Date(await cert.ValidFromDate);\n let validToDate = new Date(await cert.ValidToDate);\n const subjectName = await cert.SubjectName;\n\n const certificate: Certificate = {\n id: i,\n certificate: cert,\n subjectName: subjectName,\n name: CertificateAdjuster.getCertInfoString(subjectName, validFromDate),\n cn: CertificateAdjuster.getCertName(subjectName),\n fio: CertificateAdjuster.getCertFio(subjectName),\n post: CertificateAdjuster.getCertPost(subjectName),\n ogrn: CertificateAdjuster.getCertOgrn(subjectName),\n organization: CertificateAdjuster.getCertOrg(subjectName),\n inn: CertificateAdjuster.getCertInn(subjectName),\n validFromDate: validFromDate.toLocaleDateString('ru-RU'),\n validToDate: validToDate.toLocaleDateString('ru-RU'),\n thumbprint: await cert.Thumbprint,\n issuerName: await cert.IssuerName,\n serialNumber: await cert.SerialNumber,\n isExpired: validToDate < new Date()\n };\n\n let filterOk = true;\n if (window.CRYPTO_SKIP_CHECK !== true) {\n if (filter?.certificateCheck?.signerType === SignerTypeEnum.FL) {\n filterOk = !certificate.ogrn;\n } else if ([SignerTypeEnum.UL, SignerTypeEnum.IP]\n .indexOf(filter?.certificateCheck?.signerType || SignerTypeEnum.Unknown) > -1) {\n filterOk = certificate.ogrn ? true : false;\n if (filterOk) {\n const organization = certificate.organization || certificate.cn;\n\n if (organization) {\n const orgIsValid = (filter?.certificateCheck?.fullName &&\n strippingCharacters(organization) == strippingCharacters(filter?.certificateCheck?.fullName))\n || (filter?.certificateCheck?.shortName &&\n strippingCharacters(organization) == strippingCharacters(filter?.certificateCheck?.shortName));\n if (!orgIsValid) {\n filterOk = false;\n }\n } else {\n filterOk = false;\n }\n }\n }\n\n if (filterOk && filter?.certificateCheck?.signerType) {\n const fio = certificate.fio.toLowerCase();\n\n if (filter?.certificateCheck?.fio?.toLocaleLowerCase() !== fio) {\n filterOk = false;\n }\n }\n }\n\n if (filterOk) {\n certificates.push(certificate);\n }\n }\n\n await store.Close();\n return certificates;\n }\n}\n","import {\n Async,\n CADESCOM_CADES_TYPE,\n CADESCOM_CONTENT_ENCODING_TYPE,\n CADESCOM_STORE_LOCATION, CAPICOM_STORE_NAMES, CAPICOM_STORE_OPEN_MODE,\n ProgIds\n} from 'cadesplugin-types';\nimport { CryptoProBaseService } from './crypto.pro.base.service';\n\nexport class CryptoProAsyncService extends CryptoProBaseService {\n\n public static readonly key = 'cryptoproasync';\n\n constructor() {\n super();\n }\n\n public async signXml(certificate: any, data: string): Promise<string> {\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let timestamp_service_url = 'http://testca.cryptopro.ru/tsp/tsp.srf';\n await signer.propset_TSAAddress(timestamp_service_url);\n\n let signed: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\n\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\n await signed.propset_Content(encodedXml);\n\n let cades_xml_signature_type_enveloped = 80;\n await signed.propset_SignatureType(cades_xml_signature_type_enveloped);\n\n const signedData = await signed.Sign(signer);\n \n return signedData;\n }\n\n public async signBase64(certificate: any, data: string, detached: boolean = false): Promise<string> {\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let signed: Async.ICPSignedData5 = await window.cadesplugin.CreateObjectAsync(ProgIds.CadesSignedData);\n\n await signed.propset_ContentEncoding(CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY);\n await signed.propset_Content(data);\n\n const signedData = await signed.SignCades(signer, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, detached);\n\n return signedData;\n }\n}\n","import { Component } from '@angular/core';\nimport { SimpleModalComponent } from 'ngx-simple-modal';\nimport { CertificateModel } from '../../models';\n\nexport interface CertificateSelectModel {\n certificates: CertificateModel[];\n}\n\nexport interface CertificateSelectResultModel {\n selected?: CertificateModel;\n}\n\n@Component({\n selector: 'lib-certificate-select',\n templateUrl: './certificate-select.component.html',\n styleUrls: ['./certificate-select.component.css']\n})\nexport class CertificateSelectComponent extends SimpleModalComponent<CertificateSelectModel, CertificateSelectResultModel>\n implements CertificateSelectModel {\n\n certificates: CertificateModel[] = [];\n\n constructor() {\n super();\n this.result = {};\n }\n\n ok(cert: CertificateModel) {\n this.result = {selected: cert};\n this.close();\n }\n}\n","<div class=\"modal-content open accent-head certificate\">\n <div class=\"modal-header\">\n <div class=\"modal-title\" [innerHTML]=\"'Выберите сертификат'\">\n </div>\n <span class='close close-click' (click)=\"close()\">\n <svg width='14' height='14' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <path d='M13 1L1 13M1 1l12 12' stroke='#3A3A3A' stroke-width='1.5' stroke-linecap='round'\n stroke-linejoin='round' />\n </svg>\n </span>\n </div>\n <div class=\"modal-body text-center\">\n\n <div class=\"modal-body-other\">\n <div *ngFor=\"let cert of certificates\">\n <div class=\"modal-body-info\" *ngIf=\"!cert.isExpired\">\n <div class=\"modal-body-info__item\">\n <span class=\"text\">\n Владелец:\n </span>\n <span class=\"text\">\n {{cert.cn}}<br/>\n {{cert.fio}}<span *ngIf=\"cert.post\">, {{cert.post}}</span>\n </span>\n </div>\n <div class=\"modal-body-info__item\">\n <span class=\"text\">\n Срок действия:\n </span>\n <span class=\"text\">\n {{cert.validFromDate}} - {{cert.validToDate}}\n </span>\n </div>\n <div class=\"modal-body-info__item\">\n <span class=\"text hash\">\n {{cert.thumbprint}} {{cert.isExpired ? \"(истек)\" : \"\"}}\n </span>\n </div>\n <button\n (click)=\"ok(cert)\"\n [disabled]=\"cert.isExpired\"\n class=\"btn btn-md\">Создать подпись</button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n </div>\n</div>","import {\n Async,\n CADESCOM_STORE_LOCATION, CADESCOM_XML_SIGNATURE_TYPE,\n CAPICOM_STORE_NAMES,\n CAPICOM_STORE_OPEN_MODE,\n ProgIds\n} from 'cadesplugin-types';\nimport { CryptoProBaseService } from './crypto.pro.base.service';\n\nexport class CryptoProTsService extends CryptoProBaseService {\n\n public static readonly key = 'cryptoprots';\n\n constructor() {\n super();\n }\n\n private get TIMESTAMP_SERVICE_URL(): string {\n return 'http://testca.cryptopro.ru/tsp/tsp.srf';\n }\n\n public async sign(certificate: any, data: string): Promise<string> {\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\n\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let signedXML: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\n\n let publicKey: Async.IPublicKey = await certificate.PublicKey();\n let algorithm: Async.IOID = await publicKey.Algorithm;\n let algorithmOid = await algorithm.Value;\n\n let {signMethod, digestMethod} = this.getSigningMethods(algorithmOid);\n\n //await signer.propset_Options(api.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN);\n\n await signer.propset_TSAAddress(this.TIMESTAMP_SERVICE_URL);\n\n if (data) {\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\n await signedXML.propset_Content(encodedXml);\n }\n\n await signedXML.propset_SignatureType(CADESCOM_XML_SIGNATURE_TYPE.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED);\n await signedXML.propset_SignatureMethod(signMethod);\n await signedXML.propset_DigestMethod(digestMethod);\n\n let signature = await signedXML.Sign(signer);\n\n await store.Close();\n\n return signature;\n }\n\n private getSigningMethods(algorithmOid: string): { signMethod: string, digestMethod: string } {\n let signMethod = '', digestMethod = '';\n\n if (algorithmOid == '1.2.643.7.1.1.1.1') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 256 бит\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\n } else if (algorithmOid == '1.2.643.7.1.1.1.2') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 512 бит\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512';\n } else if (algorithmOid == '1.2.643.2.2.19') { // алгоритм ГОСТ Р 34.10-2001\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\n }\n\n return {signMethod, digestMethod};\n }\n}\n","import { CryptoProAsyncService } from './cryptopro/crypto.pro.async.service';\nimport { Injectable } from '@angular/core';\nimport { CryptoBaseService } from './crypto.base.service';\nimport { CryptoProTsService } from './cryptopro/crypto.pro.ts.service';\n\nexport interface CryptoHandler {\n key: string;\n name: string;\n service: CryptoBaseService;\n sign: boolean;\n default: boolean;\n disabled?: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoService {\n\n handlers: Map<string, CryptoHandler> = new Map<string, CryptoHandler>();\n selectPromise: any = null;\n private _initialized = false;\n private _withLog = false;\n\n public async startUp(withLog? : boolean): Promise<void> {\n this._withLog = !!withLog;\n\n if (!this._initialized) {\n this.registerHandler({\n key: CryptoProAsyncService.key,\n name: 'КриптоПро',\n service: new CryptoProAsyncService(),\n sign: true,\n default: true\n });\n this.registerHandler({\n key: CryptoProTsService.key,\n name: 'КриптоПро',\n service: new CryptoProTsService(),\n sign: true,\n default: false\n });\n await this.init();\n this._initialized = true;\n }\n this.log('Handlers init completed');\n return Promise.resolve();\n }\n\n public registerHandler(options: CryptoHandler) {\n this.log('Register handler', options);\n\n options.disabled = false;\n this.handlers.set(options.key, options);\n };\n\n public disableHandler(key: string): void {\n const handler = this.handlers.get(key);\n if (handler) {\n handler.disabled = true;\n }\n };\n\n public getHandler(key: string): Promise<CryptoHandler> {\n const handler = this.getActiveHandlers()\n .find(x => x.key == key);\n\n if (handler) {\n return Promise.resolve(handler);\n }\n return Promise.reject(`Not found ${key} handler`);\n };\n\n public getDefaultHandler() : Promise<CryptoHandler> {\n const handler = this.getActiveHandlers()\n .find(x => x.default);\n\n if (handler) {\n return Promise.resolve(handler);\n }\n return Promise.reject(`Not found default handler`);\n };\n\n public getService<T extends CryptoBaseService>(key: string): Promise<T> {\n const handler = this.handlers.get(key);\n if (handler) {\n return Promise.resolve(handler.service as T);\n }\n return Promise.reject(`Not found ${key}`);\n };\n\n public getActiveHandlers(): Array<CryptoHandler> {\n const active = new Array<CryptoHandler>();\n this.handlers.forEach(s => {\n if (!s.disabled) {\n active.push(s);\n }\n });\n return active;\n };\n\n private log(...args: any[]) {\n if (this._withLog) {\n console.log(args);\n }\n };\n\n private async init(): Promise<any> {\n this.log('Initialize handlers');\n\n const promises: Array<Promise<any>> = [];\n this.handlers.forEach(handler => {\n handler.service.available = false;\n\n this.log('Initialize ' + handler.name);\n\n const promise = handler.service.init().then((result) => {\n result.available = true;\n this.log('Handler init success', result);\n }).catch(reason => {\n this.log('Handler init fail', reason);\n });\n\n promises.push(promise);\n });\n\n return await Promise.all(promises);\n };\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\nimport { SignValidateResponse } from '../models';\nimport { VerifyCertModel } from '../models/internal/verify.cert.model';\nimport { VerifyCertResponseModel } from '../models/internal/verify.cert.response.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoApiService extends EndpointBaseService {\n\n private urlCrypto = '/cryptopro/api/v1';\n private urlSigner = '/signer/api/v1';\n\n constructor(protected http: HttpClient, protected injector: Injector) {\n super(http, injector);\n }\n\n public verify(data: VerifyCertModel): Observable<VerifyCertResponseModel> {\n return this.http.post<VerifyCertResponseModel>(`${this.urlCrypto}/verify`, data);\n }\n\n public validate(data: string): Observable<SignValidateResponse> {\n return this.http.post<SignValidateResponse>(`${this.urlSigner}/jinn/validate`, {data});\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Base64 } from 'js-base64';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { SignedResultModel } from '../models';\nimport { strippingCharacters } from '../helpers/strippingCharacters';\n\ndeclare const window: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\n const withLog = options?.withLog;\n await this.cryptoService.startUp(withLog);\n\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\n const list = await service.getCertificates({\n certificateCheck: options?.certificateCheck\n });\n\n if (list.length === 0) {\n return Promise.reject('Отсутствует подходящий сертификат');\n }\n\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('Сертификат не выбран, отмена');\n }\n return Promise.reject();\n }\n\n let certificateFail = 0;\n if (window.CRYPTO_SKIP_CHECK !== true) {\n if (options?.certificateCheck?.fio &&\n modalResult.selected.fio.toLowerCase() !== options?.certificateCheck?.fio.toLowerCase()) {\n certificateFail = 1;\n }\n\n if (options?.certificateCheck?.fullName || options?.certificateCheck?.shortName) {\n let organization = modalResult.selected.organization;\n\n if (!organization) {\n organization = modalResult.selected.cn;\n }\n\n if (organization) {\n const orgIsValid = (options?.certificateCheck?.fullName &&\n strippingCharacters(organization) == strippingCharacters(options?.certificateCheck?.fullName))\n || (options?.certificateCheck?.shortName &&\n strippingCharacters(organization) == strippingCharacters(options?.certificateCheck?.shortName));\n if (!orgIsValid) {\n certificateFail = 2;\n }\n } else {\n certificateFail = 2;\n }\n }\n\n /** @deprecated */\n if (options?.checkFio &&\n modalResult.selected.fio.toLowerCase() !== options?.checkFio.toLowerCase()) {\n certificateFail = 1;\n }\n\n if (options?.checkOrganizationFullName || options?.checkOrganizationShortName) {\n let organization = modalResult.selected.organization;\n\n if (!organization) {\n organization = modalResult.selected.cn;\n }\n\n if (organization) {\n const orgIsValid = (options?.checkOrganizationFullName &&\n strippingCharacters(organization) == strippingCharacters(options?.checkOrganizationFullName))\n || (options?.checkOrganizationShortName &&\n strippingCharacters(organization) == strippingCharacters(options?.checkOrganizationShortName));\n if (!orgIsValid) {\n certificateFail = 2;\n }\n } else {\n certificateFail = 2;\n }\n }\n }\n\n if (certificateFail > 0) {\n return Promise.reject(\n certificateFail == 1 ?\n 'Данные лица, подписывающего заявку не совпадают с данными усиленной квалифицированной подписи.' :\n certificateFail === 3 ? 'Отсутствует активный КриптоПровайдер (не установлен либо недоступен плагин). ' +\n 'Чтобы подписать, установите плагин КриптоПро и проверьте наличие сертификата' :\n 'Данные организации не совпадают с данными усиленной квалифицированной подписи. ' +\n 'Убедитесь, что вы используете сертификат, выданные от организации.',\n );\n }\n\n if (withLog) {\n console.log('Подписываемые данные', data);\n }\n\n const signedData = await service.signBase64(modalResult.selected.certificate, data, true);\n\n if (withLog) {\n console.log('Подписанные данные', signedData);\n }\n\n if (!options?.skipServerCheck) {\n const verifyResult = await this.cryptoApiService.verify({\n data: data,\n signature: Base64.encode(signedData),\n detached: true\n }).toPromise();\n\n return {\n data,\n success: verifyResult.success,\n signed: signedData,\n certificate: modalResult.selected,\n };\n } else {\n return {\n data,\n success: true,\n signed: signedData,\n certificate: modalResult.selected,\n };\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoJinnProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\n const withLog = options?.withLog;\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, { certificates: list }).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n if (withLog) {\n console.log('Signing data', data);\n }\n\n const signedData = await service.signXml(modalResult.selected.certificate, data);\n\n const verifyResult = await this.cryptoApiService.validate(signedData).toPromise();\n\n return {\n data: signedData,\n success: verifyResult.success,\n certificate: modalResult.selected,\n validateResult: verifyResult.validateResult\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoProTsService } from '../services/cryptopro/crypto.pro.ts.service';\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoTsProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\n const withLog = options?.withLog;\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProTsService>(CryptoProTsService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n const signedData = await service.sign(modalResult.selected.certificate, data);\n\n if (!options?.skipServerCheck) {\n const validateResult = await this.cryptoApiService.validate(signedData).toPromise();\n\n return {\n data,\n signed: signedData,\n success: validateResult.success,\n validateResult: validateResult.validateResult,\n certificate: modalResult.selected,\n };\n } else {\n return {\n data,\n signed: signedData,\n success: true,\n validateResult: '',\n certificate: modalResult.selected,\n };\n }\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { ISignProvider, SignOptions } from \"./interfaces/isign.provider\";\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EmptyProvider implements ISignProvider {\n\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\n return Promise.resolve({\n data: data,\n success: true\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CryptoProvider } from './crypto.provider';\nimport { CryptoJinnProvider } from './cryptojinn.provider';\nimport { EmptyProvider } from './empty.provider';\nimport { CryptoTsProvider } from './cryptots.provider';\nimport { SignProviderType } from '../models';\nimport { ISignProvider } from './interfaces/isign.provider';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SignProviderFactory {\n constructor(\n protected cryptoProvider: CryptoProvider,\n protected cryptoJinnProvider: CryptoJinnProvider,\n protected cryptoTsProvider: CryptoTsProvider,\n protected emptyProvider: EmptyProvider) {\n }\n\n create(providerType: SignProviderType): ISignProvider {\n switch (providerType) {\n case 'crypto':\n return this.cryptoProvider;\n case 'cryptojinn':\n return this.cryptoJinnProvider;\n case 'cryptots':\n return this.cryptoTsProvider;\n case 'empty':\n return this.emptyProvider;\n }\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DownloadService extends EndpointBaseService {\n\n private url = '/signer/api/v1/download';\n\n constructor(protected http: HttpClient, protected injector: Injector) {\n super(http, injector);\n }\n\n public xml(url: string): Observable<any> {\n return this.http.get(url,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'text/xml'),\n responseType: 'text'\n });\n }\n\n public pdf(url: string): Observable<any> {\n return this.http.get(url,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'application/pdf'),\n responseType: 'blob'\n });\n }\n\n /*public xml(url: string): Observable<any> {\n return this.http.get(`${this.url}/xml?url=${encodeURIComponent(url)}`,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'text/xml'),\n responseType: 'text'\n });\n }\n\n public pdf(url: string): Observable<any> {\n return this.http.get(`${this.url}/pdf?url=${encodeURIComponent(url)}`,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'application/pdf'),\n responseType: 'blob'\n });\n }*/\n}\n","import { Component } from '@angular/core';\nimport { AlertService, DialogColor, DialogType, Utilities } from 'myrtex-mf-ui-composite';\nimport { SimpleModalComponent } from 'ngx-simple-modal';\nimport { Base64 } from 'js-base64';\nimport { SignProviderType, SignType } from '../../models';\nimport { SignedResultModel } from '../../models/signed-result.model';\nimport { CertificateCheck, SignRequestModel } from '../../models/sign-request.model';\nimport { DownloadService } from '../../services/download.service';\nimport { SignProviderFactory } from '../../providers/signprovider.factory';\nimport { OnInit } from '@angular/core/core';\nimport { SignerTypeEnum } from '../../enums/signer-type.enum';\n\nexport interface SignedResponseModel {\n result: boolean;\n model?: SignedResultModel;\n}\n\n@Component({\n selector: 'lib-sign-modal',\n templateUrl: './sign-modal.component.html',\n styleUrls: ['./sign-modal.component.css']\n})\nexport class SignModalComponent\n extends SimpleModalComponent<SignRequestModel, SignedResponseModel> implements OnInit, SignRequestModel {\n\n public title = '';\n public okLabel = '';\n public cancelLabel = '';\n\n public xmlUrl?: string;\n public pdfUrl?: string;\n\n public additionalPdfUrl?: string;\n public additionalPdfUrlTitle?: string;\n\n public provider: SignProviderType = 'empty';\n public signType: SignType = 'xml';\n\n public xmlToSign = '';\n public pdfToSign = '';\n public withLog?: boolean;\n public skipServerCheck?: boolean;\n\n public signerType?: SignerTypeEnum;\n public certificateCheck?: CertificateCheck;\n\n /** @deprecated */\n public checkFio?: string;\n /** @deprecated */\n public checkOgrn?: string;\n /** @deprecated */\n public checkOrganizationFullName?: string;\n /** @deprecated */\n public checkOrganizationShortName?: string;\n /** @deprecated */\n public checkInn?: string;\n\n downloadingPdf = false;\n\n constructor(private signProviderFactory: SignProviderFactory,\n private downloadService: DownloadService,\n private alertService: AlertService) {\n super();\n this.result = { result: false };\n }\n\n get disabled() {\n // todo как можно дизеблить кнопу\n return false;\n }\n\n get pdfViewUrl(): string {\n return this.pdfUrl ?\n `/signer/pdfjs/web/viewer.html?file=${encodeURIComponent(this.pdfUrl)}` : '';\n }\n\n ngOnInit(): void {\n this.downloadXml();\n this.downloadPdf();\n }\n\n public ok() {\n\n if (!this.signType) {\n this.signType = 'xml';\n }\n\n let signData = this.xmlToSign;\n\n switch (this.signType) {\n case 'xml':\n signData = Base64.encode(this.xmlToSign);\n break;\n case 'pdf':\n signData = this.pdfToSign;\n break;\n case 'xmlts':\n signData = this.xmlToSign;\n break;\n }\n\n this.signProviderFactory.create(this.provider)\n .sign(signData, {\n skipServerCheck: this.skipServerCheck,\n withLog: this.withLog,\n\n certificateCheck: this.certificateCheck,\n\n checkFio: this.checkFio,\n checkOgrn: this.checkOgrn,\n checkOrganizationFullName: this.checkOrganizationFullName,\n checkOrganizationShortName: this.checkOrganizationShortName,\n checkInn: this.checkInn\n })\n .then((ok: SignedResultModel) => {\n this.processResult(ok);\n }).catch((error: any) => {\n this.processError(error);\n });\n }\n\n public cancel() {\n this.close();\n }\n\n private processResult(signResult: SignedResultModel): void {\n if (signResult.success) {\n this.result = { model: signResult, result: true };\n this.close();\n } else {\n this.alertService.showDialog({\n title: 'Ошибка проверки подписи',\n message: 'Подпись не валидна',\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n }\n });\n }\n }\n\n private processError(error: any): void {\n if (this.withLog) {\n console.error(error);\n }\n\n if (error) {\n this.alertService.showDialog({\n title: 'Ошибка проверки подписи',\n message: typeof (error) == 'string' ? error : JSON.stringify(error),\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n //\n }\n });\n }\n }\n\n private downloadXml(): void {\n if (!this.xmlUrl) {\n return;\n }\n\n if (this.withLog) {\n console.log('Downloading xml');\n }\n\n this.downloadService.xml(this.xmlUrl).subscribe(result => {\n if (this.withLog) {\n console.log('xmlToSign = ', result);\n }\n this.xmlToSign = result;\n });\n }\n\n private downloadPdf(): void {\n if (!this.pdfUrl) {\n return;\n }\n\n if (this.withLog) {\n console.log('Downloading pdf');\n }\n\n this.downloadingPdf = true;\n this.downloadService.pdf(this.pdfUrl)\n .subscribe(result => {\n this.downloadingPdf = false;\n // todo подумать, как правильно читать файл\n // const blob = new Blob([result], {type: 'application/pdf'});\n const reader = new FileReader();\n reader.readAsDataURL(result);\n reader.onloadend = () => {\n let base64data = reader.result as string;\n base64data = base64data.replace('data:application/pdf;base64,', '');\n\n if (this.withLog) {\n console.log('pdfToSign = ', base64data);\n }\n this.pdfToSign = base64data;\n }\n }, () => {\n this.downloadingPdf = false;\n });\n }\n}\n","<div class=\"modal-content accent-head xl\">\n <div class=\"modal-header\">\n <div class=\"modal-title uppercase\">\n <h4 class=\"ng-binding\">{{title || 'Направление документа на подписание'}}</h4>\n </div>\n <span class=\"close close-click\" (click)=\"close()\">\n <svg width=\"14\" height=\"14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M13 1L1 13M1 1l12 12\" stroke=\"#3A3A3A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n </div>\n\n <div class=\"modal-body text-center\">\n <div class=\"widget\">\n <my-tabs>\n <app-tab tabTitle=\"Визуализация документа\" *ngIf=\"pdfUrl\">\n <pre *ngIf=\"downloadingPdf\">\n Подождите, идет формирование документа\n </pre>\n <iframe *ngIf=\"!downloadingPdf\" [src]=\"pdfViewUrl | safeurl\"\n title=\"webviewer\" frameborder=\"0\" width=\"100%\" height=\"800\"></iframe>\n </app-tab>\n <app-tab tabTitle=\"Подписываемые данные\" *ngIf=\"xmlUrl\">\n <pre [innerText]=\"xmlToSign\"></pre>\n </app-tab>\n </my-tabs>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <div *ngIf=\"pdfUrl || xmlUrl || additionalPdfUrl\"\n class=\"modal-footer-item\">\n <a *ngIf=\"pdfUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"pdfUrl\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M18 21.25H6C5.30964 21.25 4.75 20.6904 4.75 20V4C4.75 3.30964 5.30964 2.75 6 2.75H13.1893L19.25 8.81066V20C19.25 20.6904 18.6904 21.25 18 21.25Z\"\n stroke=\"#282828\" stroke-width=\"1.5\"/>\n </svg>\n <span>Скачать документ</span>\n </a>\n <a *ngIf=\"xmlUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"xmlUrl\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 16L2 12L6 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M18 16L22 12L18 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"/>\n <path d=\"M7.56689 19.1782L15.5669 5.32182\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"/>\n </svg>\n <span>Скачать XML-данные</span>\n </a>\n <a *ngIf=\"additionalPdfUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"additionalPdfUrl\">\n <svg width=\"24\" height=\"20\" viewBox=\"0 0 24 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\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\"/>\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\"/>\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\"/>\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\"/>\n </svg>\n <span>{{additionalPdfUrlTitle}}</span>\n </a>\n </div>\n <div class=\"modal-footer-item\">\n <button\n class=\"mrx-btn mrx-btn-secondary mrx-btn-md wpx-120 mr-3\"\n (click)=\"cancel()\"\n >\n <div class=\"mrx-btn-label\">{{cancelLabel || 'Отменить'}}</div>\n </button>\n <button\n class=\"mrx-btn mrx-btn-primary mrx-btn-md\"\n [disabled]=\"disabled\"\n (click)=\"ok()\"\n >\n <div class=\"mrx-btn-label\">{{okLabel || 'Подписать'}}</div>\n </button>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { SignedResultModel, SignRequestModel } from '../models';\nimport { SignModalComponent } from '../components/sign-modal/sign-modal.component';\nimport { TmpTokenService, Utilities } from 'myrtex-mf-ui-composite';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SignService {\n\n constructor(private simpleModalService: SimpleModalService, private tmpTokenService: TmpTokenService) {\n }\n\n public sign(request: SignRequestModel,\n ok: (result?: SignedResultModel) => void,\n cancel?: () => void): void {\n\n const baseUrl = Utilities.commonPart(request.xmlUrl, request.pdfUrl);\n\n this.tmpTokenService.generate(baseUrl).subscribe(token => {\n\n const ph = `${window.location.protocol}//${window.location.host}`;\n if (request.xmlUrl) {\n request.xmlUrl = ph + Utilities.updateQueryStringParameter(request.xmlUrl, 'authToken', token);\n }\n\n if (request.pdfUrl) {\n request.pdfUrl = ph + Utilities.updateQueryStringParameter(request.pdfUrl, 'authToken', token);\n }\n\n this.simpleModalService.addModal(SignModalComponent, request, { wrapperClass: 'in xl' })\n .subscribe(result => {\n if (result && result.result) {\n ok(result.model);\n } else {\n if (cancel) {\n cancel();\n }\n }\n });\n\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SignModalComponent } from './components/sign-modal/sign-modal.component';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MyrtexMfUiCompositeModule } from 'myrtex-mf-ui-composite';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { SignService } from './services/public.sign.service';\nimport { DownloadService } from './services/download.service';\nimport { CertificateSelectComponent } from './components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from './services/crypto.api.service';\nimport { SignProviderFactory } from './providers/signprovider.factory';\nimport { CryptoProvider } from './providers/crypto.provider';\nimport { CryptoJinnProvider } from './providers/cryptojinn.provider';\nimport { CryptoTsProvider } from './providers/cryptots.provider';\nimport { EmptyProvider } from './providers/empty.provider';\n\n@NgModule({\n declarations: [\n SignModalComponent,\n CertificateSelectComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n NgSelectModule,\n MyrtexMfUiCompositeModule\n ],\n exports: [\n SignModalComponent\n ],\n providers: [\n SignProviderFactory,\n CryptoProvider,\n CryptoJinnProvider,\n CryptoTsProvider,\n EmptyProvider,\n\n CryptoApiService,\n SignService,\n DownloadService\n ]\n})\nexport class MyrtexSignerModule { }\n","/*\n * Public API Surface of myrtex-mf-signer\n */\n// enums\nexport * from './lib/enums/index';\n\n// models\nexport * from './lib/models/index';\n\n// components\nexport * from './lib/components/sign-modal/sign-modal.component';\n\n// modules\nexport * from './lib/myrtex-signer.module';\n\n// services\nexport * from './lib/services/public.sign.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CertificateAdjuster","i1","i2.CryptoService","i3.CryptoApiService","i1.CryptoProvider","i2.CryptoJinnProvider","i3.CryptoTsProvider","i4.EmptyProvider","i1.SignProviderFactory","i2.DownloadService","i4","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"myrtex-mf-signer.mjs","sources":["../../../projects/myrtex-mf-signer/src/lib/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/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 {\n\n public available = false;\n options: any = {};\n\n init(): Promise<CryptoBaseService> {\n return Promise.reject('Not implemented');\n };\n\n auth(): Promise<boolean> {\n return Promise.resolve(true);\n };\n}\n","class CertificateAdjuster {\n extract(s: string, name: string | string[]): string {\n if (typeof (name) === 'string') {\n name = [name];\n }\n\n for (var i = 0; i < name.length; i++) {\n const n = name[i];\n const re = new RegExp(n + '\\\\s*=\\\\s*(?<value>[^=]+)(?:[,\\\\\\\\/]|$)', 'g');\n const m = re.exec(s);\n if (m !== null && m.groups !== undefined && m.groups !== null) {\n let r = m.groups.value;\n r = r.replace(/^\\\"?/, '');\n r = r.replace(/\\\"$/, '');\n r = r.replace(/\\\"\\\"/g, '\"');\n return r;\n }\n }\n\n return '';\n };\n\n print2Digit(digit: number) {\n return (digit < 10) ? '0' + digit : digit;\n };\n\n getCertDate(paramDate: any) {\n let certDate = new Date(paramDate);\n return this.print2Digit(certDate.getUTCDate()) + '.' + this.print2Digit(certDate.getMonth() + 1) +\n '.' + certDate.getFullYear() + ' ' +\n this.print2Digit(certDate.getUTCHours()) + ':' + this.print2Digit(certDate.getUTCMinutes()) +\n ':' + this.print2Digit(certDate.getUTCSeconds());\n };\n\n getCertFio(certSubjectName: string) {\n const lastName = this.extract(certSubjectName, 'SN');\n const name = this.extract(certSubjectName, 'G');\n\n return lastName + ' ' + name;\n };\n\n getCertPost(certSubjectName: string) {\n return this.extract(certSubjectName, 'T');\n };\n\n getCertOgrn(certSubjectName: string) {\n return this.extract(certSubjectName, ['OGRN', 'ОГРН', 'ОГРНИП','OGRNIP', '1.2.643.100.1']);\n };\n\n getCertOrg(certSubjectName: string) {\n return this.extract(certSubjectName, 'O');\n };\n\n getCertInn(certSubjectName: string) {\n return this.extract(certSubjectName, ['INN', 'ИНН', '1.2.643.3.131.1.1']);\n };\n\n getCertName(certSubjectName: string) {\n return this.extract(certSubjectName, 'CN');\n };\n\n getIssuer(certIssuerName: string) {\n return this.extract(certIssuerName, 'CN');\n };\n\n getCertInfoString(certSubjectName: string, certFromDate: any) {\n return this.extract(certSubjectName, 'CN') + '; Выдан: ' + this.getCertDate(certFromDate);\n };\n}\n\nconst instance = new CertificateAdjuster();\nexport { instance as CertificateAdjuster };","export const strippingCharacters = (text?: string): string => {\n if (!text) {\n return ''\n }\n return text.replace(/\\.|,|!|\"|«|»|<|>|'|:|;|-|\\\\(|\\\\)/g, '').toLowerCase()\n}\n","import {\n Async,\n CADESCOM_STORE_LOCATION,\n CAPICOM_STORE_NAMES,\n CAPICOM_STORE_OPEN_MODE,\n ProgIds\n} from 'cadesplugin-types';\nimport { CertificateCheck, CertificateModel } from '../../models';\n// @ts-ignore\nimport getCadesplugin from 'async-cadesplugin';\nimport { CryptoBaseService } from '../crypto.base.service';\nimport { CertificateAdjuster } from '../certificate.adjuster';\nimport { SignerTypeEnum } from '../../enums/signer-type.enum';\nimport { strippingCharacters } from '../../helpers/strippingCharacters';\n\ndeclare global {\n interface Window {\n cadesplugin: Async.IWebClassFactory;\n CRYPTO_SKIP_CHECK?: boolean;\n }\n}\n\ninterface CertificateFilter {\n certificateCheck?: CertificateCheck;\n}\n\ninterface Certificate {\n id: number;\n certificate: any;\n subjectName: string;\n name: string;\n cn: string;\n fio: string;\n post: string;\n ogrn: string;\n organization: string;\n inn: string;\n validFromDate: string;\n validToDate: string;\n thumbprint: string;\n issuerName: string;\n serialNumber: string;\n isExpired: boolean;\n}\n\nexport class CryptoProBaseService extends CryptoBaseService {\n\n constructor() {\n super();\n }\n\n public async init(): Promise<CryptoBaseService> {\n await getCadesplugin();\n return Promise.resolve(this);\n };\n\n public async getCertificates(filter?: CertificateFilter): Promise<CertificateModel[]> {\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\n\n let storeCerts = await store.Certificates;\n let count = await storeCerts.Count;\n let certificates: Array<CertificateModel> = [];\n\n for (let i = 1; i <= count; i++) {\n let cert = await storeCerts.Item(i);\n let validFromDate = new Date(await cert.ValidFromDate);\n let validToDate = new Date(await cert.ValidToDate);\n const subjectName = await cert.SubjectName;\n\n const certificate: Certificate = {\n id: i,\n certificate: cert,\n subjectName: subjectName,\n name: CertificateAdjuster.getCertInfoString(subjectName, validFromDate),\n cn: CertificateAdjuster.getCertName(subjectName),\n fio: CertificateAdjuster.getCertFio(subjectName),\n post: CertificateAdjuster.getCertPost(subjectName),\n ogrn: CertificateAdjuster.getCertOgrn(subjectName),\n organization: CertificateAdjuster.getCertOrg(subjectName),\n inn: CertificateAdjuster.getCertInn(subjectName),\n validFromDate: validFromDate.toLocaleDateString('ru-RU'),\n validToDate: validToDate.toLocaleDateString('ru-RU'),\n thumbprint: await cert.Thumbprint,\n issuerName: await cert.IssuerName,\n serialNumber: await cert.SerialNumber,\n isExpired: validToDate < new Date()\n };\n\n let filterOk = true;\n if (window.CRYPTO_SKIP_CHECK !== true) {\n if (filter?.certificateCheck?.signerType === SignerTypeEnum.FL) {\n filterOk = !certificate.ogrn;\n } else if ([SignerTypeEnum.UL, SignerTypeEnum.IP]\n .indexOf(filter?.certificateCheck?.signerType || SignerTypeEnum.Unknown) > -1) {\n filterOk = certificate.ogrn ? true : false;\n if (filterOk) {\n const organization = certificate.organization || certificate.cn;\n\n if (organization) {\n const orgIsValid = (filter?.certificateCheck?.fullName &&\n strippingCharacters(organization) == strippingCharacters(filter?.certificateCheck?.fullName))\n || (filter?.certificateCheck?.shortName &&\n strippingCharacters(organization) == strippingCharacters(filter?.certificateCheck?.shortName));\n if (!orgIsValid) {\n filterOk = false;\n }\n } else {\n filterOk = false;\n }\n }\n }\n\n if (filterOk && filter?.certificateCheck?.signerType) {\n const fio = certificate.fio.toLowerCase();\n\n if (filter?.certificateCheck?.fio?.toLocaleLowerCase() !== fio) {\n filterOk = false;\n }\n }\n }\n\n if (filterOk) {\n certificates.push(certificate);\n }\n }\n\n await store.Close();\n return certificates;\n }\n}\n","import {\n Async,\n CADESCOM_CADES_TYPE,\n CADESCOM_CONTENT_ENCODING_TYPE,\n CADESCOM_STORE_LOCATION, CAPICOM_STORE_NAMES, CAPICOM_STORE_OPEN_MODE,\n ProgIds\n} from 'cadesplugin-types';\nimport { CryptoProBaseService } from './crypto.pro.base.service';\n\nexport class CryptoProAsyncService extends CryptoProBaseService {\n\n public static readonly key = 'cryptoproasync';\n\n constructor() {\n super();\n }\n\n public async signXml(certificate: any, data: string): Promise<string> {\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let timestamp_service_url = 'http://testca.cryptopro.ru/tsp/tsp.srf';\n await signer.propset_TSAAddress(timestamp_service_url);\n\n let signed: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\n\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\n await signed.propset_Content(encodedXml);\n\n let cades_xml_signature_type_enveloped = 80;\n await signed.propset_SignatureType(cades_xml_signature_type_enveloped);\n\n const signedData = await signed.Sign(signer);\n\n return signedData;\n }\n\n public async signBase64(certificate: any, data: string, detached: boolean = false): Promise<string> {\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let signed: Async.ICPSignedData5 = await window.cadesplugin.CreateObjectAsync(ProgIds.CadesSignedData);\n\n await signed.propset_ContentEncoding(CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY);\n await signed.propset_Content(data);\n\n const signedData = await signed.SignCades(signer, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, detached);\n\n return signedData;\n }\n}\n","import { Component } from '@angular/core';\nimport { SimpleModalComponent } from 'ngx-simple-modal';\nimport { CertificateModel } from '../../models';\n\nexport interface CertificateSelectModel {\n certificates: CertificateModel[];\n}\n\nexport interface CertificateSelectResultModel {\n selected?: CertificateModel;\n}\n\n@Component({\n selector: 'lib-certificate-select',\n templateUrl: './certificate-select.component.html',\n styleUrls: ['./certificate-select.component.css']\n})\nexport class CertificateSelectComponent extends SimpleModalComponent<CertificateSelectModel, CertificateSelectResultModel>\n implements CertificateSelectModel {\n\n certificates: CertificateModel[] = [];\n\n constructor() {\n super();\n this.result = {};\n }\n\n ok(cert: CertificateModel) {\n this.result = {selected: cert};\n this.close();\n }\n}\n","<div class=\"modal-content open accent-head certificate\">\n <div class=\"modal-header\">\n <div class=\"modal-title\" [innerHTML]=\"'Выберите сертификат'\">\n </div>\n <span class='close close-click' (click)=\"close()\">\n <svg width='14' height='14' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <path d='M13 1L1 13M1 1l12 12' stroke='#3A3A3A' stroke-width='1.5' stroke-linecap='round'\n stroke-linejoin='round' />\n </svg>\n </span>\n </div>\n <div class=\"modal-body text-center\">\n\n <div class=\"modal-body-other\">\n <div *ngFor=\"let cert of certificates\">\n <div class=\"modal-body-info\" *ngIf=\"!cert.isExpired\">\n <div class=\"modal-body-info__item\">\n <span class=\"text\">\n Владелец:\n </span>\n <span class=\"text\">\n {{cert.cn}}<br/>\n {{cert.fio}}<span *ngIf=\"cert.post\">, {{cert.post}}</span>\n </span>\n </div>\n <div class=\"modal-body-info__item\">\n <span class=\"text\">\n Срок действия:\n </span>\n <span class=\"text\">\n {{cert.validFromDate}} - {{cert.validToDate}}\n </span>\n </div>\n <div class=\"modal-body-info__item\">\n <span class=\"text hash\">\n {{cert.thumbprint}} {{cert.isExpired ? \"(истек)\" : \"\"}}\n </span>\n </div>\n <button\n (click)=\"ok(cert)\"\n [disabled]=\"cert.isExpired\"\n class=\"btn btn-md\">Создать подпись</button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n </div>\n</div>","import {\n Async,\n CADESCOM_STORE_LOCATION, CADESCOM_XML_SIGNATURE_TYPE,\n CAPICOM_STORE_NAMES,\n CAPICOM_STORE_OPEN_MODE,\n ProgIds\n} from 'cadesplugin-types';\nimport { CryptoProBaseService } from './crypto.pro.base.service';\n\ndeclare global {\n interface Window {\n cadesplugin: Async.IWebClassFactory;\n CRYPTO_SKIP_CHECK?: boolean;\n }\n}\n\nexport class CryptoProTsService extends CryptoProBaseService {\n\n public static readonly key = 'cryptoprots';\n\n constructor() {\n super();\n }\n\n private get TIMESTAMP_SERVICE_URL(): string {\n return 'http://testca.cryptopro.ru/tsp/tsp.srf';\n }\n\n public async sign(certificate: any, data: string): Promise<string> {\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\n\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let signedXML: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\n\n let publicKey: Async.IPublicKey = await certificate.PublicKey();\n let algorithm: Async.IOID = await publicKey.Algorithm;\n let algorithmOid = await algorithm.Value;\n\n let { signMethod, digestMethod } = this.getSigningMethods(algorithmOid);\n\n //await signer.propset_Options(api.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN);\n\n await signer.propset_TSAAddress(this.TIMESTAMP_SERVICE_URL);\n\n if (data) {\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\n await signedXML.propset_Content(encodedXml);\n }\n\n await signedXML.propset_SignatureType(CADESCOM_XML_SIGNATURE_TYPE.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED);\n await signedXML.propset_SignatureMethod(signMethod);\n await signedXML.propset_DigestMethod(digestMethod);\n\n let signature = await signedXML.Sign(signer);\n\n await store.Close();\n\n return signature;\n }\n\n private getSigningMethods(algorithmOid: string): { signMethod: string, digestMethod: string } {\n let signMethod = '', digestMethod = '';\n\n if (algorithmOid == '1.2.643.7.1.1.1.1') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 256 бит\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\n } else if (algorithmOid == '1.2.643.7.1.1.1.2') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 512 бит\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512';\n } else if (algorithmOid == '1.2.643.2.2.19') { // алгоритм ГОСТ Р 34.10-2001\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\n }\n\n return { signMethod, digestMethod };\n }\n}\n","import { CryptoProAsyncService } from './cryptopro/crypto.pro.async.service';\nimport { Injectable } from '@angular/core';\nimport { CryptoBaseService } from './crypto.base.service';\nimport { CryptoProTsService } from './cryptopro/crypto.pro.ts.service';\n\nexport interface CryptoHandler {\n key: string;\n name: string;\n service: CryptoBaseService;\n sign: boolean;\n default: boolean;\n disabled?: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoService {\n\n handlers: Map<string, CryptoHandler> = new Map<string, CryptoHandler>();\n selectPromise: any = null;\n private _initialized = false;\n private _withLog = false;\n\n public async startUp(withLog? : boolean): Promise<void> {\n this._withLog = !!withLog;\n\n if (!this._initialized) {\n this.registerHandler({\n key: CryptoProAsyncService.key,\n name: 'КриптоПро',\n service: new CryptoProAsyncService(),\n sign: true,\n default: true\n });\n this.registerHandler({\n key: CryptoProTsService.key,\n name: 'КриптоПро',\n service: new CryptoProTsService(),\n sign: true,\n default: false\n });\n await this.init();\n this._initialized = true;\n }\n this.log('Handlers init completed');\n return Promise.resolve();\n }\n\n public registerHandler(options: CryptoHandler) {\n this.log('Register handler', options);\n\n options.disabled = false;\n this.handlers.set(options.key, options);\n };\n\n public disableHandler(key: string): void {\n const handler = this.handlers.get(key);\n if (handler) {\n handler.disabled = true;\n }\n };\n\n public getHandler(key: string): Promise<CryptoHandler> {\n const handler = this.getActiveHandlers()\n .find(x => x.key == key);\n\n if (handler) {\n return Promise.resolve(handler);\n }\n return Promise.reject(`Not found ${key} handler`);\n };\n\n public getDefaultHandler() : Promise<CryptoHandler> {\n const handler = this.getActiveHandlers()\n .find(x => x.default);\n\n if (handler) {\n return Promise.resolve(handler);\n }\n return Promise.reject(`Not found default handler`);\n };\n\n public getService<T extends CryptoBaseService>(key: string): Promise<T> {\n const handler = this.handlers.get(key);\n if (handler) {\n return Promise.resolve(handler.service as T);\n }\n return Promise.reject(`Not found ${key}`);\n };\n\n public getActiveHandlers(): Array<CryptoHandler> {\n const active = new Array<CryptoHandler>();\n this.handlers.forEach(s => {\n if (!s.disabled) {\n active.push(s);\n }\n });\n return active;\n };\n\n private log(...args: any[]) {\n if (this._withLog) {\n console.log(args);\n }\n };\n\n private async init(): Promise<any> {\n this.log('Initialize handlers');\n\n const promises: Array<Promise<any>> = [];\n this.handlers.forEach(handler => {\n handler.service.available = false;\n\n this.log('Initialize ' + handler.name);\n\n const promise = handler.service.init().then((result) => {\n result.available = true;\n this.log('Handler init success', result);\n }).catch(reason => {\n this.log('Handler init fail', reason);\n });\n\n promises.push(promise);\n });\n\n return await Promise.all(promises);\n };\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\nimport { SignValidateResponse } from '../models';\nimport { VerifyCertModel } from '../models/internal/verify.cert.model';\nimport { VerifyCertResponseModel } from '../models/internal/verify.cert.response.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoApiService extends EndpointBaseService {\n\n private urlCrypto = '/cryptopro/api/v1';\n private urlSigner = '/signer/api/v1';\n\n constructor(protected http: HttpClient, protected injector: Injector) {\n super(http, injector);\n }\n\n public verify(data: VerifyCertModel): Observable<VerifyCertResponseModel> {\n return this.http.post<VerifyCertResponseModel>(`${this.urlCrypto}/verify`, data);\n }\n\n public validate(data: string): Observable<SignValidateResponse> {\n return this.http.post<SignValidateResponse>(`${this.urlSigner}/jinn/validate`, {data});\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Base64 } from 'js-base64';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { SignedResultModel } from '../models';\nimport { strippingCharacters } from '../helpers/strippingCharacters';\nimport { Async } from 'cadesplugin-types';\n\ndeclare global {\n interface Window {\n cadesplugin: Async.IWebClassFactory;\n CRYPTO_SKIP_CHECK?: boolean;\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\n const withLog = options?.withLog;\n await this.cryptoService.startUp(withLog);\n\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\n const list = await service.getCertificates({\n certificateCheck: options?.certificateCheck\n });\n\n if (list.length === 0) {\n return Promise.reject('Отсутствует подходящий сертификат');\n }\n\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('Сертификат не выбран, отмена');\n }\n return Promise.reject();\n }\n\n let certificateFail = 0;\n if (window.CRYPTO_SKIP_CHECK !== true) {\n if (options?.certificateCheck?.fio &&\n modalResult.selected.fio.toLowerCase() !== options?.certificateCheck?.fio.toLowerCase()) {\n certificateFail = 1;\n }\n\n if (options?.certificateCheck?.fullName || options?.certificateCheck?.shortName) {\n let organization = modalResult.selected.organization;\n\n if (!organization) {\n organization = modalResult.selected.cn;\n }\n\n if (organization) {\n const orgIsValid = (options?.certificateCheck?.fullName &&\n strippingCharacters(organization) == strippingCharacters(options?.certificateCheck?.fullName))\n || (options?.certificateCheck?.shortName &&\n strippingCharacters(organization) == strippingCharacters(options?.certificateCheck?.shortName));\n if (!orgIsValid) {\n certificateFail = 2;\n }\n } else {\n certificateFail = 2;\n }\n }\n\n /** @deprecated */\n if (options?.checkFio &&\n modalResult.selected.fio.toLowerCase() !== options?.checkFio.toLowerCase()) {\n certificateFail = 1;\n }\n\n if (options?.checkOrganizationFullName || options?.checkOrganizationShortName) {\n let organization = modalResult.selected.organization;\n\n if (!organization) {\n organization = modalResult.selected.cn;\n }\n\n if (organization) {\n const orgIsValid = (options?.checkOrganizationFullName &&\n strippingCharacters(organization) == strippingCharacters(options?.checkOrganizationFullName))\n || (options?.checkOrganizationShortName &&\n strippingCharacters(organization) == strippingCharacters(options?.checkOrganizationShortName));\n if (!orgIsValid) {\n certificateFail = 2;\n }\n } else {\n certificateFail = 2;\n }\n }\n }\n\n if (certificateFail > 0) {\n return Promise.reject(\n certificateFail == 1 ?\n 'Данные лица, подписывающего заявку не совпадают с данными усиленной квалифицированной подписи.' :\n certificateFail === 3 ? 'Отсутствует активный КриптоПровайдер (не установлен либо недоступен плагин). ' +\n 'Чтобы подписать, установите плагин КриптоПро и проверьте наличие сертификата' :\n 'Данные организации не совпадают с данными усиленной квалифицированной подписи. ' +\n 'Убедитесь, что вы используете сертификат, выданные от организации.',\n );\n }\n\n if (withLog) {\n console.log('Подписываемые данные', data);\n }\n\n const signedData = await service.signBase64(modalResult.selected.certificate, data, true);\n\n if (withLog) {\n console.log('Подписанные данные', signedData);\n }\n\n if (!options?.skipServerCheck) {\n const verifyResult = await this.cryptoApiService.verify({\n data: data,\n signature: Base64.encode(signedData),\n detached: true\n }).toPromise();\n\n return {\n data,\n success: verifyResult.success,\n signed: signedData,\n certificate: modalResult.selected,\n };\n } else {\n return {\n data,\n success: true,\n signed: signedData,\n certificate: modalResult.selected,\n };\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoJinnProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\n const withLog = options?.withLog;\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, { certificates: list }).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n if (withLog) {\n console.log('Signing data', data);\n }\n\n const signedData = await service.signXml(modalResult.selected.certificate, data);\n\n const verifyResult = await this.cryptoApiService.validate(signedData).toPromise();\n\n return {\n data: signedData,\n success: verifyResult.success,\n certificate: modalResult.selected,\n validateResult: verifyResult.validateResult\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoProTsService } from '../services/cryptopro/crypto.pro.ts.service';\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoTsProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\n const withLog = options?.withLog;\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProTsService>(CryptoProTsService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n const signedData = await service.sign(modalResult.selected.certificate, data);\n\n if (!options?.skipServerCheck) {\n const validateResult = await this.cryptoApiService.validate(signedData).toPromise();\n\n return {\n data,\n signed: signedData,\n success: validateResult.success,\n validateResult: validateResult.validateResult,\n certificate: modalResult.selected,\n };\n } else {\n return {\n data,\n signed: signedData,\n success: true,\n validateResult: '',\n certificate: modalResult.selected,\n };\n }\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { ISignProvider, SignOptions } from \"./interfaces/isign.provider\";\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EmptyProvider implements ISignProvider {\n\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\n return Promise.resolve({\n data: data,\n success: true\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CryptoProvider } from './crypto.provider';\nimport { CryptoJinnProvider } from './cryptojinn.provider';\nimport { EmptyProvider } from './empty.provider';\nimport { CryptoTsProvider } from './cryptots.provider';\nimport { SignProviderType } from '../models';\nimport { ISignProvider } from './interfaces/isign.provider';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SignProviderFactory {\n constructor(\n protected cryptoProvider: CryptoProvider,\n protected cryptoJinnProvider: CryptoJinnProvider,\n protected cryptoTsProvider: CryptoTsProvider,\n protected emptyProvider: EmptyProvider) {\n }\n\n create(providerType: SignProviderType): ISignProvider {\n switch (providerType) {\n case 'crypto':\n return this.cryptoProvider;\n case 'cryptojinn':\n return this.cryptoJinnProvider;\n case 'cryptots':\n return this.cryptoTsProvider;\n case 'empty':\n return this.emptyProvider;\n }\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DownloadService extends EndpointBaseService {\n\n private url = '/signer/api/v1/download';\n\n constructor(protected http: HttpClient, protected injector: Injector) {\n super(http, injector);\n }\n\n public xml(url: string): Observable<any> {\n return this.http.get(url,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'text/xml'),\n responseType: 'text'\n });\n }\n\n public pdf(url: string): Observable<any> {\n return this.http.get(url,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'application/pdf'),\n responseType: 'blob'\n });\n }\n\n /*public xml(url: string): Observable<any> {\n return this.http.get(`${this.url}/xml?url=${encodeURIComponent(url)}`,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'text/xml'),\n responseType: 'text'\n });\n }\n\n public pdf(url: string): Observable<any> {\n return this.http.get(`${this.url}/pdf?url=${encodeURIComponent(url)}`,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'application/pdf'),\n responseType: 'blob'\n });\n }*/\n}\n","import { Component } from '@angular/core';\nimport { AlertService, DialogColor, DialogType, Utilities } from 'myrtex-mf-ui-composite';\nimport { SimpleModalComponent } from 'ngx-simple-modal';\nimport { Base64 } from 'js-base64';\nimport { SignProviderType, SignType } from '../../models';\nimport { SignedResultModel } from '../../models/signed-result.model';\nimport { CertificateCheck, SignRequestModel } from '../../models/sign-request.model';\nimport { DownloadService } from '../../services/download.service';\nimport { SignProviderFactory } from '../../providers/signprovider.factory';\nimport { OnInit } from '@angular/core/core';\nimport { SignerTypeEnum } from '../../enums/signer-type.enum';\n\nexport interface SignedResponseModel {\n result: boolean;\n model?: SignedResultModel;\n}\n\n@Component({\n selector: 'lib-sign-modal',\n templateUrl: './sign-modal.component.html',\n styleUrls: ['./sign-modal.component.css']\n})\nexport class SignModalComponent\n extends SimpleModalComponent<SignRequestModel, SignedResponseModel> implements OnInit, SignRequestModel {\n\n public title = '';\n public okLabel = '';\n public cancelLabel = '';\n\n public xmlUrl?: string;\n public pdfUrl?: string;\n\n public additionalPdfUrl?: string;\n public additionalPdfUrlTitle?: string;\n\n public provider: SignProviderType = 'empty';\n public signType: SignType = 'xml';\n\n public xmlToSign = '';\n public pdfToSign = '';\n public withLog?: boolean;\n public skipServerCheck?: boolean;\n\n public signerType?: SignerTypeEnum;\n public certificateCheck?: CertificateCheck;\n\n /** @deprecated */\n public checkFio?: string;\n /** @deprecated */\n public checkOgrn?: string;\n /** @deprecated */\n public checkOrganizationFullName?: string;\n /** @deprecated */\n public checkOrganizationShortName?: string;\n /** @deprecated */\n public checkInn?: string;\n\n downloadingPdf = false;\n\n constructor(private signProviderFactory: SignProviderFactory,\n private downloadService: DownloadService,\n private alertService: AlertService) {\n super();\n this.result = { result: false };\n }\n\n get disabled() {\n // todo как можно дизеблить кнопу\n return false;\n }\n\n get pdfViewUrl(): string {\n return this.pdfUrl ?\n `/signer/pdfjs/web/viewer.html?file=${encodeURIComponent(this.pdfUrl)}` : '';\n }\n\n ngOnInit(): void {\n this.downloadXml();\n this.downloadPdf();\n }\n\n public ok() {\n\n if (!this.signType) {\n this.signType = 'xml';\n }\n\n let signData = this.xmlToSign;\n\n switch (this.signType) {\n case 'xml':\n signData = Base64.encode(this.xmlToSign);\n break;\n case 'pdf':\n signData = this.pdfToSign;\n break;\n case 'xmlts':\n signData = this.xmlToSign;\n break;\n }\n\n this.signProviderFactory.create(this.provider)\n .sign(signData, {\n skipServerCheck: this.skipServerCheck,\n withLog: this.withLog,\n\n certificateCheck: this.certificateCheck,\n\n checkFio: this.checkFio,\n checkOgrn: this.checkOgrn,\n checkOrganizationFullName: this.checkOrganizationFullName,\n checkOrganizationShortName: this.checkOrganizationShortName,\n checkInn: this.checkInn\n })\n .then((ok: SignedResultModel) => {\n this.processResult(ok);\n }).catch((error: any) => {\n this.processError(error);\n });\n }\n\n public cancel() {\n this.close();\n }\n\n private processResult(signResult: SignedResultModel): void {\n if (signResult.success) {\n this.result = { model: signResult, result: true };\n this.close();\n } else {\n this.alertService.showDialog({\n title: 'Ошибка проверки подписи',\n message: 'Подпись не валидна',\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n }\n });\n }\n }\n\n private processError(error: any): void {\n if (this.withLog) {\n console.error(error);\n }\n\n if (error) {\n this.alertService.showDialog({\n title: 'Ошибка проверки подписи',\n message: typeof (error) == 'string' ? error : JSON.stringify(error),\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n //\n }\n });\n }\n }\n\n private downloadXml(): void {\n if (!this.xmlUrl) {\n return;\n }\n\n if (this.withLog) {\n console.log('Downloading xml');\n }\n\n this.downloadService.xml(this.xmlUrl).subscribe(result => {\n if (this.withLog) {\n console.log('xmlToSign = ', result);\n }\n this.xmlToSign = result;\n });\n }\n\n private downloadPdf(): void {\n if (!this.pdfUrl) {\n return;\n }\n\n if (this.withLog) {\n console.log('Downloading pdf');\n }\n\n this.downloadingPdf = true;\n this.downloadService.pdf(this.pdfUrl)\n .subscribe(result => {\n this.downloadingPdf = false;\n // todo подумать, как правильно читать файл\n // const blob = new Blob([result], {type: 'application/pdf'});\n const reader = new FileReader();\n reader.readAsDataURL(result);\n reader.onloadend = () => {\n let base64data = reader.result as string;\n base64data = base64data.replace('data:application/pdf;base64,', '');\n\n if (this.withLog) {\n console.log('pdfToSign = ', base64data);\n }\n this.pdfToSign = base64data;\n }\n }, () => {\n this.downloadingPdf = false;\n });\n }\n}\n","<div class=\"modal-content accent-head xl\">\n <div class=\"modal-header\">\n <div class=\"modal-title uppercase\">\n <h4 class=\"ng-binding\">{{title || 'Направление документа на подписание'}}</h4>\n </div>\n <span class=\"close close-click\" (click)=\"close()\">\n <svg width=\"14\" height=\"14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M13 1L1 13M1 1l12 12\" stroke=\"#3A3A3A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n </div>\n\n <div class=\"modal-body text-center\">\n <div class=\"widget\">\n <my-tabs>\n <app-tab tabTitle=\"Визуализация документа\" *ngIf=\"pdfUrl\">\n <pre *ngIf=\"downloadingPdf\">\n Подождите, идет формирование документа\n </pre>\n <iframe *ngIf=\"!downloadingPdf\" [src]=\"pdfViewUrl | safeurl\"\n title=\"webviewer\" frameborder=\"0\" width=\"100%\" height=\"800\"></iframe>\n </app-tab>\n <app-tab tabTitle=\"Подписываемые данные\" *ngIf=\"xmlUrl\">\n <pre [innerText]=\"xmlToSign\"></pre>\n </app-tab>\n </my-tabs>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <div *ngIf=\"pdfUrl || xmlUrl || additionalPdfUrl\"\n class=\"modal-footer-item\">\n <a *ngIf=\"pdfUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"pdfUrl\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M18 21.25H6C5.30964 21.25 4.75 20.6904 4.75 20V4C4.75 3.30964 5.30964 2.75 6 2.75H13.1893L19.25 8.81066V20C19.25 20.6904 18.6904 21.25 18 21.25Z\"\n stroke=\"#282828\" stroke-width=\"1.5\"/>\n </svg>\n <span>Скачать документ</span>\n </a>\n <a *ngIf=\"xmlUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"xmlUrl\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 16L2 12L6 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M18 16L22 12L18 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"/>\n <path d=\"M7.56689 19.1782L15.5669 5.32182\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"/>\n </svg>\n <span>Скачать XML-данные</span>\n </a>\n <a *ngIf=\"additionalPdfUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"additionalPdfUrl\">\n <svg width=\"24\" height=\"20\" viewBox=\"0 0 24 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\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\"/>\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\"/>\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\"/>\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\"/>\n </svg>\n <span>{{additionalPdfUrlTitle}}</span>\n </a>\n </div>\n <div class=\"modal-footer-item\">\n <button\n class=\"mrx-btn mrx-btn-secondary mrx-btn-md wpx-120 mr-3\"\n (click)=\"cancel()\"\n >\n <div class=\"mrx-btn-label\">{{cancelLabel || 'Отменить'}}</div>\n </button>\n <button\n class=\"mrx-btn mrx-btn-primary mrx-btn-md\"\n [disabled]=\"disabled\"\n (click)=\"ok()\"\n >\n <div class=\"mrx-btn-label\">{{okLabel || 'Подписать'}}</div>\n </button>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { SignedResultModel, SignRequestModel } from '../models';\nimport { SignModalComponent } from '../components/sign-modal/sign-modal.component';\nimport { TmpTokenService, Utilities } from 'myrtex-mf-ui-composite';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SignService {\n\n constructor(private simpleModalService: SimpleModalService, private tmpTokenService: TmpTokenService) {\n }\n\n public sign(request: SignRequestModel,\n ok: (result?: SignedResultModel) => void,\n cancel?: () => void): void {\n\n const baseUrl = Utilities.commonPart(request.xmlUrl, request.pdfUrl);\n\n this.tmpTokenService.generate(baseUrl).subscribe(token => {\n\n const ph = `${window.location.protocol}//${window.location.host}`;\n if (request.xmlUrl) {\n request.xmlUrl = ph + Utilities.updateQueryStringParameter(request.xmlUrl, 'authToken', token);\n }\n\n if (request.pdfUrl) {\n request.pdfUrl = ph + Utilities.updateQueryStringParameter(request.pdfUrl, 'authToken', token);\n }\n\n this.simpleModalService.addModal(SignModalComponent, request, { wrapperClass: 'in xl' })\n .subscribe(result => {\n if (result && result.result) {\n ok(result.model);\n } else {\n if (cancel) {\n cancel();\n }\n }\n });\n\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SignModalComponent } from './components/sign-modal/sign-modal.component';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MyrtexMfUiCompositeModule } from 'myrtex-mf-ui-composite';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { SignService } from './services/public.sign.service';\nimport { DownloadService } from './services/download.service';\nimport { CertificateSelectComponent } from './components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from './services/crypto.api.service';\nimport { SignProviderFactory } from './providers/signprovider.factory';\nimport { CryptoProvider } from './providers/crypto.provider';\nimport { CryptoJinnProvider } from './providers/cryptojinn.provider';\nimport { CryptoTsProvider } from './providers/cryptots.provider';\nimport { EmptyProvider } from './providers/empty.provider';\n\n@NgModule({\n declarations: [\n SignModalComponent,\n CertificateSelectComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n NgSelectModule,\n MyrtexMfUiCompositeModule\n ],\n exports: [\n SignModalComponent\n ],\n providers: [\n SignProviderFactory,\n CryptoProvider,\n CryptoJinnProvider,\n CryptoTsProvider,\n EmptyProvider,\n\n CryptoApiService,\n SignService,\n DownloadService\n ]\n})\nexport class MyrtexSignerModule { }\n","/*\n * Public API Surface of myrtex-mf-signer\n */\n// enums\nexport * from './lib/enums/index';\n\n// models\nexport * from './lib/models/index';\n\n// components\nexport * from './lib/components/sign-modal/sign-modal.component';\n\n// modules\nexport * from './lib/myrtex-signer.module';\n\n// services\nexport * from './lib/services/public.sign.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CertificateAdjuster","i1","i2.CryptoService","i3.CryptoApiService","i1.CryptoProvider","i2.CryptoJinnProvider","i3.CryptoTsProvider","i4.EmptyProvider","i1.SignProviderFactory","i2.DownloadService","i4","i2"],"mappings":"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"}
|
|
@@ -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/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 {\n\n public available = false;\n options: any = {};\n\n init(): Promise<CryptoBaseService> {\n return Promise.reject('Not implemented');\n };\n\n auth(): Promise<boolean> {\n return Promise.resolve(true);\n };\n}\n","class CertificateAdjuster {\n extract(s: string, name: string | string[]): string {\n if (typeof (name) === 'string') {\n name = [name];\n }\n\n for (var i = 0; i < name.length; i++) {\n const n = name[i];\n const re = new RegExp(n + '\\\\s*=\\\\s*(?<value>[^=]+)(?:[,\\\\\\\\/]|$)', 'g');\n const m = re.exec(s);\n if (m !== null && m.groups !== undefined && m.groups !== null) {\n let r = m.groups.value;\n r = r.replace(/^\\\"?/, '');\n r = r.replace(/\\\"$/, '');\n r = r.replace(/\\\"\\\"/g, '\"');\n return r;\n }\n }\n\n return '';\n };\n\n print2Digit(digit: number) {\n return (digit < 10) ? '0' + digit : digit;\n };\n\n getCertDate(paramDate: any) {\n let certDate = new Date(paramDate);\n return this.print2Digit(certDate.getUTCDate()) + '.' + this.print2Digit(certDate.getMonth() + 1) +\n '.' + certDate.getFullYear() + ' ' +\n this.print2Digit(certDate.getUTCHours()) + ':' + this.print2Digit(certDate.getUTCMinutes()) +\n ':' + this.print2Digit(certDate.getUTCSeconds());\n };\n\n getCertFio(certSubjectName: string) {\n const lastName = this.extract(certSubjectName, 'SN');\n const name = this.extract(certSubjectName, 'G');\n\n return lastName + ' ' + name;\n };\n\n getCertPost(certSubjectName: string) {\n return this.extract(certSubjectName, 'T');\n };\n\n getCertOgrn(certSubjectName: string) {\n return this.extract(certSubjectName, ['OGRN', 'ОГРН', 'ОГРНИП','OGRNIP', '1.2.643.100.1']);\n };\n\n getCertOrg(certSubjectName: string) {\n return this.extract(certSubjectName, 'O');\n };\n\n getCertInn(certSubjectName: string) {\n return this.extract(certSubjectName, ['INN', 'ИНН', '1.2.643.3.131.1.1']);\n };\n\n getCertName(certSubjectName: string) {\n return this.extract(certSubjectName, 'CN');\n };\n\n getIssuer(certIssuerName: string) {\n return this.extract(certIssuerName, 'CN');\n };\n\n getCertInfoString(certSubjectName: string, certFromDate: any) {\n return this.extract(certSubjectName, 'CN') + '; Выдан: ' + this.getCertDate(certFromDate);\n };\n}\n\nconst instance = new CertificateAdjuster();\nexport { instance as CertificateAdjuster };","export const strippingCharacters = (text?: string): string => {\n if (!text) {\n return ''\n }\n return text.replace(/\\.|,|!|\"|«|»|<|>|'|:|;|-|\\\\(|\\\\)/g, '').toLowerCase()\n}\n","import {\n CADESCOM_STORE_LOCATION,\n CAPICOM_STORE_NAMES,\n CAPICOM_STORE_OPEN_MODE,\n ProgIds,\n Async\n} from 'cadesplugin-types';\nimport { CertificateCheck, CertificateModel } from '../../models';\n// @ts-ignore\nimport getCadesplugin from 'async-cadesplugin';\nimport { CryptoBaseService } from '../crypto.base.service';\nimport { CertificateAdjuster } from '../certificate.adjuster';\nimport { SignerTypeEnum } from '../../enums/signer-type.enum';\nimport { strippingCharacters } from '../../helpers/strippingCharacters';\n\ndeclare global {\n interface Window {\n cadesplugin: Async.IWebClassFactory;\n CRYPTO_SKIP_CHECK?: boolean;\n }\n}\n\ninterface CertificateFilter {\n certificateCheck?: CertificateCheck;\n}\n\ninterface Certificate {\n id: number;\n certificate: any;\n subjectName: string;\n name: string;\n cn: string;\n fio: string;\n post: string;\n ogrn: string;\n organization: string;\n inn: string;\n validFromDate: string;\n validToDate: string;\n thumbprint: string;\n issuerName: string;\n serialNumber: string;\n isExpired: boolean;\n}\n\nexport class CryptoProBaseService extends CryptoBaseService {\n\n constructor() {\n super();\n }\n\n public async init(): Promise<CryptoBaseService> {\n await getCadesplugin();\n return Promise.resolve(this);\n };\n\n public async getCertificates(filter?: CertificateFilter): Promise<CertificateModel[]> {\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\n\n let storeCerts = await store.Certificates;\n let count = await storeCerts.Count;\n let certificates: Array<CertificateModel> = [];\n\n for (let i = 1; i <= count; i++) {\n let cert = await storeCerts.Item(i);\n let validFromDate = new Date(await cert.ValidFromDate);\n let validToDate = new Date(await cert.ValidToDate);\n const subjectName = await cert.SubjectName;\n\n const certificate: Certificate = {\n id: i,\n certificate: cert,\n subjectName: subjectName,\n name: CertificateAdjuster.getCertInfoString(subjectName, validFromDate),\n cn: CertificateAdjuster.getCertName(subjectName),\n fio: CertificateAdjuster.getCertFio(subjectName),\n post: CertificateAdjuster.getCertPost(subjectName),\n ogrn: CertificateAdjuster.getCertOgrn(subjectName),\n organization: CertificateAdjuster.getCertOrg(subjectName),\n inn: CertificateAdjuster.getCertInn(subjectName),\n validFromDate: validFromDate.toLocaleDateString('ru-RU'),\n validToDate: validToDate.toLocaleDateString('ru-RU'),\n thumbprint: await cert.Thumbprint,\n issuerName: await cert.IssuerName,\n serialNumber: await cert.SerialNumber,\n isExpired: validToDate < new Date()\n };\n\n let filterOk = true;\n if (window.CRYPTO_SKIP_CHECK !== true) {\n if (filter?.certificateCheck?.signerType === SignerTypeEnum.FL) {\n filterOk = !certificate.ogrn;\n } else if ([SignerTypeEnum.UL, SignerTypeEnum.IP]\n .indexOf(filter?.certificateCheck?.signerType || SignerTypeEnum.Unknown) > -1) {\n filterOk = certificate.ogrn ? true : false;\n if (filterOk) {\n const organization = certificate.organization || certificate.cn;\n\n if (organization) {\n const orgIsValid = (filter?.certificateCheck?.fullName &&\n strippingCharacters(organization) == strippingCharacters(filter?.certificateCheck?.fullName))\n || (filter?.certificateCheck?.shortName &&\n strippingCharacters(organization) == strippingCharacters(filter?.certificateCheck?.shortName));\n if (!orgIsValid) {\n filterOk = false;\n }\n } else {\n filterOk = false;\n }\n }\n }\n\n if (filterOk && filter?.certificateCheck?.signerType) {\n const fio = certificate.fio.toLowerCase();\n\n if (filter?.certificateCheck?.fio?.toLocaleLowerCase() !== fio) {\n filterOk = false;\n }\n }\n }\n\n if (filterOk) {\n certificates.push(certificate);\n }\n }\n\n await store.Close();\n return certificates;\n }\n}\n","import {\n Async,\n CADESCOM_CADES_TYPE,\n CADESCOM_CONTENT_ENCODING_TYPE,\n CADESCOM_STORE_LOCATION, CAPICOM_STORE_NAMES, CAPICOM_STORE_OPEN_MODE,\n ProgIds\n} from 'cadesplugin-types';\nimport { CryptoProBaseService } from './crypto.pro.base.service';\n\nexport class CryptoProAsyncService extends CryptoProBaseService {\n\n public static readonly key = 'cryptoproasync';\n\n constructor() {\n super();\n }\n\n public async signXml(certificate: any, data: string): Promise<string> {\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let timestamp_service_url = 'http://testca.cryptopro.ru/tsp/tsp.srf';\n await signer.propset_TSAAddress(timestamp_service_url);\n\n let signed: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\n\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\n await signed.propset_Content(encodedXml);\n\n let cades_xml_signature_type_enveloped = 80;\n await signed.propset_SignatureType(cades_xml_signature_type_enveloped);\n\n const signedData = await signed.Sign(signer);\n \n return signedData;\n }\n\n public async signBase64(certificate: any, data: string, detached: boolean = false): Promise<string> {\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let signed: Async.ICPSignedData5 = await window.cadesplugin.CreateObjectAsync(ProgIds.CadesSignedData);\n\n await signed.propset_ContentEncoding(CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY);\n await signed.propset_Content(data);\n\n const signedData = await signed.SignCades(signer, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, detached);\n\n return signedData;\n }\n}\n","import { Component } from '@angular/core';\nimport { SimpleModalComponent } from 'ngx-simple-modal';\nimport { CertificateModel } from '../../models';\n\nexport interface CertificateSelectModel {\n certificates: CertificateModel[];\n}\n\nexport interface CertificateSelectResultModel {\n selected?: CertificateModel;\n}\n\n@Component({\n selector: 'lib-certificate-select',\n templateUrl: './certificate-select.component.html',\n styleUrls: ['./certificate-select.component.css']\n})\nexport class CertificateSelectComponent extends SimpleModalComponent<CertificateSelectModel, CertificateSelectResultModel>\n implements CertificateSelectModel {\n\n certificates: CertificateModel[] = [];\n\n constructor() {\n super();\n this.result = {};\n }\n\n ok(cert: CertificateModel) {\n this.result = {selected: cert};\n this.close();\n }\n}\n","<div class=\"modal-content open accent-head certificate\">\n <div class=\"modal-header\">\n <div class=\"modal-title\" [innerHTML]=\"'Выберите сертификат'\">\n </div>\n <span class='close close-click' (click)=\"close()\">\n <svg width='14' height='14' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <path d='M13 1L1 13M1 1l12 12' stroke='#3A3A3A' stroke-width='1.5' stroke-linecap='round'\n stroke-linejoin='round' />\n </svg>\n </span>\n </div>\n <div class=\"modal-body text-center\">\n\n <div class=\"modal-body-other\">\n <div *ngFor=\"let cert of certificates\">\n <div class=\"modal-body-info\" *ngIf=\"!cert.isExpired\">\n <div class=\"modal-body-info__item\">\n <span class=\"text\">\n Владелец:\n </span>\n <span class=\"text\">\n {{cert.cn}}<br/>\n {{cert.fio}}<span *ngIf=\"cert.post\">, {{cert.post}}</span>\n </span>\n </div>\n <div class=\"modal-body-info__item\">\n <span class=\"text\">\n Срок действия:\n </span>\n <span class=\"text\">\n {{cert.validFromDate}} - {{cert.validToDate}}\n </span>\n </div>\n <div class=\"modal-body-info__item\">\n <span class=\"text hash\">\n {{cert.thumbprint}} {{cert.isExpired ? \"(истек)\" : \"\"}}\n </span>\n </div>\n <button\n (click)=\"ok(cert)\"\n [disabled]=\"cert.isExpired\"\n class=\"btn btn-md\">Создать подпись</button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n </div>\n</div>","import {\n Async,\n CADESCOM_STORE_LOCATION, CADESCOM_XML_SIGNATURE_TYPE,\n CAPICOM_STORE_NAMES,\n CAPICOM_STORE_OPEN_MODE,\n ProgIds\n} from 'cadesplugin-types';\nimport { CryptoProBaseService } from './crypto.pro.base.service';\n\nexport class CryptoProTsService extends CryptoProBaseService {\n\n public static readonly key = 'cryptoprots';\n\n constructor() {\n super();\n }\n\n private get TIMESTAMP_SERVICE_URL(): string {\n return 'http://testca.cryptopro.ru/tsp/tsp.srf';\n }\n\n public async sign(certificate: any, data: string): Promise<string> {\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\n\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let signedXML: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\n\n let publicKey: Async.IPublicKey = await certificate.PublicKey();\n let algorithm: Async.IOID = await publicKey.Algorithm;\n let algorithmOid = await algorithm.Value;\n\n let {signMethod, digestMethod} = this.getSigningMethods(algorithmOid);\n\n //await signer.propset_Options(api.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN);\n\n await signer.propset_TSAAddress(this.TIMESTAMP_SERVICE_URL);\n\n if (data) {\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\n await signedXML.propset_Content(encodedXml);\n }\n\n await signedXML.propset_SignatureType(CADESCOM_XML_SIGNATURE_TYPE.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED);\n await signedXML.propset_SignatureMethod(signMethod);\n await signedXML.propset_DigestMethod(digestMethod);\n\n let signature = await signedXML.Sign(signer);\n\n await store.Close();\n\n return signature;\n }\n\n private getSigningMethods(algorithmOid: string): { signMethod: string, digestMethod: string } {\n let signMethod = '', digestMethod = '';\n\n if (algorithmOid == '1.2.643.7.1.1.1.1') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 256 бит\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\n } else if (algorithmOid == '1.2.643.7.1.1.1.2') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 512 бит\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512';\n } else if (algorithmOid == '1.2.643.2.2.19') { // алгоритм ГОСТ Р 34.10-2001\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\n }\n\n return {signMethod, digestMethod};\n }\n}\n","import { CryptoProAsyncService } from './cryptopro/crypto.pro.async.service';\nimport { Injectable } from '@angular/core';\nimport { CryptoBaseService } from './crypto.base.service';\nimport { CryptoProTsService } from './cryptopro/crypto.pro.ts.service';\n\nexport interface CryptoHandler {\n key: string;\n name: string;\n service: CryptoBaseService;\n sign: boolean;\n default: boolean;\n disabled?: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoService {\n\n handlers: Map<string, CryptoHandler> = new Map<string, CryptoHandler>();\n selectPromise: any = null;\n private _initialized = false;\n private _withLog = false;\n\n public async startUp(withLog? : boolean): Promise<void> {\n this._withLog = !!withLog;\n\n if (!this._initialized) {\n this.registerHandler({\n key: CryptoProAsyncService.key,\n name: 'КриптоПро',\n service: new CryptoProAsyncService(),\n sign: true,\n default: true\n });\n this.registerHandler({\n key: CryptoProTsService.key,\n name: 'КриптоПро',\n service: new CryptoProTsService(),\n sign: true,\n default: false\n });\n await this.init();\n this._initialized = true;\n }\n this.log('Handlers init completed');\n return Promise.resolve();\n }\n\n public registerHandler(options: CryptoHandler) {\n this.log('Register handler', options);\n\n options.disabled = false;\n this.handlers.set(options.key, options);\n };\n\n public disableHandler(key: string): void {\n const handler = this.handlers.get(key);\n if (handler) {\n handler.disabled = true;\n }\n };\n\n public getHandler(key: string): Promise<CryptoHandler> {\n const handler = this.getActiveHandlers()\n .find(x => x.key == key);\n\n if (handler) {\n return Promise.resolve(handler);\n }\n return Promise.reject(`Not found ${key} handler`);\n };\n\n public getDefaultHandler() : Promise<CryptoHandler> {\n const handler = this.getActiveHandlers()\n .find(x => x.default);\n\n if (handler) {\n return Promise.resolve(handler);\n }\n return Promise.reject(`Not found default handler`);\n };\n\n public getService<T extends CryptoBaseService>(key: string): Promise<T> {\n const handler = this.handlers.get(key);\n if (handler) {\n return Promise.resolve(handler.service as T);\n }\n return Promise.reject(`Not found ${key}`);\n };\n\n public getActiveHandlers(): Array<CryptoHandler> {\n const active = new Array<CryptoHandler>();\n this.handlers.forEach(s => {\n if (!s.disabled) {\n active.push(s);\n }\n });\n return active;\n };\n\n private log(...args: any[]) {\n if (this._withLog) {\n console.log(args);\n }\n };\n\n private async init(): Promise<any> {\n this.log('Initialize handlers');\n\n const promises: Array<Promise<any>> = [];\n this.handlers.forEach(handler => {\n handler.service.available = false;\n\n this.log('Initialize ' + handler.name);\n\n const promise = handler.service.init().then((result) => {\n result.available = true;\n this.log('Handler init success', result);\n }).catch(reason => {\n this.log('Handler init fail', reason);\n });\n\n promises.push(promise);\n });\n\n return await Promise.all(promises);\n };\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\nimport { SignValidateResponse } from '../models';\nimport { VerifyCertModel } from '../models/internal/verify.cert.model';\nimport { VerifyCertResponseModel } from '../models/internal/verify.cert.response.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoApiService extends EndpointBaseService {\n\n private urlCrypto = '/cryptopro/api/v1';\n private urlSigner = '/signer/api/v1';\n\n constructor(protected http: HttpClient, protected injector: Injector) {\n super(http, injector);\n }\n\n public verify(data: VerifyCertModel): Observable<VerifyCertResponseModel> {\n return this.http.post<VerifyCertResponseModel>(`${this.urlCrypto}/verify`, data);\n }\n\n public validate(data: string): Observable<SignValidateResponse> {\n return this.http.post<SignValidateResponse>(`${this.urlSigner}/jinn/validate`, {data});\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Base64 } from 'js-base64';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { SignedResultModel } from '../models';\nimport { strippingCharacters } from '../helpers/strippingCharacters';\n\ndeclare const window: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\n const withLog = options?.withLog;\n await this.cryptoService.startUp(withLog);\n\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\n const list = await service.getCertificates({\n certificateCheck: options?.certificateCheck\n });\n\n if (list.length === 0) {\n return Promise.reject('Отсутствует подходящий сертификат');\n }\n\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('Сертификат не выбран, отмена');\n }\n return Promise.reject();\n }\n\n let certificateFail = 0;\n if (window.CRYPTO_SKIP_CHECK !== true) {\n if (options?.certificateCheck?.fio &&\n modalResult.selected.fio.toLowerCase() !== options?.certificateCheck?.fio.toLowerCase()) {\n certificateFail = 1;\n }\n\n if (options?.certificateCheck?.fullName || options?.certificateCheck?.shortName) {\n let organization = modalResult.selected.organization;\n\n if (!organization) {\n organization = modalResult.selected.cn;\n }\n\n if (organization) {\n const orgIsValid = (options?.certificateCheck?.fullName &&\n strippingCharacters(organization) == strippingCharacters(options?.certificateCheck?.fullName))\n || (options?.certificateCheck?.shortName &&\n strippingCharacters(organization) == strippingCharacters(options?.certificateCheck?.shortName));\n if (!orgIsValid) {\n certificateFail = 2;\n }\n } else {\n certificateFail = 2;\n }\n }\n\n /** @deprecated */\n if (options?.checkFio &&\n modalResult.selected.fio.toLowerCase() !== options?.checkFio.toLowerCase()) {\n certificateFail = 1;\n }\n\n if (options?.checkOrganizationFullName || options?.checkOrganizationShortName) {\n let organization = modalResult.selected.organization;\n\n if (!organization) {\n organization = modalResult.selected.cn;\n }\n\n if (organization) {\n const orgIsValid = (options?.checkOrganizationFullName &&\n strippingCharacters(organization) == strippingCharacters(options?.checkOrganizationFullName))\n || (options?.checkOrganizationShortName &&\n strippingCharacters(organization) == strippingCharacters(options?.checkOrganizationShortName));\n if (!orgIsValid) {\n certificateFail = 2;\n }\n } else {\n certificateFail = 2;\n }\n }\n }\n\n if (certificateFail > 0) {\n return Promise.reject(\n certificateFail == 1 ?\n 'Данные лица, подписывающего заявку не совпадают с данными усиленной квалифицированной подписи.' :\n certificateFail === 3 ? 'Отсутствует активный КриптоПровайдер (не установлен либо недоступен плагин). ' +\n 'Чтобы подписать, установите плагин КриптоПро и проверьте наличие сертификата' :\n 'Данные организации не совпадают с данными усиленной квалифицированной подписи. ' +\n 'Убедитесь, что вы используете сертификат, выданные от организации.',\n );\n }\n\n if (withLog) {\n console.log('Подписываемые данные', data);\n }\n\n const signedData = await service.signBase64(modalResult.selected.certificate, data, true);\n\n if (withLog) {\n console.log('Подписанные данные', signedData);\n }\n\n if (!options?.skipServerCheck) {\n const verifyResult = await this.cryptoApiService.verify({\n data: data,\n signature: Base64.encode(signedData),\n detached: true\n }).toPromise();\n\n return {\n data,\n success: verifyResult.success,\n signed: signedData,\n certificate: modalResult.selected,\n };\n } else {\n return {\n data,\n success: true,\n signed: signedData,\n certificate: modalResult.selected,\n };\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoJinnProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\n const withLog = options?.withLog;\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, { certificates: list }).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n if (withLog) {\n console.log('Signing data', data);\n }\n\n const signedData = await service.signXml(modalResult.selected.certificate, data);\n\n const verifyResult = await this.cryptoApiService.validate(signedData).toPromise();\n\n return {\n data: signedData,\n success: verifyResult.success,\n certificate: modalResult.selected,\n validateResult: verifyResult.validateResult\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoProTsService } from '../services/cryptopro/crypto.pro.ts.service';\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoTsProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\n const withLog = options?.withLog;\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProTsService>(CryptoProTsService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n const signedData = await service.sign(modalResult.selected.certificate, data);\n\n if (!options?.skipServerCheck) {\n const validateResult = await this.cryptoApiService.validate(signedData).toPromise();\n\n return {\n data,\n signed: signedData,\n success: validateResult.success,\n validateResult: validateResult.validateResult,\n certificate: modalResult.selected,\n };\n } else {\n return {\n data,\n signed: signedData,\n success: true,\n validateResult: '',\n certificate: modalResult.selected,\n };\n }\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { ISignProvider, SignOptions } from \"./interfaces/isign.provider\";\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EmptyProvider implements ISignProvider {\n\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\n return Promise.resolve({\n data: data,\n success: true\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CryptoProvider } from './crypto.provider';\nimport { CryptoJinnProvider } from './cryptojinn.provider';\nimport { EmptyProvider } from './empty.provider';\nimport { CryptoTsProvider } from './cryptots.provider';\nimport { SignProviderType } from '../models';\nimport { ISignProvider } from './interfaces/isign.provider';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SignProviderFactory {\n constructor(\n protected cryptoProvider: CryptoProvider,\n protected cryptoJinnProvider: CryptoJinnProvider,\n protected cryptoTsProvider: CryptoTsProvider,\n protected emptyProvider: EmptyProvider) {\n }\n\n create(providerType: SignProviderType): ISignProvider {\n switch (providerType) {\n case 'crypto':\n return this.cryptoProvider;\n case 'cryptojinn':\n return this.cryptoJinnProvider;\n case 'cryptots':\n return this.cryptoTsProvider;\n case 'empty':\n return this.emptyProvider;\n }\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DownloadService extends EndpointBaseService {\n\n private url = '/signer/api/v1/download';\n\n constructor(protected http: HttpClient, protected injector: Injector) {\n super(http, injector);\n }\n\n public xml(url: string): Observable<any> {\n return this.http.get(url,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'text/xml'),\n responseType: 'text'\n });\n }\n\n public pdf(url: string): Observable<any> {\n return this.http.get(url,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'application/pdf'),\n responseType: 'blob'\n });\n }\n\n /*public xml(url: string): Observable<any> {\n return this.http.get(`${this.url}/xml?url=${encodeURIComponent(url)}`,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'text/xml'),\n responseType: 'text'\n });\n }\n\n public pdf(url: string): Observable<any> {\n return this.http.get(`${this.url}/pdf?url=${encodeURIComponent(url)}`,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'application/pdf'),\n responseType: 'blob'\n });\n }*/\n}\n","import { Component } from '@angular/core';\nimport { AlertService, DialogColor, DialogType, Utilities } from 'myrtex-mf-ui-composite';\nimport { SimpleModalComponent } from 'ngx-simple-modal';\nimport { Base64 } from 'js-base64';\nimport { SignProviderType, SignType } from '../../models';\nimport { SignedResultModel } from '../../models/signed-result.model';\nimport { CertificateCheck, SignRequestModel } from '../../models/sign-request.model';\nimport { DownloadService } from '../../services/download.service';\nimport { SignProviderFactory } from '../../providers/signprovider.factory';\nimport { OnInit } from '@angular/core/core';\nimport { SignerTypeEnum } from '../../enums/signer-type.enum';\n\nexport interface SignedResponseModel {\n result: boolean;\n model?: SignedResultModel;\n}\n\n@Component({\n selector: 'lib-sign-modal',\n templateUrl: './sign-modal.component.html',\n styleUrls: ['./sign-modal.component.css']\n})\nexport class SignModalComponent\n extends SimpleModalComponent<SignRequestModel, SignedResponseModel> implements OnInit, SignRequestModel {\n\n public title = '';\n public okLabel = '';\n public cancelLabel = '';\n\n public xmlUrl?: string;\n public pdfUrl?: string;\n\n public additionalPdfUrl?: string;\n public additionalPdfUrlTitle?: string;\n\n public provider: SignProviderType = 'empty';\n public signType: SignType = 'xml';\n\n public xmlToSign = '';\n public pdfToSign = '';\n public withLog?: boolean;\n public skipServerCheck?: boolean;\n\n public signerType?: SignerTypeEnum;\n public certificateCheck?: CertificateCheck;\n\n /** @deprecated */\n public checkFio?: string;\n /** @deprecated */\n public checkOgrn?: string;\n /** @deprecated */\n public checkOrganizationFullName?: string;\n /** @deprecated */\n public checkOrganizationShortName?: string;\n /** @deprecated */\n public checkInn?: string;\n\n downloadingPdf = false;\n\n constructor(private signProviderFactory: SignProviderFactory,\n private downloadService: DownloadService,\n private alertService: AlertService) {\n super();\n this.result = { result: false };\n }\n\n get disabled() {\n // todo как можно дизеблить кнопу\n return false;\n }\n\n get pdfViewUrl(): string {\n return this.pdfUrl ?\n `/signer/pdfjs/web/viewer.html?file=${encodeURIComponent(this.pdfUrl)}` : '';\n }\n\n ngOnInit(): void {\n this.downloadXml();\n this.downloadPdf();\n }\n\n public ok() {\n\n if (!this.signType) {\n this.signType = 'xml';\n }\n\n let signData = this.xmlToSign;\n\n switch (this.signType) {\n case 'xml':\n signData = Base64.encode(this.xmlToSign);\n break;\n case 'pdf':\n signData = this.pdfToSign;\n break;\n case 'xmlts':\n signData = this.xmlToSign;\n break;\n }\n\n this.signProviderFactory.create(this.provider)\n .sign(signData, {\n skipServerCheck: this.skipServerCheck,\n withLog: this.withLog,\n\n certificateCheck: this.certificateCheck,\n\n checkFio: this.checkFio,\n checkOgrn: this.checkOgrn,\n checkOrganizationFullName: this.checkOrganizationFullName,\n checkOrganizationShortName: this.checkOrganizationShortName,\n checkInn: this.checkInn\n })\n .then((ok: SignedResultModel) => {\n this.processResult(ok);\n }).catch((error: any) => {\n this.processError(error);\n });\n }\n\n public cancel() {\n this.close();\n }\n\n private processResult(signResult: SignedResultModel): void {\n if (signResult.success) {\n this.result = { model: signResult, result: true };\n this.close();\n } else {\n this.alertService.showDialog({\n title: 'Ошибка проверки подписи',\n message: 'Подпись не валидна',\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n }\n });\n }\n }\n\n private processError(error: any): void {\n if (this.withLog) {\n console.error(error);\n }\n\n if (error) {\n this.alertService.showDialog({\n title: 'Ошибка проверки подписи',\n message: typeof (error) == 'string' ? error : JSON.stringify(error),\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n //\n }\n });\n }\n }\n\n private downloadXml(): void {\n if (!this.xmlUrl) {\n return;\n }\n\n if (this.withLog) {\n console.log('Downloading xml');\n }\n\n this.downloadService.xml(this.xmlUrl).subscribe(result => {\n if (this.withLog) {\n console.log('xmlToSign = ', result);\n }\n this.xmlToSign = result;\n });\n }\n\n private downloadPdf(): void {\n if (!this.pdfUrl) {\n return;\n }\n\n if (this.withLog) {\n console.log('Downloading pdf');\n }\n\n this.downloadingPdf = true;\n this.downloadService.pdf(this.pdfUrl)\n .subscribe(result => {\n this.downloadingPdf = false;\n // todo подумать, как правильно читать файл\n // const blob = new Blob([result], {type: 'application/pdf'});\n const reader = new FileReader();\n reader.readAsDataURL(result);\n reader.onloadend = () => {\n let base64data = reader.result as string;\n base64data = base64data.replace('data:application/pdf;base64,', '');\n\n if (this.withLog) {\n console.log('pdfToSign = ', base64data);\n }\n this.pdfToSign = base64data;\n }\n }, () => {\n this.downloadingPdf = false;\n });\n }\n}\n","<div class=\"modal-content accent-head xl\">\n <div class=\"modal-header\">\n <div class=\"modal-title uppercase\">\n <h4 class=\"ng-binding\">{{title || 'Направление документа на подписание'}}</h4>\n </div>\n <span class=\"close close-click\" (click)=\"close()\">\n <svg width=\"14\" height=\"14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M13 1L1 13M1 1l12 12\" stroke=\"#3A3A3A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n </div>\n\n <div class=\"modal-body text-center\">\n <div class=\"widget\">\n <my-tabs>\n <app-tab tabTitle=\"Визуализация документа\" *ngIf=\"pdfUrl\">\n <pre *ngIf=\"downloadingPdf\">\n Подождите, идет формирование документа\n </pre>\n <iframe *ngIf=\"!downloadingPdf\" [src]=\"pdfViewUrl | safeurl\"\n title=\"webviewer\" frameborder=\"0\" width=\"100%\" height=\"800\"></iframe>\n </app-tab>\n <app-tab tabTitle=\"Подписываемые данные\" *ngIf=\"xmlUrl\">\n <pre [innerText]=\"xmlToSign\"></pre>\n </app-tab>\n </my-tabs>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <div *ngIf=\"pdfUrl || xmlUrl || additionalPdfUrl\"\n class=\"modal-footer-item\">\n <a *ngIf=\"pdfUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"pdfUrl\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M18 21.25H6C5.30964 21.25 4.75 20.6904 4.75 20V4C4.75 3.30964 5.30964 2.75 6 2.75H13.1893L19.25 8.81066V20C19.25 20.6904 18.6904 21.25 18 21.25Z\"\n stroke=\"#282828\" stroke-width=\"1.5\"/>\n </svg>\n <span>Скачать документ</span>\n </a>\n <a *ngIf=\"xmlUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"xmlUrl\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 16L2 12L6 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M18 16L22 12L18 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"/>\n <path d=\"M7.56689 19.1782L15.5669 5.32182\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"/>\n </svg>\n <span>Скачать XML-данные</span>\n </a>\n <a *ngIf=\"additionalPdfUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"additionalPdfUrl\">\n <svg width=\"24\" height=\"20\" viewBox=\"0 0 24 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\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\"/>\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\"/>\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\"/>\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\"/>\n </svg>\n <span>{{additionalPdfUrlTitle}}</span>\n </a>\n </div>\n <div class=\"modal-footer-item\">\n <button\n class=\"mrx-btn mrx-btn-secondary mrx-btn-md wpx-120 mr-3\"\n (click)=\"cancel()\"\n >\n <div class=\"mrx-btn-label\">{{cancelLabel || 'Отменить'}}</div>\n </button>\n <button\n class=\"mrx-btn mrx-btn-primary mrx-btn-md\"\n [disabled]=\"disabled\"\n (click)=\"ok()\"\n >\n <div class=\"mrx-btn-label\">{{okLabel || 'Подписать'}}</div>\n </button>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { SignedResultModel, SignRequestModel } from '../models';\nimport { SignModalComponent } from '../components/sign-modal/sign-modal.component';\nimport { TmpTokenService, Utilities } from 'myrtex-mf-ui-composite';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SignService {\n\n constructor(private simpleModalService: SimpleModalService, private tmpTokenService: TmpTokenService) {\n }\n\n public sign(request: SignRequestModel,\n ok: (result?: SignedResultModel) => void,\n cancel?: () => void): void {\n\n const baseUrl = Utilities.commonPart(request.xmlUrl, request.pdfUrl);\n\n this.tmpTokenService.generate(baseUrl).subscribe(token => {\n\n const ph = `${window.location.protocol}//${window.location.host}`;\n if (request.xmlUrl) {\n request.xmlUrl = ph + Utilities.updateQueryStringParameter(request.xmlUrl, 'authToken', token);\n }\n\n if (request.pdfUrl) {\n request.pdfUrl = ph + Utilities.updateQueryStringParameter(request.pdfUrl, 'authToken', token);\n }\n\n this.simpleModalService.addModal(SignModalComponent, request, { wrapperClass: 'in xl' })\n .subscribe(result => {\n if (result && result.result) {\n ok(result.model);\n } else {\n if (cancel) {\n cancel();\n }\n }\n });\n\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SignModalComponent } from './components/sign-modal/sign-modal.component';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MyrtexMfUiCompositeModule } from 'myrtex-mf-ui-composite';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { SignService } from './services/public.sign.service';\nimport { DownloadService } from './services/download.service';\nimport { CertificateSelectComponent } from './components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from './services/crypto.api.service';\nimport { SignProviderFactory } from './providers/signprovider.factory';\nimport { CryptoProvider } from './providers/crypto.provider';\nimport { CryptoJinnProvider } from './providers/cryptojinn.provider';\nimport { CryptoTsProvider } from './providers/cryptots.provider';\nimport { EmptyProvider } from './providers/empty.provider';\n\n@NgModule({\n declarations: [\n SignModalComponent,\n CertificateSelectComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n NgSelectModule,\n MyrtexMfUiCompositeModule\n ],\n exports: [\n SignModalComponent\n ],\n providers: [\n SignProviderFactory,\n CryptoProvider,\n CryptoJinnProvider,\n CryptoTsProvider,\n EmptyProvider,\n\n CryptoApiService,\n SignService,\n DownloadService\n ]\n})\nexport class MyrtexSignerModule { }\n","/*\n * Public API Surface of myrtex-mf-signer\n */\n// enums\nexport * from './lib/enums/index';\n\n// models\nexport * from './lib/models/index';\n\n// components\nexport * from './lib/components/sign-modal/sign-modal.component';\n\n// modules\nexport * from './lib/myrtex-signer.module';\n\n// services\nexport * from './lib/services/public.sign.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CertificateAdjuster","i1","i2.CryptoService","i3.CryptoApiService","i1.CryptoProvider","i2.CryptoJinnProvider","i3.CryptoTsProvider","i4.EmptyProvider","i1.SignProviderFactory","i2.DownloadService","i4","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"myrtex-mf-signer.mjs","sources":["../../../projects/myrtex-mf-signer/src/lib/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/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 {\n\n public available = false;\n options: any = {};\n\n init(): Promise<CryptoBaseService> {\n return Promise.reject('Not implemented');\n };\n\n auth(): Promise<boolean> {\n return Promise.resolve(true);\n };\n}\n","class CertificateAdjuster {\n extract(s: string, name: string | string[]): string {\n if (typeof (name) === 'string') {\n name = [name];\n }\n\n for (var i = 0; i < name.length; i++) {\n const n = name[i];\n const re = new RegExp(n + '\\\\s*=\\\\s*(?<value>[^=]+)(?:[,\\\\\\\\/]|$)', 'g');\n const m = re.exec(s);\n if (m !== null && m.groups !== undefined && m.groups !== null) {\n let r = m.groups.value;\n r = r.replace(/^\\\"?/, '');\n r = r.replace(/\\\"$/, '');\n r = r.replace(/\\\"\\\"/g, '\"');\n return r;\n }\n }\n\n return '';\n };\n\n print2Digit(digit: number) {\n return (digit < 10) ? '0' + digit : digit;\n };\n\n getCertDate(paramDate: any) {\n let certDate = new Date(paramDate);\n return this.print2Digit(certDate.getUTCDate()) + '.' + this.print2Digit(certDate.getMonth() + 1) +\n '.' + certDate.getFullYear() + ' ' +\n this.print2Digit(certDate.getUTCHours()) + ':' + this.print2Digit(certDate.getUTCMinutes()) +\n ':' + this.print2Digit(certDate.getUTCSeconds());\n };\n\n getCertFio(certSubjectName: string) {\n const lastName = this.extract(certSubjectName, 'SN');\n const name = this.extract(certSubjectName, 'G');\n\n return lastName + ' ' + name;\n };\n\n getCertPost(certSubjectName: string) {\n return this.extract(certSubjectName, 'T');\n };\n\n getCertOgrn(certSubjectName: string) {\n return this.extract(certSubjectName, ['OGRN', 'ОГРН', 'ОГРНИП','OGRNIP', '1.2.643.100.1']);\n };\n\n getCertOrg(certSubjectName: string) {\n return this.extract(certSubjectName, 'O');\n };\n\n getCertInn(certSubjectName: string) {\n return this.extract(certSubjectName, ['INN', 'ИНН', '1.2.643.3.131.1.1']);\n };\n\n getCertName(certSubjectName: string) {\n return this.extract(certSubjectName, 'CN');\n };\n\n getIssuer(certIssuerName: string) {\n return this.extract(certIssuerName, 'CN');\n };\n\n getCertInfoString(certSubjectName: string, certFromDate: any) {\n return this.extract(certSubjectName, 'CN') + '; Выдан: ' + this.getCertDate(certFromDate);\n };\n}\n\nconst instance = new CertificateAdjuster();\nexport { instance as CertificateAdjuster };","export const strippingCharacters = (text?: string): string => {\n if (!text) {\n return ''\n }\n return text.replace(/\\.|,|!|\"|«|»|<|>|'|:|;|-|\\\\(|\\\\)/g, '').toLowerCase()\n}\n","import {\n Async,\n CADESCOM_STORE_LOCATION,\n CAPICOM_STORE_NAMES,\n CAPICOM_STORE_OPEN_MODE,\n ProgIds\n} from 'cadesplugin-types';\nimport { CertificateCheck, CertificateModel } from '../../models';\n// @ts-ignore\nimport getCadesplugin from 'async-cadesplugin';\nimport { CryptoBaseService } from '../crypto.base.service';\nimport { CertificateAdjuster } from '../certificate.adjuster';\nimport { SignerTypeEnum } from '../../enums/signer-type.enum';\nimport { strippingCharacters } from '../../helpers/strippingCharacters';\n\ndeclare global {\n interface Window {\n cadesplugin: Async.IWebClassFactory;\n CRYPTO_SKIP_CHECK?: boolean;\n }\n}\n\ninterface CertificateFilter {\n certificateCheck?: CertificateCheck;\n}\n\ninterface Certificate {\n id: number;\n certificate: any;\n subjectName: string;\n name: string;\n cn: string;\n fio: string;\n post: string;\n ogrn: string;\n organization: string;\n inn: string;\n validFromDate: string;\n validToDate: string;\n thumbprint: string;\n issuerName: string;\n serialNumber: string;\n isExpired: boolean;\n}\n\nexport class CryptoProBaseService extends CryptoBaseService {\n\n constructor() {\n super();\n }\n\n public async init(): Promise<CryptoBaseService> {\n await getCadesplugin();\n return Promise.resolve(this);\n };\n\n public async getCertificates(filter?: CertificateFilter): Promise<CertificateModel[]> {\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\n\n let storeCerts = await store.Certificates;\n let count = await storeCerts.Count;\n let certificates: Array<CertificateModel> = [];\n\n for (let i = 1; i <= count; i++) {\n let cert = await storeCerts.Item(i);\n let validFromDate = new Date(await cert.ValidFromDate);\n let validToDate = new Date(await cert.ValidToDate);\n const subjectName = await cert.SubjectName;\n\n const certificate: Certificate = {\n id: i,\n certificate: cert,\n subjectName: subjectName,\n name: CertificateAdjuster.getCertInfoString(subjectName, validFromDate),\n cn: CertificateAdjuster.getCertName(subjectName),\n fio: CertificateAdjuster.getCertFio(subjectName),\n post: CertificateAdjuster.getCertPost(subjectName),\n ogrn: CertificateAdjuster.getCertOgrn(subjectName),\n organization: CertificateAdjuster.getCertOrg(subjectName),\n inn: CertificateAdjuster.getCertInn(subjectName),\n validFromDate: validFromDate.toLocaleDateString('ru-RU'),\n validToDate: validToDate.toLocaleDateString('ru-RU'),\n thumbprint: await cert.Thumbprint,\n issuerName: await cert.IssuerName,\n serialNumber: await cert.SerialNumber,\n isExpired: validToDate < new Date()\n };\n\n let filterOk = true;\n if (window.CRYPTO_SKIP_CHECK !== true) {\n if (filter?.certificateCheck?.signerType === SignerTypeEnum.FL) {\n filterOk = !certificate.ogrn;\n } else if ([SignerTypeEnum.UL, SignerTypeEnum.IP]\n .indexOf(filter?.certificateCheck?.signerType || SignerTypeEnum.Unknown) > -1) {\n filterOk = certificate.ogrn ? true : false;\n if (filterOk) {\n const organization = certificate.organization || certificate.cn;\n\n if (organization) {\n const orgIsValid = (filter?.certificateCheck?.fullName &&\n strippingCharacters(organization) == strippingCharacters(filter?.certificateCheck?.fullName))\n || (filter?.certificateCheck?.shortName &&\n strippingCharacters(organization) == strippingCharacters(filter?.certificateCheck?.shortName));\n if (!orgIsValid) {\n filterOk = false;\n }\n } else {\n filterOk = false;\n }\n }\n }\n\n if (filterOk && filter?.certificateCheck?.signerType) {\n const fio = certificate.fio.toLowerCase();\n\n if (filter?.certificateCheck?.fio?.toLocaleLowerCase() !== fio) {\n filterOk = false;\n }\n }\n }\n\n if (filterOk) {\n certificates.push(certificate);\n }\n }\n\n await store.Close();\n return certificates;\n }\n}\n","import {\n Async,\n CADESCOM_CADES_TYPE,\n CADESCOM_CONTENT_ENCODING_TYPE,\n CADESCOM_STORE_LOCATION, CAPICOM_STORE_NAMES, CAPICOM_STORE_OPEN_MODE,\n ProgIds\n} from 'cadesplugin-types';\nimport { CryptoProBaseService } from './crypto.pro.base.service';\n\nexport class CryptoProAsyncService extends CryptoProBaseService {\n\n public static readonly key = 'cryptoproasync';\n\n constructor() {\n super();\n }\n\n public async signXml(certificate: any, data: string): Promise<string> {\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let timestamp_service_url = 'http://testca.cryptopro.ru/tsp/tsp.srf';\n await signer.propset_TSAAddress(timestamp_service_url);\n\n let signed: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\n\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\n await signed.propset_Content(encodedXml);\n\n let cades_xml_signature_type_enveloped = 80;\n await signed.propset_SignatureType(cades_xml_signature_type_enveloped);\n\n const signedData = await signed.Sign(signer);\n\n return signedData;\n }\n\n public async signBase64(certificate: any, data: string, detached: boolean = false): Promise<string> {\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let signed: Async.ICPSignedData5 = await window.cadesplugin.CreateObjectAsync(ProgIds.CadesSignedData);\n\n await signed.propset_ContentEncoding(CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY);\n await signed.propset_Content(data);\n\n const signedData = await signed.SignCades(signer, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, detached);\n\n return signedData;\n }\n}\n","import { Component } from '@angular/core';\nimport { SimpleModalComponent } from 'ngx-simple-modal';\nimport { CertificateModel } from '../../models';\n\nexport interface CertificateSelectModel {\n certificates: CertificateModel[];\n}\n\nexport interface CertificateSelectResultModel {\n selected?: CertificateModel;\n}\n\n@Component({\n selector: 'lib-certificate-select',\n templateUrl: './certificate-select.component.html',\n styleUrls: ['./certificate-select.component.css']\n})\nexport class CertificateSelectComponent extends SimpleModalComponent<CertificateSelectModel, CertificateSelectResultModel>\n implements CertificateSelectModel {\n\n certificates: CertificateModel[] = [];\n\n constructor() {\n super();\n this.result = {};\n }\n\n ok(cert: CertificateModel) {\n this.result = {selected: cert};\n this.close();\n }\n}\n","<div class=\"modal-content open accent-head certificate\">\n <div class=\"modal-header\">\n <div class=\"modal-title\" [innerHTML]=\"'Выберите сертификат'\">\n </div>\n <span class='close close-click' (click)=\"close()\">\n <svg width='14' height='14' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <path d='M13 1L1 13M1 1l12 12' stroke='#3A3A3A' stroke-width='1.5' stroke-linecap='round'\n stroke-linejoin='round' />\n </svg>\n </span>\n </div>\n <div class=\"modal-body text-center\">\n\n <div class=\"modal-body-other\">\n <div *ngFor=\"let cert of certificates\">\n <div class=\"modal-body-info\" *ngIf=\"!cert.isExpired\">\n <div class=\"modal-body-info__item\">\n <span class=\"text\">\n Владелец:\n </span>\n <span class=\"text\">\n {{cert.cn}}<br/>\n {{cert.fio}}<span *ngIf=\"cert.post\">, {{cert.post}}</span>\n </span>\n </div>\n <div class=\"modal-body-info__item\">\n <span class=\"text\">\n Срок действия:\n </span>\n <span class=\"text\">\n {{cert.validFromDate}} - {{cert.validToDate}}\n </span>\n </div>\n <div class=\"modal-body-info__item\">\n <span class=\"text hash\">\n {{cert.thumbprint}} {{cert.isExpired ? \"(истек)\" : \"\"}}\n </span>\n </div>\n <button\n (click)=\"ok(cert)\"\n [disabled]=\"cert.isExpired\"\n class=\"btn btn-md\">Создать подпись</button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n </div>\n</div>","import {\n Async,\n CADESCOM_STORE_LOCATION, CADESCOM_XML_SIGNATURE_TYPE,\n CAPICOM_STORE_NAMES,\n CAPICOM_STORE_OPEN_MODE,\n ProgIds\n} from 'cadesplugin-types';\nimport { CryptoProBaseService } from './crypto.pro.base.service';\n\ndeclare global {\n interface Window {\n cadesplugin: Async.IWebClassFactory;\n CRYPTO_SKIP_CHECK?: boolean;\n }\n}\n\nexport class CryptoProTsService extends CryptoProBaseService {\n\n public static readonly key = 'cryptoprots';\n\n constructor() {\n super();\n }\n\n private get TIMESTAMP_SERVICE_URL(): string {\n return 'http://testca.cryptopro.ru/tsp/tsp.srf';\n }\n\n public async sign(certificate: any, data: string): Promise<string> {\n const store = await window.cadesplugin.CreateObjectAsync(ProgIds.Store);\n await store.Open(CADESCOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAMES.CAPICOM_MY_STORE,\n CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);\n\n let signer: Async.ICPSigner6 = await window.cadesplugin.CreateObjectAsync(ProgIds.CPSigner);\n await signer.propset_Certificate(certificate);\n\n let signedXML: Async.ISignedXML = await window.cadesplugin.CreateObjectAsync(ProgIds.SignedXML);\n\n let publicKey: Async.IPublicKey = await certificate.PublicKey();\n let algorithm: Async.IOID = await publicKey.Algorithm;\n let algorithmOid = await algorithm.Value;\n\n let { signMethod, digestMethod } = this.getSigningMethods(algorithmOid);\n\n //await signer.propset_Options(api.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN);\n\n await signer.propset_TSAAddress(this.TIMESTAMP_SERVICE_URL);\n\n if (data) {\n let encodedXml = btoa(unescape(encodeURIComponent(data)));\n await signedXML.propset_Content(encodedXml);\n }\n\n await signedXML.propset_SignatureType(CADESCOM_XML_SIGNATURE_TYPE.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED);\n await signedXML.propset_SignatureMethod(signMethod);\n await signedXML.propset_DigestMethod(digestMethod);\n\n let signature = await signedXML.Sign(signer);\n\n await store.Close();\n\n return signature;\n }\n\n private getSigningMethods(algorithmOid: string): { signMethod: string, digestMethod: string } {\n let signMethod = '', digestMethod = '';\n\n if (algorithmOid == '1.2.643.7.1.1.1.1') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 256 бит\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256';\n } else if (algorithmOid == '1.2.643.7.1.1.1.2') { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 512 бит\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512';\n } else if (algorithmOid == '1.2.643.2.2.19') { // алгоритм ГОСТ Р 34.10-2001\n signMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411';\n digestMethod = 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411';\n }\n\n return { signMethod, digestMethod };\n }\n}\n","import { CryptoProAsyncService } from './cryptopro/crypto.pro.async.service';\nimport { Injectable } from '@angular/core';\nimport { CryptoBaseService } from './crypto.base.service';\nimport { CryptoProTsService } from './cryptopro/crypto.pro.ts.service';\n\nexport interface CryptoHandler {\n key: string;\n name: string;\n service: CryptoBaseService;\n sign: boolean;\n default: boolean;\n disabled?: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoService {\n\n handlers: Map<string, CryptoHandler> = new Map<string, CryptoHandler>();\n selectPromise: any = null;\n private _initialized = false;\n private _withLog = false;\n\n public async startUp(withLog? : boolean): Promise<void> {\n this._withLog = !!withLog;\n\n if (!this._initialized) {\n this.registerHandler({\n key: CryptoProAsyncService.key,\n name: 'КриптоПро',\n service: new CryptoProAsyncService(),\n sign: true,\n default: true\n });\n this.registerHandler({\n key: CryptoProTsService.key,\n name: 'КриптоПро',\n service: new CryptoProTsService(),\n sign: true,\n default: false\n });\n await this.init();\n this._initialized = true;\n }\n this.log('Handlers init completed');\n return Promise.resolve();\n }\n\n public registerHandler(options: CryptoHandler) {\n this.log('Register handler', options);\n\n options.disabled = false;\n this.handlers.set(options.key, options);\n };\n\n public disableHandler(key: string): void {\n const handler = this.handlers.get(key);\n if (handler) {\n handler.disabled = true;\n }\n };\n\n public getHandler(key: string): Promise<CryptoHandler> {\n const handler = this.getActiveHandlers()\n .find(x => x.key == key);\n\n if (handler) {\n return Promise.resolve(handler);\n }\n return Promise.reject(`Not found ${key} handler`);\n };\n\n public getDefaultHandler() : Promise<CryptoHandler> {\n const handler = this.getActiveHandlers()\n .find(x => x.default);\n\n if (handler) {\n return Promise.resolve(handler);\n }\n return Promise.reject(`Not found default handler`);\n };\n\n public getService<T extends CryptoBaseService>(key: string): Promise<T> {\n const handler = this.handlers.get(key);\n if (handler) {\n return Promise.resolve(handler.service as T);\n }\n return Promise.reject(`Not found ${key}`);\n };\n\n public getActiveHandlers(): Array<CryptoHandler> {\n const active = new Array<CryptoHandler>();\n this.handlers.forEach(s => {\n if (!s.disabled) {\n active.push(s);\n }\n });\n return active;\n };\n\n private log(...args: any[]) {\n if (this._withLog) {\n console.log(args);\n }\n };\n\n private async init(): Promise<any> {\n this.log('Initialize handlers');\n\n const promises: Array<Promise<any>> = [];\n this.handlers.forEach(handler => {\n handler.service.available = false;\n\n this.log('Initialize ' + handler.name);\n\n const promise = handler.service.init().then((result) => {\n result.available = true;\n this.log('Handler init success', result);\n }).catch(reason => {\n this.log('Handler init fail', reason);\n });\n\n promises.push(promise);\n });\n\n return await Promise.all(promises);\n };\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\nimport { SignValidateResponse } from '../models';\nimport { VerifyCertModel } from '../models/internal/verify.cert.model';\nimport { VerifyCertResponseModel } from '../models/internal/verify.cert.response.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoApiService extends EndpointBaseService {\n\n private urlCrypto = '/cryptopro/api/v1';\n private urlSigner = '/signer/api/v1';\n\n constructor(protected http: HttpClient, protected injector: Injector) {\n super(http, injector);\n }\n\n public verify(data: VerifyCertModel): Observable<VerifyCertResponseModel> {\n return this.http.post<VerifyCertResponseModel>(`${this.urlCrypto}/verify`, data);\n }\n\n public validate(data: string): Observable<SignValidateResponse> {\n return this.http.post<SignValidateResponse>(`${this.urlSigner}/jinn/validate`, {data});\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Base64 } from 'js-base64';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { SignedResultModel } from '../models';\nimport { strippingCharacters } from '../helpers/strippingCharacters';\nimport { Async } from 'cadesplugin-types';\n\ndeclare global {\n interface Window {\n cadesplugin: Async.IWebClassFactory;\n CRYPTO_SKIP_CHECK?: boolean;\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\n const withLog = options?.withLog;\n await this.cryptoService.startUp(withLog);\n\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\n const list = await service.getCertificates({\n certificateCheck: options?.certificateCheck\n });\n\n if (list.length === 0) {\n return Promise.reject('Отсутствует подходящий сертификат');\n }\n\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('Сертификат не выбран, отмена');\n }\n return Promise.reject();\n }\n\n let certificateFail = 0;\n if (window.CRYPTO_SKIP_CHECK !== true) {\n if (options?.certificateCheck?.fio &&\n modalResult.selected.fio.toLowerCase() !== options?.certificateCheck?.fio.toLowerCase()) {\n certificateFail = 1;\n }\n\n if (options?.certificateCheck?.fullName || options?.certificateCheck?.shortName) {\n let organization = modalResult.selected.organization;\n\n if (!organization) {\n organization = modalResult.selected.cn;\n }\n\n if (organization) {\n const orgIsValid = (options?.certificateCheck?.fullName &&\n strippingCharacters(organization) == strippingCharacters(options?.certificateCheck?.fullName))\n || (options?.certificateCheck?.shortName &&\n strippingCharacters(organization) == strippingCharacters(options?.certificateCheck?.shortName));\n if (!orgIsValid) {\n certificateFail = 2;\n }\n } else {\n certificateFail = 2;\n }\n }\n\n /** @deprecated */\n if (options?.checkFio &&\n modalResult.selected.fio.toLowerCase() !== options?.checkFio.toLowerCase()) {\n certificateFail = 1;\n }\n\n if (options?.checkOrganizationFullName || options?.checkOrganizationShortName) {\n let organization = modalResult.selected.organization;\n\n if (!organization) {\n organization = modalResult.selected.cn;\n }\n\n if (organization) {\n const orgIsValid = (options?.checkOrganizationFullName &&\n strippingCharacters(organization) == strippingCharacters(options?.checkOrganizationFullName))\n || (options?.checkOrganizationShortName &&\n strippingCharacters(organization) == strippingCharacters(options?.checkOrganizationShortName));\n if (!orgIsValid) {\n certificateFail = 2;\n }\n } else {\n certificateFail = 2;\n }\n }\n }\n\n if (certificateFail > 0) {\n return Promise.reject(\n certificateFail == 1 ?\n 'Данные лица, подписывающего заявку не совпадают с данными усиленной квалифицированной подписи.' :\n certificateFail === 3 ? 'Отсутствует активный КриптоПровайдер (не установлен либо недоступен плагин). ' +\n 'Чтобы подписать, установите плагин КриптоПро и проверьте наличие сертификата' :\n 'Данные организации не совпадают с данными усиленной квалифицированной подписи. ' +\n 'Убедитесь, что вы используете сертификат, выданные от организации.',\n );\n }\n\n if (withLog) {\n console.log('Подписываемые данные', data);\n }\n\n const signedData = await service.signBase64(modalResult.selected.certificate, data, true);\n\n if (withLog) {\n console.log('Подписанные данные', signedData);\n }\n\n if (!options?.skipServerCheck) {\n const verifyResult = await this.cryptoApiService.verify({\n data: data,\n signature: Base64.encode(signedData),\n detached: true\n }).toPromise();\n\n return {\n data,\n success: verifyResult.success,\n signed: signedData,\n certificate: modalResult.selected,\n };\n } else {\n return {\n data,\n success: true,\n signed: signedData,\n certificate: modalResult.selected,\n };\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoJinnProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\n const withLog = options?.withLog;\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProAsyncService>(CryptoProAsyncService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, { certificates: list }).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n if (withLog) {\n console.log('Signing data', data);\n }\n\n const signedData = await service.signXml(modalResult.selected.certificate, data);\n\n const verifyResult = await this.cryptoApiService.validate(signedData).toPromise();\n\n return {\n data: signedData,\n success: verifyResult.success,\n certificate: modalResult.selected,\n validateResult: verifyResult.validateResult\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ISignProvider, SignOptions } from './interfaces/isign.provider';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { CryptoService } from '../services/crypto.service';\nimport { CryptoApiService } from '../services/crypto.api.service';\nimport { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';\nimport { CryptoProTsService } from '../services/cryptopro/crypto.pro.ts.service';\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CryptoTsProvider implements ISignProvider {\n\n constructor(private simpleModalService: SimpleModalService,\n private cryptoService: CryptoService,\n private cryptoApiService: CryptoApiService) {\n }\n\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\n const withLog = options?.withLog;\n await this.cryptoService.startUp(withLog);\n const service = await this.cryptoService.getService<CryptoProTsService>(CryptoProTsService.key);\n const list = await service.getCertificates();\n const modalResult = await this.simpleModalService\n .addModal(CertificateSelectComponent, {certificates: list}).toPromise();\n\n if (!modalResult.selected) {\n if (withLog) {\n console.log('No certificate selected, rejecting');\n }\n return Promise.reject();\n }\n\n const signedData = await service.sign(modalResult.selected.certificate, data);\n\n if (!options?.skipServerCheck) {\n const validateResult = await this.cryptoApiService.validate(signedData).toPromise();\n\n return {\n data,\n signed: signedData,\n success: validateResult.success,\n validateResult: validateResult.validateResult,\n certificate: modalResult.selected,\n };\n } else {\n return {\n data,\n signed: signedData,\n success: true,\n validateResult: '',\n certificate: modalResult.selected,\n };\n }\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { ISignProvider, SignOptions } from \"./interfaces/isign.provider\";\nimport { SignedResultModel } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EmptyProvider implements ISignProvider {\n\n public async sign(data: string, options?: SignOptions): Promise<SignedResultModel> {\n return Promise.resolve({\n data: data,\n success: true\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CryptoProvider } from './crypto.provider';\nimport { CryptoJinnProvider } from './cryptojinn.provider';\nimport { EmptyProvider } from './empty.provider';\nimport { CryptoTsProvider } from './cryptots.provider';\nimport { SignProviderType } from '../models';\nimport { ISignProvider } from './interfaces/isign.provider';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SignProviderFactory {\n constructor(\n protected cryptoProvider: CryptoProvider,\n protected cryptoJinnProvider: CryptoJinnProvider,\n protected cryptoTsProvider: CryptoTsProvider,\n protected emptyProvider: EmptyProvider) {\n }\n\n create(providerType: SignProviderType): ISignProvider {\n switch (providerType) {\n case 'crypto':\n return this.cryptoProvider;\n case 'cryptojinn':\n return this.cryptoJinnProvider;\n case 'cryptots':\n return this.cryptoTsProvider;\n case 'empty':\n return this.emptyProvider;\n }\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { EndpointBaseService } from 'myrtex-mf-ui-composite';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DownloadService extends EndpointBaseService {\n\n private url = '/signer/api/v1/download';\n\n constructor(protected http: HttpClient, protected injector: Injector) {\n super(http, injector);\n }\n\n public xml(url: string): Observable<any> {\n return this.http.get(url,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'text/xml'),\n responseType: 'text'\n });\n }\n\n public pdf(url: string): Observable<any> {\n return this.http.get(url,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'application/pdf'),\n responseType: 'blob'\n });\n }\n\n /*public xml(url: string): Observable<any> {\n return this.http.get(`${this.url}/xml?url=${encodeURIComponent(url)}`,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'text/xml'),\n responseType: 'text'\n });\n }\n\n public pdf(url: string): Observable<any> {\n return this.http.get(`${this.url}/pdf?url=${encodeURIComponent(url)}`,\n {\n headers: new HttpHeaders()\n .set('Content-Type', 'application/pdf'),\n responseType: 'blob'\n });\n }*/\n}\n","import { Component } from '@angular/core';\nimport { AlertService, DialogColor, DialogType, Utilities } from 'myrtex-mf-ui-composite';\nimport { SimpleModalComponent } from 'ngx-simple-modal';\nimport { Base64 } from 'js-base64';\nimport { SignProviderType, SignType } from '../../models';\nimport { SignedResultModel } from '../../models/signed-result.model';\nimport { CertificateCheck, SignRequestModel } from '../../models/sign-request.model';\nimport { DownloadService } from '../../services/download.service';\nimport { SignProviderFactory } from '../../providers/signprovider.factory';\nimport { OnInit } from '@angular/core/core';\nimport { SignerTypeEnum } from '../../enums/signer-type.enum';\n\nexport interface SignedResponseModel {\n result: boolean;\n model?: SignedResultModel;\n}\n\n@Component({\n selector: 'lib-sign-modal',\n templateUrl: './sign-modal.component.html',\n styleUrls: ['./sign-modal.component.css']\n})\nexport class SignModalComponent\n extends SimpleModalComponent<SignRequestModel, SignedResponseModel> implements OnInit, SignRequestModel {\n\n public title = '';\n public okLabel = '';\n public cancelLabel = '';\n\n public xmlUrl?: string;\n public pdfUrl?: string;\n\n public additionalPdfUrl?: string;\n public additionalPdfUrlTitle?: string;\n\n public provider: SignProviderType = 'empty';\n public signType: SignType = 'xml';\n\n public xmlToSign = '';\n public pdfToSign = '';\n public withLog?: boolean;\n public skipServerCheck?: boolean;\n\n public signerType?: SignerTypeEnum;\n public certificateCheck?: CertificateCheck;\n\n /** @deprecated */\n public checkFio?: string;\n /** @deprecated */\n public checkOgrn?: string;\n /** @deprecated */\n public checkOrganizationFullName?: string;\n /** @deprecated */\n public checkOrganizationShortName?: string;\n /** @deprecated */\n public checkInn?: string;\n\n downloadingPdf = false;\n\n constructor(private signProviderFactory: SignProviderFactory,\n private downloadService: DownloadService,\n private alertService: AlertService) {\n super();\n this.result = { result: false };\n }\n\n get disabled() {\n // todo как можно дизеблить кнопу\n return false;\n }\n\n get pdfViewUrl(): string {\n return this.pdfUrl ?\n `/signer/pdfjs/web/viewer.html?file=${encodeURIComponent(this.pdfUrl)}` : '';\n }\n\n ngOnInit(): void {\n this.downloadXml();\n this.downloadPdf();\n }\n\n public ok() {\n\n if (!this.signType) {\n this.signType = 'xml';\n }\n\n let signData = this.xmlToSign;\n\n switch (this.signType) {\n case 'xml':\n signData = Base64.encode(this.xmlToSign);\n break;\n case 'pdf':\n signData = this.pdfToSign;\n break;\n case 'xmlts':\n signData = this.xmlToSign;\n break;\n }\n\n this.signProviderFactory.create(this.provider)\n .sign(signData, {\n skipServerCheck: this.skipServerCheck,\n withLog: this.withLog,\n\n certificateCheck: this.certificateCheck,\n\n checkFio: this.checkFio,\n checkOgrn: this.checkOgrn,\n checkOrganizationFullName: this.checkOrganizationFullName,\n checkOrganizationShortName: this.checkOrganizationShortName,\n checkInn: this.checkInn\n })\n .then((ok: SignedResultModel) => {\n this.processResult(ok);\n }).catch((error: any) => {\n this.processError(error);\n });\n }\n\n public cancel() {\n this.close();\n }\n\n private processResult(signResult: SignedResultModel): void {\n if (signResult.success) {\n this.result = { model: signResult, result: true };\n this.close();\n } else {\n this.alertService.showDialog({\n title: 'Ошибка проверки подписи',\n message: 'Подпись не валидна',\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n }\n });\n }\n }\n\n private processError(error: any): void {\n if (this.withLog) {\n console.error(error);\n }\n\n if (error) {\n this.alertService.showDialog({\n title: 'Ошибка проверки подписи',\n message: typeof (error) == 'string' ? error : JSON.stringify(error),\n color: DialogColor.red,\n type: DialogType.alert,\n okCallback: (ok) => {\n //\n }\n });\n }\n }\n\n private downloadXml(): void {\n if (!this.xmlUrl) {\n return;\n }\n\n if (this.withLog) {\n console.log('Downloading xml');\n }\n\n this.downloadService.xml(this.xmlUrl).subscribe(result => {\n if (this.withLog) {\n console.log('xmlToSign = ', result);\n }\n this.xmlToSign = result;\n });\n }\n\n private downloadPdf(): void {\n if (!this.pdfUrl) {\n return;\n }\n\n if (this.withLog) {\n console.log('Downloading pdf');\n }\n\n this.downloadingPdf = true;\n this.downloadService.pdf(this.pdfUrl)\n .subscribe(result => {\n this.downloadingPdf = false;\n // todo подумать, как правильно читать файл\n // const blob = new Blob([result], {type: 'application/pdf'});\n const reader = new FileReader();\n reader.readAsDataURL(result);\n reader.onloadend = () => {\n let base64data = reader.result as string;\n base64data = base64data.replace('data:application/pdf;base64,', '');\n\n if (this.withLog) {\n console.log('pdfToSign = ', base64data);\n }\n this.pdfToSign = base64data;\n }\n }, () => {\n this.downloadingPdf = false;\n });\n }\n}\n","<div class=\"modal-content accent-head xl\">\n <div class=\"modal-header\">\n <div class=\"modal-title uppercase\">\n <h4 class=\"ng-binding\">{{title || 'Направление документа на подписание'}}</h4>\n </div>\n <span class=\"close close-click\" (click)=\"close()\">\n <svg width=\"14\" height=\"14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M13 1L1 13M1 1l12 12\" stroke=\"#3A3A3A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n </div>\n\n <div class=\"modal-body text-center\">\n <div class=\"widget\">\n <my-tabs>\n <app-tab tabTitle=\"Визуализация документа\" *ngIf=\"pdfUrl\">\n <pre *ngIf=\"downloadingPdf\">\n Подождите, идет формирование документа\n </pre>\n <iframe *ngIf=\"!downloadingPdf\" [src]=\"pdfViewUrl | safeurl\"\n title=\"webviewer\" frameborder=\"0\" width=\"100%\" height=\"800\"></iframe>\n </app-tab>\n <app-tab tabTitle=\"Подписываемые данные\" *ngIf=\"xmlUrl\">\n <pre [innerText]=\"xmlToSign\"></pre>\n </app-tab>\n </my-tabs>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <div *ngIf=\"pdfUrl || xmlUrl || additionalPdfUrl\"\n class=\"modal-footer-item\">\n <a *ngIf=\"pdfUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"pdfUrl\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M18 21.25H6C5.30964 21.25 4.75 20.6904 4.75 20V4C4.75 3.30964 5.30964 2.75 6 2.75H13.1893L19.25 8.81066V20C19.25 20.6904 18.6904 21.25 18 21.25Z\"\n stroke=\"#282828\" stroke-width=\"1.5\"/>\n </svg>\n <span>Скачать документ</span>\n </a>\n <a *ngIf=\"xmlUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"xmlUrl\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 16L2 12L6 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M18 16L22 12L18 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"/>\n <path d=\"M7.56689 19.1782L15.5669 5.32182\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\"/>\n </svg>\n <span>Скачать XML-данные</span>\n </a>\n <a *ngIf=\"additionalPdfUrl\"\n class=\"modal-footer-item__link\"\n target=\"_blank\"\n [href]=\"additionalPdfUrl\">\n <svg width=\"24\" height=\"20\" viewBox=\"0 0 24 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\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\"/>\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\"/>\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\"/>\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\"/>\n </svg>\n <span>{{additionalPdfUrlTitle}}</span>\n </a>\n </div>\n <div class=\"modal-footer-item\">\n <button\n class=\"mrx-btn mrx-btn-secondary mrx-btn-md wpx-120 mr-3\"\n (click)=\"cancel()\"\n >\n <div class=\"mrx-btn-label\">{{cancelLabel || 'Отменить'}}</div>\n </button>\n <button\n class=\"mrx-btn mrx-btn-primary mrx-btn-md\"\n [disabled]=\"disabled\"\n (click)=\"ok()\"\n >\n <div class=\"mrx-btn-label\">{{okLabel || 'Подписать'}}</div>\n </button>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { SimpleModalService } from 'ngx-simple-modal';\nimport { SignedResultModel, SignRequestModel } from '../models';\nimport { SignModalComponent } from '../components/sign-modal/sign-modal.component';\nimport { TmpTokenService, Utilities } from 'myrtex-mf-ui-composite';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SignService {\n\n constructor(private simpleModalService: SimpleModalService, private tmpTokenService: TmpTokenService) {\n }\n\n public sign(request: SignRequestModel,\n ok: (result?: SignedResultModel) => void,\n cancel?: () => void): void {\n\n const baseUrl = Utilities.commonPart(request.xmlUrl, request.pdfUrl);\n\n this.tmpTokenService.generate(baseUrl).subscribe(token => {\n\n const ph = `${window.location.protocol}//${window.location.host}`;\n if (request.xmlUrl) {\n request.xmlUrl = ph + Utilities.updateQueryStringParameter(request.xmlUrl, 'authToken', token);\n }\n\n if (request.pdfUrl) {\n request.pdfUrl = ph + Utilities.updateQueryStringParameter(request.pdfUrl, 'authToken', token);\n }\n\n this.simpleModalService.addModal(SignModalComponent, request, { wrapperClass: 'in xl' })\n .subscribe(result => {\n if (result && result.result) {\n ok(result.model);\n } else {\n if (cancel) {\n cancel();\n }\n }\n });\n\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SignModalComponent } from './components/sign-modal/sign-modal.component';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MyrtexMfUiCompositeModule } from 'myrtex-mf-ui-composite';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { SignService } from './services/public.sign.service';\nimport { DownloadService } from './services/download.service';\nimport { CertificateSelectComponent } from './components/certificate-select/certificate-select.component';\nimport { CryptoApiService } from './services/crypto.api.service';\nimport { SignProviderFactory } from './providers/signprovider.factory';\nimport { CryptoProvider } from './providers/crypto.provider';\nimport { CryptoJinnProvider } from './providers/cryptojinn.provider';\nimport { CryptoTsProvider } from './providers/cryptots.provider';\nimport { EmptyProvider } from './providers/empty.provider';\n\n@NgModule({\n declarations: [\n SignModalComponent,\n CertificateSelectComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n NgSelectModule,\n MyrtexMfUiCompositeModule\n ],\n exports: [\n SignModalComponent\n ],\n providers: [\n SignProviderFactory,\n CryptoProvider,\n CryptoJinnProvider,\n CryptoTsProvider,\n EmptyProvider,\n\n CryptoApiService,\n SignService,\n DownloadService\n ]\n})\nexport class MyrtexSignerModule { }\n","/*\n * Public API Surface of myrtex-mf-signer\n */\n// enums\nexport * from './lib/enums/index';\n\n// models\nexport * from './lib/models/index';\n\n// components\nexport * from './lib/components/sign-modal/sign-modal.component';\n\n// modules\nexport * from './lib/myrtex-signer.module';\n\n// services\nexport * from './lib/services/public.sign.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CertificateAdjuster","i1","i2.CryptoService","i3.CryptoApiService","i1.CryptoProvider","i2.CryptoJinnProvider","i3.CryptoTsProvider","i4.EmptyProvider","i1.SignProviderFactory","i2.DownloadService","i4","i2"],"mappings":"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"}
|
|
@@ -3,7 +3,14 @@ import { ISignProvider, SignOptions } from './interfaces/isign.provider';
|
|
|
3
3
|
import { CryptoService } from '../services/crypto.service';
|
|
4
4
|
import { CryptoApiService } from '../services/crypto.api.service';
|
|
5
5
|
import { SignedResultModel } from '../models';
|
|
6
|
+
import { Async } from 'cadesplugin-types';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
8
|
+
declare global {
|
|
9
|
+
interface Window {
|
|
10
|
+
cadesplugin: Async.IWebClassFactory;
|
|
11
|
+
CRYPTO_SKIP_CHECK?: boolean;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
7
14
|
export declare class CryptoProvider implements ISignProvider {
|
|
8
15
|
private simpleModalService;
|
|
9
16
|
private cryptoService;
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
+
import { Async } from 'cadesplugin-types';
|
|
1
2
|
import { CryptoProBaseService } from './crypto.pro.base.service';
|
|
3
|
+
declare global {
|
|
4
|
+
interface Window {
|
|
5
|
+
cadesplugin: Async.IWebClassFactory;
|
|
6
|
+
CRYPTO_SKIP_CHECK?: boolean;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
2
9
|
export declare class CryptoProTsService extends CryptoProBaseService {
|
|
3
10
|
static readonly key = "cryptoprots";
|
|
4
11
|
constructor();
|