eimzo-sign-core 0.1.2 → 0.1.4

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/README.md CHANGED
@@ -82,7 +82,25 @@ try {
82
82
  | `EimzoClient.idCardCert()` | ID-karta uchun "sertifikat" obyekti |
83
83
 
84
84
  Yordamchilar: `sortCerts` (amaldagilar tepada), `certIsUsable`, `certIsExpired`,
85
- `certExpiresSoon`, `dedupeCerts`.
85
+ `certIsNotYetValid`, `certExpiresSoon`, `dedupeCerts`, `certOrg` (tashkilot nomi;
86
+ `"НЕ УКАЗАНО"` kabi E-IMZO placeholderlari bo'sh string), `certIsIndividual`.
87
+
88
+ ### `Cert` maydonlari
89
+
90
+ ```ts
91
+ interface Cert {
92
+ serialNumber: string
93
+ CN: string // egasi (F.I.Sh yoki rahbar)
94
+ TIN: string // STIR (INN)
95
+ PINFL: string // JSHSHIR — jismoniy shaxs id (bo'lmasligi mumkin)
96
+ UID: string
97
+ O: string // tashkilot; jismoniy shaxsda bo'sh yoki "НЕ УКАЗАНО"
98
+ T: string
99
+ validFrom: Date
100
+ validTo: Date
101
+ type: 'pfx' | 'ftjc' | 'idcard'
102
+ }
103
+ ```
86
104
 
87
105
  ### `signBatch` natijasi
88
106
 
package/dist/index.cjs CHANGED
@@ -1060,6 +1060,7 @@ var EimzoClient = class {
1060
1060
  CN: "ID card",
1061
1061
  TIN: "",
1062
1062
  UID: "",
1063
+ PINFL: "",
1063
1064
  O: "",
1064
1065
  T: "",
1065
1066
  validFrom: /* @__PURE__ */ new Date(0),
@@ -1264,6 +1265,7 @@ function normalizeCert(raw) {
1264
1265
  CN: str(raw.CN),
1265
1266
  TIN: str(raw.TIN),
1266
1267
  UID: str(raw.UID),
1268
+ PINFL: str(raw.PINFL),
1267
1269
  O: str(raw.O),
1268
1270
  T: str(raw.T),
1269
1271
  validFrom: toDate(raw.validFrom),
@@ -1297,6 +1299,22 @@ function assertUniqueIds(docs) {
1297
1299
  function certIsExpired(cert, at = /* @__PURE__ */ new Date()) {
1298
1300
  return cert.validTo.getTime() < at.getTime();
1299
1301
  }
1302
+ var ORG_PLACEHOLDERS = /* @__PURE__ */ new Set([
1303
+ "\u041D\u0415 \u0423\u041A\u0410\u0417\u0410\u041D\u041E",
1304
+ "\u041D\u0415 \u0423\u041A\u0410\u0417\u0410\u041D\u0410",
1305
+ "NE UKAZANO",
1306
+ "KO'RSATILMAGAN",
1307
+ "\u041A\u040E\u0420\u0421\u0410\u0422\u0418\u041B\u041C\u0410\u0413\u0410\u041D",
1308
+ "-",
1309
+ ""
1310
+ ]);
1311
+ function certOrg(cert) {
1312
+ const o = (cert.O ?? "").trim();
1313
+ return ORG_PLACEHOLDERS.has(o.toUpperCase()) ? "" : o;
1314
+ }
1315
+ function certIsIndividual(cert) {
1316
+ return certOrg(cert) === "";
1317
+ }
1300
1318
  function certIsNotYetValid(cert, at = /* @__PURE__ */ new Date()) {
1301
1319
  return cert.validFrom.getTime() > at.getTime();
1302
1320
  }
@@ -1331,8 +1349,10 @@ exports.EimzoClient = EimzoClient;
1331
1349
  exports.EimzoError = EimzoError;
1332
1350
  exports.certExpiresSoon = certExpiresSoon;
1333
1351
  exports.certIsExpired = certIsExpired;
1352
+ exports.certIsIndividual = certIsIndividual;
1334
1353
  exports.certIsNotYetValid = certIsNotYetValid;
1335
1354
  exports.certIsUsable = certIsUsable;
1355
+ exports.certOrg = certOrg;
1336
1356
  exports.dedupeCerts = dedupeCerts;
1337
1357
  exports.sortCerts = sortCerts;
1338
1358
  exports.toEimzoError = toEimzoError;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/util.ts","../src/vendor/e-imzo.js","../src/vendor/e-imzo-client.js","../src/vendor/index.ts","../src/client.ts","../src/cert-utils.ts"],"names":["Base64","getSubst","i","m","event","data"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * E-IMZO xatolarining barqaror kontrakti.\n *\n * Chaqiruvchi kod HAR DOIM `error.code` bo'yicha shox tanlaydi — xabar matnini\n * hech qachon parslamaydi (matn i18n bilan o'zgaradi).\n */\nexport type EimzoErrorCode =\n /** E-IMZO dasturi ishga tushmagan yoki javob bermayapti. */\n | 'E_NOT_INSTALLED'\n /** E-IMZO versiyasi talab qilinganidan past. */\n | 'E_VERSION_LOW'\n /** Domen uchun API kaliti rad etildi (noto'g'ri kalit yoki domen). */\n | 'E_API_KEY_REJECTED'\n /** Foydalanuvchida sertifikat/kalit topilmadi yoki ro'yxatni o'qib bo'lmadi. */\n | 'E_NO_CERTS'\n /** Kalit yuklanmadi — ko'pincha foydalanuvchi parol oynasini yopgan. */\n | 'E_KEY_LOAD_CANCELLED'\n /** Imzolangan sertifikatning seriya raqami tanlangandan farq qiladi. XAVFSIZLIK. */\n | 'E_SERIAL_MISMATCH'\n /** `create_pkcs7` muvaffaqiyatsiz tugadi. */\n | 'E_SIGN_FAILED'\n /** E-IMZO belgilangan vaqt ichida javob bermadi. */\n | 'E_TIMEOUT'\n /** Foydalanuvchi yoki idle-taymer amalni bekor qildi. */\n | 'E_CANCELLED'\n /** Lokal soket / transport xatosi. */\n | 'E_TRANSPORT'\n /** Kutubxona noto'g'ri sozlangan (masalan, apiKeys berilmagan). */\n | 'E_MISCONFIGURED'\n\nexport interface EimzoErrorOptions {\n cause?: unknown\n}\n\nexport class EimzoError extends Error {\n readonly code: EimzoErrorCode\n /** Asl sabab (vendor xatosi, CAPIWS javobi va h.k.). ES2022 `Error.cause` bilan bir xil nom. */\n readonly cause?: unknown\n\n constructor(code: EimzoErrorCode, message: string, options?: EimzoErrorOptions) {\n super(message)\n this.name = 'EimzoError'\n this.code = code\n this.cause = options?.cause\n // TS -> eski target'da instanceof ishlashi uchun\n Object.setPrototypeOf(this, EimzoError.prototype)\n }\n\n /** `EimzoError.is(e)` yoki `EimzoError.is(e, 'E_TIMEOUT')`. */\n static is(error: unknown, code?: EimzoErrorCode): error is EimzoError {\n return (\n error instanceof EimzoError && (code === undefined || error.code === code)\n )\n }\n\n /** Bekor qilingan (foydalanuvchi voz kechgan) — odatda jimgina o'tiladi. */\n static isCancelled(error: unknown): boolean {\n return (\n EimzoError.is(error, 'E_CANCELLED') ||\n EimzoError.is(error, 'E_KEY_LOAD_CANCELLED')\n )\n }\n}\n\n/** Noma'lum qiymatni EimzoError'ga keltiradi (allaqachon EimzoError bo'lsa — o'zini qaytaradi). */\nexport function toEimzoError(\n error: unknown,\n fallbackCode: EimzoErrorCode,\n fallbackMessage: string,\n): EimzoError {\n if (EimzoError.is(error)) return error\n return new EimzoError(fallbackCode, fallbackMessage, { cause: error })\n}\n","import { EimzoError } from './errors'\n\nexport function nowIso(): string {\n return new Date().toISOString()\n}\n\n/** Seriya raqamlarini solishtirish uchun normallashtirish (registr + bo'shliqlar). */\nexport function normalizeSerial(value: unknown): string {\n return String(value ?? '')\n .toUpperCase()\n .replace(/\\s+/g, '')\n}\n\nexport function throwIfAborted(signal?: AbortSignal): void {\n if (signal?.aborted) {\n throw new EimzoError('E_CANCELLED', 'Amal bekor qilindi')\n }\n}\n\n/**\n * Callback uslubidagi vendor chaqiruvini timeout bilan Promise'ga o'raydi.\n * `settle` bir martagina ishlaydi (double-resolve himoyasi).\n */\nexport function withTimeout<T>(\n timeoutMs: number,\n timeoutError: () => EimzoError,\n executor: (\n resolve: (value: T) => void,\n reject: (error: unknown) => void,\n ) => void,\n signal?: AbortSignal,\n): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n let settled = false\n\n const cleanup = (): void => {\n clearTimeout(timer)\n signal?.removeEventListener('abort', onAbort)\n }\n const settleResolve = (value: T): void => {\n if (settled) return\n settled = true\n cleanup()\n resolve(value)\n }\n const settleReject = (error: unknown): void => {\n if (settled) return\n settled = true\n cleanup()\n reject(error)\n }\n\n const onAbort = (): void =>\n settleReject(new EimzoError('E_CANCELLED', 'Amal bekor qilindi'))\n const timer = setTimeout(() => settleReject(timeoutError()), timeoutMs)\n\n if (signal?.aborted) {\n settleReject(new EimzoError('E_CANCELLED', 'Amal bekor qilindi'))\n return\n }\n signal?.addEventListener('abort', onAbort)\n\n try {\n executor(settleResolve, settleReject)\n } catch (error) {\n settleReject(error)\n }\n })\n}\n","/* eslint-disable */\n(function (global) {\n 'use strict';\n // existing version for noConflict()\n var _Base64 = global.Base64;\n var version = \"2.1.4\";\n // if node.js, we use Buffer\n var buffer;\n if (typeof module !== 'undefined' && module.exports) {\n buffer = require('buffer').Buffer;\n }\n // constants\n var b64chars\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n var b64tab = function (bin) {\n var t = {};\n for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i;\n return t;\n }(b64chars);\n var fromCharCode = String.fromCharCode;\n // encoder stuff\n var cb_utob = function (c) {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (fromCharCode(0xc0 | (cc >>> 6))\n + fromCharCode(0x80 | (cc & 0x3f)))\n : (fromCharCode(0xe0 | ((cc >>> 12) & 0x0f))\n + fromCharCode(0x80 | ((cc >>> 6) & 0x3f))\n + fromCharCode(0x80 | (cc & 0x3f)));\n } else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (fromCharCode(0xf0 | ((cc >>> 18) & 0x07))\n + fromCharCode(0x80 | ((cc >>> 12) & 0x3f))\n + fromCharCode(0x80 | ((cc >>> 6) & 0x3f))\n + fromCharCode(0x80 | (cc & 0x3f)));\n }\n };\n var re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n var utob = function (u) {\n return u.replace(re_utob, cb_utob);\n };\n var cb_encode = function (ccc) {\n var padlen = [0, 2, 1][ccc.length % 3],\n ord = ccc.charCodeAt(0) << 16\n | ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8)\n | ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)),\n chars = [\n b64chars.charAt(ord >>> 18),\n b64chars.charAt((ord >>> 12) & 63),\n padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),\n padlen >= 1 ? '=' : b64chars.charAt(ord & 63)\n ];\n return chars.join('');\n };\n var btoa = global.btoa ? function (b) {\n return global.btoa(b);\n } : function (b) {\n return b.replace(/[\\s\\S]{1,3}/g, cb_encode);\n };\n var _encode = buffer\n ? function (u) {\n return (new buffer(u)).toString('base64')\n }\n : function (u) {\n return btoa(utob(u))\n }\n ;\n var encode = function (u, urisafe) {\n return !urisafe\n ? _encode(u)\n : _encode(u).replace(/[+\\/]/g, function (m0) {\n return m0 == '+' ? '-' : '_';\n }).replace(/=/g, '');\n };\n var encodeURI = function (u) {\n return encode(u, true)\n };\n // decoder stuff\n var re_btou = new RegExp([\n '[\\xC0-\\xDF][\\x80-\\xBF]',\n '[\\xE0-\\xEF][\\x80-\\xBF]{2}',\n '[\\xF0-\\xF7][\\x80-\\xBF]{3}'\n ].join('|'), 'g');\n var cb_btou = function (cccc) {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)),\n offset = cp - 0x10000;\n return (fromCharCode((offset >>> 10) + 0xD800)\n + fromCharCode((offset & 0x3FF) + 0xDC00));\n case 3:\n return fromCharCode(\n ((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2))\n );\n default:\n return fromCharCode(\n ((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1))\n );\n }\n };\n var btou = function (b) {\n return b.replace(re_btou, cb_btou);\n };\n var cb_decode = function (cccc) {\n var len = cccc.length,\n padlen = len % 4,\n n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0)\n | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0)\n | (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0)\n | (len > 3 ? b64tab[cccc.charAt(3)] : 0),\n chars = [\n fromCharCode(n >>> 16),\n fromCharCode((n >>> 8) & 0xff),\n fromCharCode(n & 0xff)\n ];\n chars.length -= [0, 0, 2, 1][padlen];\n return chars.join('');\n };\n var atob = global.atob ? function (a) {\n return global.atob(a);\n } : function (a) {\n return a.replace(/[\\s\\S]{1,4}/g, cb_decode);\n };\n var _decode = buffer\n ? function (a) {\n return (new buffer(a, 'base64')).toString()\n }\n : function (a) {\n return btou(atob(a))\n };\n var decode = function (a) {\n return _decode(\n a.replace(/[-_]/g, function (m0) {\n return m0 == '-' ? '+' : '/'\n })\n .replace(/[^A-Za-z0-9\\+\\/]/g, '')\n );\n };\n var noConflict = function () {\n var Base64 = global.Base64;\n global.Base64 = _Base64;\n return Base64;\n };\n // export Base64\n global.Base64 = {\n VERSION: version,\n atob: atob,\n btoa: btoa,\n fromBase64: decode,\n toBase64: encode,\n utob: utob,\n encode: encode,\n encodeURI: encodeURI,\n btou: btou,\n decode: decode,\n noConflict: noConflict\n };\n // if ES5 is available, make Base64.extendString() available\n if (typeof Object.defineProperty === 'function') {\n var noEnum = function (v) {\n return {value: v, enumerable: false, writable: true, configurable: true};\n };\n global.Base64.extendString = function () {\n Object.defineProperty(\n String.prototype, 'fromBase64', noEnum(function () {\n return decode(this)\n }));\n Object.defineProperty(\n String.prototype, 'toBase64', noEnum(function (urisafe) {\n return encode(this, urisafe)\n }));\n Object.defineProperty(\n String.prototype, 'toBase64URI', noEnum(function () {\n return encode(this, true)\n }));\n };\n }\n // that's it!\n\n 'use strict'\n // existing version for noConflict()\n var _Base64 = global.Base64\n var version = '2.1.4'\n // if node.js, we use Buffer\n var buffer\n if (typeof module !== 'undefined' && module.exports) {\n buffer = require('buffer').Buffer\n }\n // constants\n var b64chars\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n var b64tab = function (bin) {\n var t = {}\n for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i\n return t\n }(b64chars)\n var fromCharCode = String.fromCharCode\n // encoder stuff\n var cb_utob = function (c) {\n if (c.length < 2) {\n let cc = c.charCodeAt(0)\n return cc < 0x80 ? c\n : cc < 0x800 ? (fromCharCode(0xc0 | (cc >>> 6))\n + fromCharCode(0x80 | (cc & 0x3f)))\n : (fromCharCode(0xe0 | ((cc >>> 12) & 0x0f))\n + fromCharCode(0x80 | ((cc >>> 6) & 0x3f))\n + fromCharCode(0x80 | (cc & 0x3f)))\n } else {\n let cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00)\n return (fromCharCode(0xf0 | ((cc >>> 18) & 0x07))\n + fromCharCode(0x80 | ((cc >>> 12) & 0x3f))\n + fromCharCode(0x80 | ((cc >>> 6) & 0x3f))\n + fromCharCode(0x80 | (cc & 0x3f)))\n }\n }\n var re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g\n var utob = function (u) {\n return u.replace(re_utob, cb_utob)\n }\n var cb_encode = function (ccc) {\n var padlen = [0, 2, 1][ccc.length % 3],\n ord = ccc.charCodeAt(0) << 16\n | ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8)\n | ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)),\n chars = [\n b64chars.charAt(ord >>> 18),\n b64chars.charAt((ord >>> 12) & 63),\n padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),\n padlen >= 1 ? '=' : b64chars.charAt(ord & 63)\n ]\n return chars.join('')\n }\n var btoa = global.btoa ? function (b) {\n return global.btoa(b)\n } : function (b) {\n return b.replace(/[\\s\\S]{1,3}/g, cb_encode)\n }\n var _encode = buffer\n ? function (u) {\n return (new buffer(u)).toString('base64')\n }\n : function (u) {\n return btoa(utob(u))\n }\n\n var encode = function (u, urisafe) {\n return !urisafe\n ? _encode(u)\n : _encode(u).replace(/[+\\/]/g, function (m0) {\n return m0 == '+' ? '-' : '_'\n }).replace(/=/g, '')\n }\n var encodeURI = function (u) {\n return encode(u, true)\n }\n // decoder stuff\n var re_btou = new RegExp([\n '[\\xC0-\\xDF][\\x80-\\xBF]',\n '[\\xE0-\\xEF][\\x80-\\xBF]{2}',\n '[\\xF0-\\xF7][\\x80-\\xBF]{3}'\n ].join('|'), 'g')\n var cb_btou = function (cccc) {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)),\n offset = cp - 0x10000\n return (fromCharCode((offset >>> 10) + 0xD800)\n + fromCharCode((offset & 0x3FF) + 0xDC00))\n case 3:\n return fromCharCode(\n ((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2))\n )\n default:\n return fromCharCode(\n ((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1))\n )\n }\n }\n var btou = function (b) {\n return b.replace(re_btou, cb_btou)\n }\n var cb_decode = function (cccc) {\n var len = cccc.length,\n padlen = len % 4,\n n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0)\n | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0)\n | (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0)\n | (len > 3 ? b64tab[cccc.charAt(3)] : 0),\n chars = [\n fromCharCode(n >>> 16),\n fromCharCode((n >>> 8) & 0xff),\n fromCharCode(n & 0xff)\n ]\n chars.length -= [0, 0, 2, 1][padlen]\n return chars.join('')\n }\n var atob = global.atob ? function (a) {\n return global.atob(a)\n } : function (a) {\n return a.replace(/[\\s\\S]{1,4}/g, cb_decode)\n }\n var _decode = buffer\n ? function (a) {\n return (new buffer(a, 'base64')).toString()\n }\n : function (a) {\n return btou(atob(a))\n }\n var decode = function (a) {\n return _decode(\n a.replace(/[-_]/g, function (m0) {\n return m0 == '-' ? '+' : '/'\n })\n .replace(/[^A-Za-z0-9\\+\\/]/g, '')\n )\n }\n var noConflict = function () {\n var Base64 = global.Base64\n global.Base64 = _Base64\n return Base64\n }\n // export Base64\n global.Base64 = {\n VERSION: version,\n atob: atob,\n btoa: btoa,\n fromBase64: decode,\n toBase64: encode,\n utob: utob,\n encode: encode,\n encodeURI: encodeURI,\n btou: btou,\n decode: decode,\n noConflict: noConflict\n }\n // if ES5 is available, make Base64.extendString() available\n if (typeof Object.defineProperty === 'function') {\n var noEnum = function (v) {\n return {value: v, enumerable: false, writable: true, configurable: true}\n }\n global.Base64.extendString = function () {\n Object.defineProperty(\n String.prototype, 'fromBase64', noEnum(function () {\n return decode(this)\n }))\n Object.defineProperty(\n String.prototype, 'toBase64', noEnum(function (urisafe) {\n return encode(this, urisafe)\n }))\n Object.defineProperty(\n String.prototype, 'toBase64URI', noEnum(function () {\n return encode(this, true)\n }))\n }\n }\n // that's it!\n\n if (typeof window !== 'undefined') window.Base64 = global.Base64;\n})(typeof globalThis !== 'undefined' ? globalThis : this);\n\nglobalThis.CAPIWS = (typeof EIMZOEXT !== 'undefined') ? EIMZOEXT : {\n URL: ((typeof window !== 'undefined' ? window.location.protocol : '').toLowerCase() === \"https:\" ? \"wss://127.0.0.1:64443\" : \"ws://127.0.0.1:64646\") + \"/service/cryptapi\",\n callFunction: function (funcDef, callback, error) {\n if (!window.WebSocket) {\n if (error)\n error();\n return;\n }\n var socket;\n try {\n socket = new WebSocket(this.URL);\n } catch (e) {\n error(e);\n }\n socket.onerror = function (e) {\n if (error)\n error(e);\n };\n socket.onmessage = function (event) {\n var data = JSON.parse(event.data);\n socket.close();\n callback(event, data);\n };\n socket.onopen = function () {\n socket.send(JSON.stringify(funcDef));\n };\n },\n version: function (callback, error) {\n if (!window.WebSocket) {\n if (error)\n error();\n return;\n }\n var socket;\n try {\n socket = new WebSocket(this.URL);\n } catch (e) {\n error(e);\n }\n socket.onerror = function (e) {\n if (error)\n error(e);\n };\n socket.onmessage = function (event) {\n var data = JSON.parse(event.data);\n socket.close();\n callback(event, data);\n };\n socket.onopen = function () {\n var o = {name: 'version'};\n socket.send(JSON.stringify(o));\n };\n },\n apidoc: function (callback, error) {\n if (!window.WebSocket) {\n if (error)\n error();\n return;\n }\n var socket;\n try {\n socket = new WebSocket(this.URL);\n } catch (e) {\n error(e);\n }\n socket.onerror = function (e) {\n if (error)\n error(e);\n };\n socket.onmessage = function (event) {\n var data = JSON.parse(event.data);\n socket.close();\n callback(event, data);\n };\n socket.onopen = function () {\n var o = {name: 'apidoc'};\n socket.send(JSON.stringify(o));\n };\n },\n apikey: function (domainAndKey, callback, error) {\n if (!window.WebSocket) {\n if (error)\n error();\n return;\n }\n var socket;\n try {\n socket = new WebSocket(this.URL);\n } catch (e) {\n error(e);\n }\n socket.onerror = function (e) {\n if (error)\n error(e);\n };\n socket.onmessage = function (event) {\n var data = JSON.parse(event.data);\n socket.close();\n callback(event, data);\n };\n socket.onopen = function () {\n var o = {name: 'apikey', arguments: domainAndKey};\n socket.send(JSON.stringify(o));\n };\n }\n};\n","/* eslint-disable */\nDate.prototype.yyyymmdd = function () {\n var yyyy = this.getFullYear().toString();\n var mm = (this.getMonth() + 1).toString(); // getMonth() is zero-based\n var dd = this.getDate().toString();\n return yyyy + (mm[1] ? mm : \"0\" + mm[0]) + (dd[1] ? dd : \"0\" + dd[0]); // padding\n};\nDate.prototype.ddmmyyyy = function () {\n var yyyy = this.getFullYear().toString();\n var mm = (this.getMonth() + 1).toString(); // getMonth() is zero-based\n var dd = this.getDate().toString();\n return (dd[1] ? dd : \"0\" + dd[0]) + \".\" + (mm[1] ? mm : \"0\" + mm[0]) + \".\" + yyyy; // padding\n};\nvar dates = {\n convert: function (d) {\n // Converts the date in d to a date-object. The input can be:\n // a date object: returned without modification\n // an array : Interpreted as [year,month,day]. NOTE: month is 0-11.\n // a number : Interpreted as number of milliseconds\n // since 1 Jan 1970 (a timestamp)\n // a string : Any format supported by the javascript engine, like\n // \"YYYY/MM/DD\", \"MM/DD/YYYY\", \"Jan 31 2009\" etc.\n // an object : Interpreted as an object with year, month and date\n // attributes. **NOTE** month is 0-11.\n return (\n d.constructor === Date ? d :\n d.constructor === Array ? new Date(d[0], d[1], d[2]) :\n d.constructor === Number ? new Date(d) :\n d.constructor === String ? new Date(d) :\n typeof d === \"object\" ? new Date(d.year, d.month, d.date) :\n NaN\n );\n },\n compare: function (a, b) {\n // Compare two dates (could be of any type supported by the convert\n // function above) and returns:\n // -1 : if a < b\n // 0 : if a = b\n // 1 : if a > b\n // NaN : if a or b is an illegal date\n // NOTE: The code inside isFinite does an assignment (=).\n return (\n isFinite(a = this.convert(a).valueOf()) &&\n isFinite(b = this.convert(b).valueOf()) ?\n (a > b) - (a < b) :\n NaN\n );\n },\n inRange: function (d, start, end) {\n // Checks if date in d is between dates in start and end.\n // Returns a boolean or NaN:\n // true : if d is between start and end (inclusive)\n // false : if d is before start or after end\n // NaN : if one or more of the dates is illegal.\n // NOTE: The code inside isFinite does an assignment (=).\n return (\n isFinite(d = this.convert(d).valueOf()) &&\n isFinite(start = this.convert(start).valueOf()) &&\n isFinite(end = this.convert(end).valueOf()) ?\n start <= d && d <= end :\n NaN\n );\n }\n};\nString.prototype.splitKeep = function (splitter, ahead) {\n var self = this;\n var result = [];\n if (splitter != '') {\n // Substitution of matched string\n function getSubst(value) {\n var substChar = value[0] == '0' ? '1' : '0';\n var subst = '';\n for (var i = 0; i < value.length; i++) {\n subst += substChar;\n }\n return subst;\n };\n var matches = [];\n // Getting mached value and its index\n var replaceName = splitter instanceof RegExp ? \"replace\" : \"replaceAll\";\n var r = self[replaceName](splitter, function (m, i, e) {\n matches.push({value: m, index: i});\n return getSubst(m);\n });\n // Finds split substrings\n var lastIndex = 0;\n for (var i = 0; i < matches.length; i++) {\n var m = matches[i];\n var nextIndex = ahead == true ? m.index : m.index + m.value.length;\n if (nextIndex != lastIndex) {\n var part = self.substring(lastIndex, nextIndex);\n result.push(part);\n lastIndex = nextIndex;\n }\n }\n ;\n if (lastIndex < self.length) {\n var part = self.substring(lastIndex, self.length);\n result.push(part);\n }\n ;\n } else {\n result.add(self);\n }\n ;\n return result;\n};\n\nexport const EIMZOClient = {\n NEW_API: false,\n NEW_API2: false,\n API_KEYS: [\n 'localhost', '96D0C1491615C82B9A54D9989779DF825B690748224C2B04F500F370D51827CE2644D8D4A82C18184D73AB8530BB8ED537269603F61DB0D03D2104ABF789970B',\n '127.0.0.1', 'A7BCFA5D490B351BE0754130DF03A068F855DB4333D43921125B9CF2670EF6A40370C646B90401955E1F7BC9CDBF59CE0B2C5467D820BE189C845D0B79CFC96F'\n ],\n checkVersion: function (success, fail) {\n CAPIWS.version(function (event, data) {\n if (data.success === true) {\n if (data.major && data.minor) {\n var installedVersion = parseInt(data.major) * 100 + parseInt(data.minor);\n EIMZOClient.NEW_API = installedVersion >= 336;\n EIMZOClient.NEW_API2 = installedVersion >= 412;\n success(data.major, data.minor);\n } else {\n fail(null, 'E-IMZO Version is undefined');\n }\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n },\n installApiKeys: function (success, fail) {\n CAPIWS.apikey(EIMZOClient.API_KEYS, function (event, data) {\n if (data.success) {\n success();\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n },\n listAllUserKeys: function (itemIdGen, itemUiGen, success, fail) {\n var items = [];\n var errors = [];\n if (!EIMZOClient.NEW_API) {\n fail(null, 'Please install new version of E-IMZO');\n } else {\n if (EIMZOClient.NEW_API2) {\n EIMZOClient._findPfxs2(itemIdGen, itemUiGen, items, errors, function (firstItmId2) {\n if (items.length === 0 && errors.length > 0) {\n fail(errors[0].e, errors[0].r);\n } else {\n var firstId = null;\n if (items.length === 1) {\n if (firstItmId2) {\n firstId = firstItmId2;\n }\n }\n success(items, firstId);\n }\n });\n } else {\n EIMZOClient._findPfxs2(itemIdGen, itemUiGen, items, errors, function (firstItmId2) {\n EIMZOClient._findTokens2(itemIdGen, itemUiGen, items, errors, function (firstItmId3) {\n if (items.length === 0 && errors.length > 0) {\n fail(errors[0].e, errors[0].r);\n } else {\n var firstId = null;\n if (items.length === 1) {\n if (firstItmId2) {\n firstId = firstItmId2;\n } else if (firstItmId3) {\n firstId = firstItmId3;\n }\n }\n success(items, firstId);\n }\n });\n });\n }\n }\n },\n idCardIsPLuggedIn: function (success, fail) {\n if (!EIMZOClient.NEW_API2) {\n success(false);\n } else {\n CAPIWS.callFunction({plugin: \"idcard\", name: \"list_readers\"}, function (event, data) {\n if (data.success) {\n success(data.readers.length > 0);\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n }\n },\n loadKey: function (itemObject, success, fail, verifyPassword) {\n if (itemObject) {\n var vo = itemObject;\n if (vo.type === \"pfx\") {\n CAPIWS.callFunction({\n plugin: \"pfx\",\n name: \"load_key\",\n arguments: [vo.disk, vo.path, vo.name, vo.alias]\n }, function (event, data) {\n if (data.success) {\n var id = data.keyId;\n if (verifyPassword) {\n CAPIWS.callFunction({\n name: \"verify_password\",\n plugin: \"pfx\",\n arguments: [id]\n }, function (event, data) {\n if (data.success) {\n success(id);\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n } else {\n success(id);\n }\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n } else if (vo.type === \"ftjc\") {\n CAPIWS.callFunction({\n plugin: \"ftjc\",\n name: \"load_key\",\n arguments: [vo.cardUID]\n }, function (event, data) {\n if (data.success) {\n var id = data.keyId;\n if (verifyPassword) {\n CAPIWS.callFunction({\n plugin: \"ftjc\",\n name: \"verify_pin\",\n arguments: [id, '1']\n }, function (event, data) {\n if (data.success) {\n success(id);\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n } else {\n success(id);\n }\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n }\n }\n },\n changeKeyPassword: function (itemObject, success, fail) {\n if (itemObject) {\n var vo = itemObject;\n if (vo.type === \"pfx\") {\n CAPIWS.callFunction({\n plugin: \"pfx\",\n name: \"load_key\",\n arguments: [vo.disk, vo.path, vo.name, vo.alias]\n }, function (event, data) {\n if (data.success) {\n var id = data.keyId;\n CAPIWS.callFunction({\n name: \"change_password\",\n plugin: \"pfx\",\n arguments: [id]\n }, function (event, data) {\n if (data.success) {\n success();\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n } else if (vo.type === \"ftjc\") {\n CAPIWS.callFunction({\n plugin: \"ftjc\",\n name: \"load_key\",\n arguments: [vo.cardUID]\n }, function (event, data) {\n if (data.success) {\n var id = data.keyId;\n CAPIWS.callFunction({\n name: \"change_pin\",\n plugin: \"ftjc\",\n arguments: [id, '1']\n }, function (event, data) {\n if (data.success) {\n success();\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n }\n }\n },\n createPkcs7: function (id, data, timestamper, success, fail, detached, isDataBase64Encoded, enableAttachTimestamp = true) {\n var data64;\n if (isDataBase64Encoded === true) {\n data64 = data\n } else {\n data64 = Base64.encode(data);\n }\n if (detached === true) {\n detached = 'yes';\n } else {\n detached = 'no';\n }\n CAPIWS.callFunction({\n plugin: \"pkcs7\",\n name: \"create_pkcs7\",\n arguments: [data64, id, detached]\n }, function (event, data) {\n if (data.success) {\n var pkcs7 = data.pkcs7_64;\n if (timestamper) {\n var sn = data.signer_serial_number;\n timestamper(data.signature_hex, function (tst) {\n if(enableAttachTimestamp) {\n CAPIWS.callFunction({\n plugin: \"pkcs7\",\n name: \"attach_timestamp_token_pkcs7\",\n arguments: [pkcs7, sn, tst]\n }, function (event, data) {\n if (data.success) {\n var pkcs7tst = data.pkcs7_64;\n success(pkcs7tst);\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n } else {\n success(tst);\n }\n }, fail, data.pkcs7_64);\n } else {\n success(pkcs7);\n }\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n },\n _getX500Val: function (s, f) {\n var res = s.splitKeep(/,[A-Z]+=/g, true);\n for (var i in res) {\n var n = res[i].search((i > 0 ? \",\" : \"\") + f + \"=\");\n if (n !== -1) {\n return res[i].slice(n + f.length + 1 + (i > 0 ? 1 : 0));\n }\n }\n return \"\";\n },\n _findPfxs2: function (itemIdGen, itemUiGen, items, errors, callback) {\n var itmkey0;\n CAPIWS.callFunction({plugin: \"pfx\", name: \"list_all_certificates\"}, function (event, data) {\n if (data.success) {\n for (var rec in data.certificates) {\n var el = data.certificates[rec];\n var x500name_ex = el.alias.toUpperCase();\n x500name_ex = x500name_ex.replace(\"1.2.860.3.16.1.1=\", \"INN=\");\n x500name_ex = x500name_ex.replace(\"1.2.860.3.16.1.2=\", \"PINFL=\");\n var vo = {\n disk: el.disk,\n path: el.path,\n name: el.name,\n alias: el.alias,\n serialNumber: EIMZOClient._getX500Val(x500name_ex, \"SERIALNUMBER\"),\n validFrom: new Date(EIMZOClient._getX500Val(x500name_ex, \"VALIDFROM\").replace(/\\./g, \"-\").replace(\" \", \"T\")),\n validTo: new Date(EIMZOClient._getX500Val(x500name_ex, \"VALIDTO\").replace(/\\./g, \"-\").replace(\" \", \"T\")),\n CN: EIMZOClient._getX500Val(x500name_ex, \"CN\"),\n TIN: (EIMZOClient._getX500Val(x500name_ex, \"INN\") ? EIMZOClient._getX500Val(x500name_ex, \"INN\") : EIMZOClient._getX500Val(x500name_ex, \"UID\")),\n UID: EIMZOClient._getX500Val(x500name_ex, \"UID\"),\n PINFL: EIMZOClient._getX500Val(x500name_ex, \"PINFL\"),\n O: EIMZOClient._getX500Val(x500name_ex, \"O\"),\n T: EIMZOClient._getX500Val(x500name_ex, \"T\"),\n type: 'pfx'\n };\n if (!vo.TIN && !vo.PINFL)\n continue;\n var itmkey = itemIdGen(vo, rec);\n if (!itmkey0) {\n itmkey0 = itmkey;\n }\n var itm = itemUiGen(itmkey, vo);\n items.push(itm);\n }\n } else {\n errors.push({r: data.reason});\n }\n callback(itmkey0);\n }, function (e) {\n errors.push({e: e});\n callback(itmkey0);\n });\n },\n _findTokens2: function (itemIdGen, itemUiGen, items, errors, callback) {\n var itmkey0;\n CAPIWS.callFunction({plugin: \"ftjc\", name: \"list_all_keys\", arguments: ['']}, function (event, data) {\n if (data.success) {\n for (var rec in data.tokens) {\n var el = data.tokens[rec];\n var x500name_ex = el.info.toUpperCase();\n x500name_ex = x500name_ex.replace(\"1.2.860.3.16.1.1=\", \"INN=\");\n x500name_ex = x500name_ex.replace(\"1.2.860.3.16.1.2=\", \"PINFL=\");\n var vo = {\n cardUID: el.cardUID,\n statusInfo: el.statusInfo,\n ownerName: el.ownerName,\n info: el.info,\n serialNumber: EIMZOClient._getX500Val(x500name_ex, \"SERIALNUMBER\"),\n validFrom: new Date(EIMZOClient._getX500Val(x500name_ex, \"VALIDFROM\")),\n validTo: new Date(EIMZOClient._getX500Val(x500name_ex, \"VALIDTO\")),\n CN: EIMZOClient._getX500Val(x500name_ex, \"CN\"),\n TIN: (EIMZOClient._getX500Val(x500name_ex, \"INN\") ? EIMZOClient._getX500Val(x500name_ex, \"INN\") : EIMZOClient._getX500Val(x500name_ex, \"UID\")),\n UID: EIMZOClient._getX500Val(x500name_ex, \"UID\"),\n PINFL: EIMZOClient._getX500Val(x500name_ex, \"PINFL\"),\n O: EIMZOClient._getX500Val(x500name_ex, \"O\"),\n T: EIMZOClient._getX500Val(x500name_ex, \"T\"),\n type: 'ftjc'\n };\n if (!vo.TIN && !vo.PINFL)\n continue;\n var itmkey = itemIdGen(vo, rec);\n if (!itmkey0) {\n itmkey0 = itmkey;\n }\n var itm = itemUiGen(itmkey, vo);\n items.push(itm);\n }\n } else {\n errors.push({r: data.reason});\n }\n callback(itmkey0);\n }, function (e) {\n errors.push({e: e});\n callback(itmkey0);\n });\n }\n};\n\n","/**\n * Vendored E-IMZO SDK'ni yuklaydi va tiplangan yuzasini beradi.\n *\n * `./e-imzo.js` — side-effect: `window.CAPIWS` va `window.Base64` ni o'rnatadi.\n * `./e-imzo-client.js` — ESM eksport `EIMZOClient`.\n */\nimport './e-imzo.js'\nimport { EIMZOClient } from './e-imzo-client.js'\n\nimport { EimzoError } from '../errors'\nimport type { RawCapiws, RawEimzoClient } from '../raw-types'\n\nexport const rawClient: RawEimzoClient = EIMZOClient\n\ninterface Base64Global {\n encode(input: string): string\n decode(input: string): string\n}\n\nfunction pickGlobal<T>(name: 'CAPIWS' | 'Base64'): T | undefined {\n const g = globalThis as Record<string, unknown>\n if (g[name] != null) return g[name] as T\n const w = g['window'] as Record<string, unknown> | undefined\n return w?.[name] as T | undefined\n}\n\n/** `window.CAPIWS` — E-IMZO lokal soket ko'prigi. Topilmasa E_NOT_INSTALLED. */\nexport function getCapiws(): RawCapiws {\n const capiws = pickGlobal<RawCapiws>('CAPIWS')\n if (!capiws || typeof capiws.callFunction !== 'function') {\n throw new EimzoError(\n 'E_NOT_INSTALLED',\n \"E-IMZO klienti yuklanmadi (window.CAPIWS topilmadi). Brauzerda ishlayotganingizni tekshiring.\",\n )\n }\n return capiws\n}\n\n/** `window.Base64` — SDK bilan birga keladigan kodlagich. */\nexport function getBase64(): Base64Global {\n const b64 = pickGlobal<Base64Global>('Base64')\n if (!b64 || typeof b64.encode !== 'function') {\n throw new EimzoError('E_NOT_INSTALLED', 'Base64 (E-IMZO SDK) yuklanmadi.')\n }\n return b64\n}\n","import { EimzoError, toEimzoError } from './errors'\nimport type {\n AuditEvent,\n BatchSignItem,\n Cert,\n CertType,\n EimzoClientOptions,\n EimzoVersion,\n SignBatchOptions,\n SignDoc,\n} from './types'\nimport { nowIso, normalizeSerial, throwIfAborted, withTimeout } from './util'\nimport { getBase64, getCapiws, rawClient } from './vendor'\nimport type { RawCapiResponse, RawCert } from './raw-types'\n\nconst DEFAULT_TIMEOUT_MS = 30_000\nconst DEFAULT_KEY_LOAD_TIMEOUT_MS = 120_000\nconst DEFAULT_MIN_VERSION: EimzoVersion = { major: 3, minor: 37 }\n\n/**\n * E-IMZO bilan ishlashning framework-agnostik yadrosi.\n *\n * Kafolatlar:\n * - har chaqiruvda timeout bor (osilib qolmaydi);\n * - `signBatch` kalitni BIR MARTA yuklaydi (parol bir marta so'raladi);\n * - har imzodan keyin seriya raqami tanlangan sertifikatga tekshiriladi;\n * - sessiya tugagach yuklangan kalit holati JS'da saqlanmaydi;\n * - `console` ga hech narsa yozilmaydi — hammasi `onAudit` orqali.\n */\nexport class EimzoClient {\n private readonly apiKeys: ReadonlyArray<readonly [string, string]>\n private readonly timeoutMs: number\n private readonly keyLoadTimeoutMs: number\n private readonly minVersion: EimzoVersion\n private readonly onAudit?: (event: AuditEvent) => void\n\n /** Faqat joriy sessiya davomida to'ldiriladi; `signBatch` oxirida tozalanadi. */\n private activeKeySerial: string | null = null\n\n constructor(options: EimzoClientOptions) {\n if (!Array.isArray(options?.apiKeys) || options.apiKeys.length === 0) {\n throw new EimzoError(\n 'E_MISCONFIGURED',\n \"EimzoClient: 'apiKeys' berilishi shart ([[domen, kalit], ...]).\",\n )\n }\n this.apiKeys = options.apiKeys\n this.timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS\n this.keyLoadTimeoutMs = options.keyLoadTimeoutMs ?? DEFAULT_KEY_LOAD_TIMEOUT_MS\n this.minVersion = options.minVersion ?? DEFAULT_MIN_VERSION\n this.onAudit = options.onAudit\n }\n\n // ─── Commanda: o'rnatish ────────────────────────────────────────────────\n\n /**\n * Versiyani tekshiradi va domen API kalitlarini o'rnatadi.\n * Har imzolash seansidan oldin (yoki ilova yuklanganda bir marta) chaqiring.\n */\n async install(): Promise<EimzoVersion> {\n const version = await this.checkVersion()\n\n if (!isVersionAtLeast(version, this.minVersion)) {\n throw new EimzoError(\n 'E_VERSION_LOW',\n `E-IMZO ${version.major}.${version.minor} — kamida ` +\n `${this.minVersion.major}.${this.minVersion.minor} talab qilinadi.`,\n )\n }\n\n rawClient.API_KEYS = this.apiKeys.flatMap(([domain, key]) => [domain, key])\n await this.installApiKeys()\n return version\n }\n\n checkVersion(): Promise<EimzoVersion> {\n return withTimeout<EimzoVersion>(\n this.timeoutMs,\n () =>\n new EimzoError(\n 'E_NOT_INSTALLED',\n \"E-IMZO dasturi javob bermadi (versiya so'rovi). Dastur ishga tushganini tekshiring.\",\n ),\n (resolve, reject) => {\n rawClient.checkVersion(\n (major, minor) => {\n this.audit({ type: 'version_checked', ts: nowIso(), major, minor })\n resolve({ major, minor })\n },\n (error) =>\n reject(\n new EimzoError('E_NOT_INSTALLED', 'E-IMZO dasturi topilmadi.', {\n cause: error,\n }),\n ),\n )\n },\n )\n }\n\n private installApiKeys(): Promise<void> {\n return withTimeout<void>(\n this.timeoutMs,\n () => new EimzoError('E_TIMEOUT', \"API kalitlari o'rnatilmadi (javob yo'q).\"),\n (resolve, reject) => {\n rawClient.installApiKeys(\n () => resolve(),\n (error) =>\n reject(\n new EimzoError(\n 'E_API_KEY_REJECTED',\n \"Domen API kaliti rad etildi. Domen va kalit juftligini tekshiring.\",\n { cause: error },\n ),\n ),\n )\n },\n )\n }\n\n // ─── So'rov: sertifikatlar ───────────────────────────────────────────────\n\n /** Foydalanuvchining barcha kalitlari (disk + token). ID-karta bunga kirmaydi. */\n listCerts(): Promise<Cert[]> {\n return withTimeout<Cert[]>(\n this.timeoutMs,\n () => new EimzoError('E_TIMEOUT', \"Sertifikatlar ro'yxati javob bermadi.\"),\n (resolve, reject) => {\n rawClient.listAllUserKeys(\n (cert, index) => `${cert.serialNumber}-${index}`,\n (_id, cert) => cert,\n (items) => {\n const certs = (items as RawCert[]).map((raw) => normalizeCert(raw))\n this.audit({ type: 'certs_listed', ts: nowIso(), count: certs.length })\n resolve(certs)\n },\n (error) =>\n reject(\n new EimzoError('E_NO_CERTS', \"Sertifikatlarni o'qib bo'lmadi.\", {\n cause: error,\n }),\n ),\n )\n },\n )\n }\n\n /** ID-karta o'quvchiga ulanganmi. Timeout'da `false` qaytaradi (xato tashlamaydi). */\n isIdCardPlugged(): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n let settled = false\n const finish = (value: boolean): void => {\n if (settled) return\n settled = true\n clearTimeout(timer)\n resolve(value)\n }\n const timer = setTimeout(() => finish(false), this.timeoutMs)\n try {\n rawClient.idCardIsPLuggedIn(\n (plugged) => finish(Boolean(plugged)),\n () => finish(false),\n )\n } catch {\n finish(false)\n }\n })\n }\n\n /** ID-karta uchun \"sertifikat\" o'rnini bosuvchi belgili obyekt. */\n static idCardCert(): Cert {\n const far = new Date(Date.now() + 10 * 365 * 24 * 60 * 60 * 1000)\n return {\n serialNumber: 'IDCARD',\n CN: 'ID card',\n TIN: '',\n UID: '',\n O: '',\n T: '',\n validFrom: new Date(0),\n validTo: far,\n type: 'idcard',\n raw: null,\n }\n }\n\n // ─── Commanda: partiyali imzolash ───────────────────────────────────────\n\n /**\n * Bitta sertifikat bilan bir nechta hujjatni imzolaydi.\n *\n * Oqim:\n * 1. Kalitni bir marta yuklaydi (`idcard` bo'lsa — yuklamaydi).\n * 2. Har hujjat uchun `create_pkcs7` ni KETMA-KET chaqiradi (parallel EMAS —\n * CAPIWS bitta soket).\n * 3. Har natijada `signer_serial_number` ni tekshiradi.\n * 4. Yakunda kalit holatini tozalaydi.\n *\n * Bitta hujjat xato bersa — massivda `ok:false` bilan qoladi, qolganlari davom etadi.\n * Foydalanuvchi bekor qilsa (`signal`) — `E_CANCELLED` tashlanadi.\n */\n async signBatch(\n cert: Cert,\n docs: readonly SignDoc[],\n options: SignBatchOptions = {},\n ): Promise<BatchSignItem[]> {\n if (docs.length === 0) {\n throw new EimzoError('E_MISCONFIGURED', \"Imzolash uchun hujjat berilmadi.\")\n }\n assertUniqueIds(docs)\n const { signal, onProgress } = options\n throwIfAborted(signal)\n\n const base64 = getBase64()\n const keyId = await this.acquireKey(cert, signal)\n\n const results: BatchSignItem[] = []\n let signed = 0\n let failed = 0\n\n try {\n for (let i = 0; i < docs.length; i += 1) {\n throwIfAborted(signal)\n const doc = docs[i]!\n onProgress?.({ done: i, total: docs.length, currentId: doc.id })\n this.audit({\n type: 'sign_started',\n ts: nowIso(),\n serial: cert.serialNumber,\n docId: doc.id,\n })\n\n try {\n const raw = await this.createPkcs7(keyId, base64.encode(doc.content), signal)\n const signerSerial = String(raw['signer_serial_number'] ?? '')\n\n if (\n cert.type !== 'idcard' &&\n normalizeSerial(signerSerial) !== normalizeSerial(cert.serialNumber)\n ) {\n throw new EimzoError(\n 'E_SERIAL_MISMATCH',\n 'Imzolangan sertifikat seriyasi tanlangandan farq qiladi.',\n )\n }\n\n results.push({\n id: doc.id,\n ok: true,\n pkcs7_64: String(raw['pkcs7_64'] ?? ''),\n signature_hex: String(raw['signature_hex'] ?? ''),\n signer_serial_number: signerSerial,\n })\n signed += 1\n this.audit({\n type: 'sign_ok',\n ts: nowIso(),\n serial: cert.serialNumber,\n docId: doc.id,\n })\n } catch (error) {\n // Bekor qilish — butun partiyani to'xtatadi.\n if (EimzoError.is(error, 'E_CANCELLED')) throw error\n\n const err = toEimzoError(error, 'E_SIGN_FAILED', 'Hujjatni imzolab bo\\'lmadi.')\n results.push({ id: doc.id, ok: false, error: err })\n failed += 1\n this.audit({\n type: 'sign_failed',\n ts: nowIso(),\n docId: doc.id,\n code: err.code,\n })\n }\n }\n\n onProgress?.({ done: docs.length, total: docs.length })\n return results\n } finally {\n // Kalitni JS holatida ushlab turmaymiz. E-IMZO dasturi kalitni o'z\n // ichida qisqa TTL bilan eslaydi; biz unga tayanmaymiz.\n this.activeKeySerial = null\n this.audit({\n type: 'session_ended',\n ts: nowIso(),\n serial: cert.serialNumber,\n signed,\n failed,\n })\n }\n }\n\n /** Yagona hujjatni imzolash — `signBatch` ustidagi qulaylik. */\n async sign(\n cert: Cert,\n content: string,\n options: SignBatchOptions = {},\n ): Promise<BatchSignItem> {\n const [item] = await this.signBatch(cert, [{ id: 'single', content }], options)\n return item!\n }\n\n // ─── Ichki ─────────────────────────────────────────────────────────────\n\n private async acquireKey(cert: Cert, signal?: AbortSignal): Promise<string> {\n if (cert.type === 'idcard') return 'idcard'\n try {\n return await this.loadKey(cert, signal)\n } catch (error) {\n throw toEimzoError(\n error,\n 'E_KEY_LOAD_CANCELLED',\n 'Kalit yuklanmadi yoki bekor qilindi.',\n )\n }\n }\n\n private loadKey(cert: Cert, signal?: AbortSignal): Promise<string> {\n return withTimeout<string>(\n this.keyLoadTimeoutMs,\n () =>\n new EimzoError(\n 'E_KEY_LOAD_CANCELLED',\n \"Kalit yuklash javob bermadi (parol oynasi ochilmadi yoki yopilmadi).\",\n ),\n (resolve, reject) => {\n rawClient.loadKey(\n cert.raw as RawCert,\n (id) => {\n this.activeKeySerial = cert.serialNumber\n this.audit({\n type: 'key_loaded',\n ts: nowIso(),\n serial: cert.serialNumber,\n })\n resolve(id)\n },\n (error) =>\n reject(\n new EimzoError('E_KEY_LOAD_CANCELLED', 'Kalit yuklanmadi.', {\n cause: error,\n }),\n ),\n )\n },\n signal,\n )\n }\n\n private createPkcs7(\n keyId: string,\n contentBase64: string,\n signal?: AbortSignal,\n ): Promise<RawCapiResponse> {\n return withTimeout<RawCapiResponse>(\n this.timeoutMs,\n () => new EimzoError('E_TIMEOUT', \"Imzolash javob bermadi (create_pkcs7).\"),\n (resolve, reject) => {\n let capiws\n try {\n capiws = getCapiws()\n } catch (error) {\n reject(error)\n return\n }\n capiws.callFunction(\n {\n plugin: 'pkcs7',\n name: 'create_pkcs7',\n arguments: [contentBase64, keyId, 'no'],\n },\n (_event, data) => {\n if (data && data.success) {\n resolve(data)\n } else {\n reject(\n new EimzoError(\n 'E_SIGN_FAILED',\n reasonOf(data) || 'E-IMZO imzolashni rad etdi.',\n { cause: data },\n ),\n )\n }\n },\n (error) =>\n reject(\n new EimzoError('E_TRANSPORT', \"E-IMZO bilan aloqa uzildi.\", {\n cause: error,\n }),\n ),\n )\n },\n signal,\n )\n }\n\n private audit(event: AuditEvent): void {\n if (!this.onAudit) return\n try {\n this.onAudit(event)\n } catch {\n // Audit hook consumer kodida yashaydi — uning xatosi kutubxonani buzmasin.\n }\n }\n}\n\n// ─── Modul yordamchilari ──────────────────────────────────────────────────\n\nfunction isVersionAtLeast(actual: EimzoVersion, min: EimzoVersion): boolean {\n if (actual.major !== min.major) return actual.major > min.major\n return actual.minor >= min.minor\n}\n\nfunction reasonOf(data: RawCapiResponse | undefined | null): string {\n return data && typeof data.reason === 'string' ? data.reason : ''\n}\n\nconst KNOWN_TYPES: ReadonlySet<CertType> = new Set(['pfx', 'ftjc', 'idcard'])\n\nfunction normalizeCert(raw: RawCert): Cert {\n return {\n serialNumber: normalizeSerial(raw.serialNumber),\n CN: str(raw.CN),\n TIN: str(raw.TIN),\n UID: str(raw.UID),\n O: str(raw.O),\n T: str(raw.T),\n validFrom: toDate(raw.validFrom),\n validTo: toDate(raw.validTo),\n type: KNOWN_TYPES.has(raw.type as CertType) ? (raw.type as CertType) : 'pfx',\n raw,\n }\n}\n\nfunction str(value: unknown): string {\n return value == null ? '' : String(value)\n}\n\nfunction toDate(value: string | Date | undefined): Date {\n if (value instanceof Date) return value\n const d = new Date(String(value ?? ''))\n return Number.isNaN(d.getTime()) ? new Date(0) : d\n}\n\nfunction assertUniqueIds(docs: readonly SignDoc[]): void {\n const seen = new Set<string>()\n for (const doc of docs) {\n if (!doc.id) {\n throw new EimzoError('E_MISCONFIGURED', 'Har bir hujjatda id bo\\'lishi shart.')\n }\n if (seen.has(doc.id)) {\n throw new EimzoError('E_MISCONFIGURED', `Hujjat id'si takrorlangan: ${doc.id}`)\n }\n seen.add(doc.id)\n }\n}\n","import type { Cert } from './types'\n\n/** Sertifikat berilgan sanada muddati o'tganmi. */\nexport function certIsExpired(cert: Cert, at: Date = new Date()): boolean {\n return cert.validTo.getTime() < at.getTime()\n}\n\n/** Sertifikat hali kuchга kirmaganmi (validFrom kelajakda). */\nexport function certIsNotYetValid(cert: Cert, at: Date = new Date()): boolean {\n return cert.validFrom.getTime() > at.getTime()\n}\n\n/** Sertifikat hozir amal qiladimi (from <= now <= to). */\nexport function certIsUsable(cert: Cert, at: Date = new Date()): boolean {\n return !certIsExpired(cert, at) && !certIsNotYetValid(cert, at)\n}\n\n/** Muddati yaqin kunlarda tugaydimi (default 14 kun). */\nexport function certExpiresSoon(\n cert: Cert,\n withinDays = 14,\n at: Date = new Date(),\n): boolean {\n if (certIsExpired(cert, at)) return false\n const msLeft = cert.validTo.getTime() - at.getTime()\n return msLeft <= withinDays * 24 * 60 * 60 * 1000\n}\n\n/**\n * Ro'yxatni ko'rsatish tartibiga keltiradi: amaldagilar tepada,\n * keyin muddat tugash sanasi bo'yicha kamayish tartibida.\n * Yangi massiv qaytaradi (mutatsiya yo'q).\n */\nexport function sortCerts(certs: readonly Cert[], at: Date = new Date()): Cert[] {\n return [...certs].sort((a, b) => {\n const au = certIsUsable(a, at)\n const bu = certIsUsable(b, at)\n if (au !== bu) return au ? -1 : 1\n return b.validTo.getTime() - a.validTo.getTime()\n })\n}\n\n/** Bir xil seriya raqamli takroriy sertifikatlarni olib tashlaydi (disk + token). */\nexport function dedupeCerts(certs: readonly Cert[]): Cert[] {\n const seen = new Set<string>()\n const out: Cert[] = []\n for (const cert of certs) {\n if (seen.has(cert.serialNumber)) continue\n seen.add(cert.serialNumber)\n out.push(cert)\n }\n return out\n}\n"]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/util.ts","../src/vendor/e-imzo.js","../src/vendor/e-imzo-client.js","../src/vendor/index.ts","../src/client.ts","../src/cert-utils.ts"],"names":["Base64","getSubst","i","m","event","data"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * E-IMZO xatolarining barqaror kontrakti.\n *\n * Chaqiruvchi kod HAR DOIM `error.code` bo'yicha shox tanlaydi — xabar matnini\n * hech qachon parslamaydi (matn i18n bilan o'zgaradi).\n */\nexport type EimzoErrorCode =\n /** E-IMZO dasturi ishga tushmagan yoki javob bermayapti. */\n | 'E_NOT_INSTALLED'\n /** E-IMZO versiyasi talab qilinganidan past. */\n | 'E_VERSION_LOW'\n /** Domen uchun API kaliti rad etildi (noto'g'ri kalit yoki domen). */\n | 'E_API_KEY_REJECTED'\n /** Foydalanuvchida sertifikat/kalit topilmadi yoki ro'yxatni o'qib bo'lmadi. */\n | 'E_NO_CERTS'\n /** Kalit yuklanmadi — ko'pincha foydalanuvchi parol oynasini yopgan. */\n | 'E_KEY_LOAD_CANCELLED'\n /** Imzolangan sertifikatning seriya raqami tanlangandan farq qiladi. XAVFSIZLIK. */\n | 'E_SERIAL_MISMATCH'\n /** `create_pkcs7` muvaffaqiyatsiz tugadi. */\n | 'E_SIGN_FAILED'\n /** E-IMZO belgilangan vaqt ichida javob bermadi. */\n | 'E_TIMEOUT'\n /** Foydalanuvchi yoki idle-taymer amalni bekor qildi. */\n | 'E_CANCELLED'\n /** Lokal soket / transport xatosi. */\n | 'E_TRANSPORT'\n /** Kutubxona noto'g'ri sozlangan (masalan, apiKeys berilmagan). */\n | 'E_MISCONFIGURED'\n\nexport interface EimzoErrorOptions {\n cause?: unknown\n}\n\nexport class EimzoError extends Error {\n readonly code: EimzoErrorCode\n /** Asl sabab (vendor xatosi, CAPIWS javobi va h.k.). ES2022 `Error.cause` bilan bir xil nom. */\n readonly cause?: unknown\n\n constructor(code: EimzoErrorCode, message: string, options?: EimzoErrorOptions) {\n super(message)\n this.name = 'EimzoError'\n this.code = code\n this.cause = options?.cause\n // TS -> eski target'da instanceof ishlashi uchun\n Object.setPrototypeOf(this, EimzoError.prototype)\n }\n\n /** `EimzoError.is(e)` yoki `EimzoError.is(e, 'E_TIMEOUT')`. */\n static is(error: unknown, code?: EimzoErrorCode): error is EimzoError {\n return (\n error instanceof EimzoError && (code === undefined || error.code === code)\n )\n }\n\n /** Bekor qilingan (foydalanuvchi voz kechgan) — odatda jimgina o'tiladi. */\n static isCancelled(error: unknown): boolean {\n return (\n EimzoError.is(error, 'E_CANCELLED') ||\n EimzoError.is(error, 'E_KEY_LOAD_CANCELLED')\n )\n }\n}\n\n/** Noma'lum qiymatni EimzoError'ga keltiradi (allaqachon EimzoError bo'lsa — o'zini qaytaradi). */\nexport function toEimzoError(\n error: unknown,\n fallbackCode: EimzoErrorCode,\n fallbackMessage: string,\n): EimzoError {\n if (EimzoError.is(error)) return error\n return new EimzoError(fallbackCode, fallbackMessage, { cause: error })\n}\n","import { EimzoError } from './errors'\n\nexport function nowIso(): string {\n return new Date().toISOString()\n}\n\n/** Seriya raqamlarini solishtirish uchun normallashtirish (registr + bo'shliqlar). */\nexport function normalizeSerial(value: unknown): string {\n return String(value ?? '')\n .toUpperCase()\n .replace(/\\s+/g, '')\n}\n\nexport function throwIfAborted(signal?: AbortSignal): void {\n if (signal?.aborted) {\n throw new EimzoError('E_CANCELLED', 'Amal bekor qilindi')\n }\n}\n\n/**\n * Callback uslubidagi vendor chaqiruvini timeout bilan Promise'ga o'raydi.\n * `settle` bir martagina ishlaydi (double-resolve himoyasi).\n */\nexport function withTimeout<T>(\n timeoutMs: number,\n timeoutError: () => EimzoError,\n executor: (\n resolve: (value: T) => void,\n reject: (error: unknown) => void,\n ) => void,\n signal?: AbortSignal,\n): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n let settled = false\n\n const cleanup = (): void => {\n clearTimeout(timer)\n signal?.removeEventListener('abort', onAbort)\n }\n const settleResolve = (value: T): void => {\n if (settled) return\n settled = true\n cleanup()\n resolve(value)\n }\n const settleReject = (error: unknown): void => {\n if (settled) return\n settled = true\n cleanup()\n reject(error)\n }\n\n const onAbort = (): void =>\n settleReject(new EimzoError('E_CANCELLED', 'Amal bekor qilindi'))\n const timer = setTimeout(() => settleReject(timeoutError()), timeoutMs)\n\n if (signal?.aborted) {\n settleReject(new EimzoError('E_CANCELLED', 'Amal bekor qilindi'))\n return\n }\n signal?.addEventListener('abort', onAbort)\n\n try {\n executor(settleResolve, settleReject)\n } catch (error) {\n settleReject(error)\n }\n })\n}\n","/* eslint-disable */\n(function (global) {\n 'use strict';\n // existing version for noConflict()\n var _Base64 = global.Base64;\n var version = \"2.1.4\";\n // if node.js, we use Buffer\n var buffer;\n if (typeof module !== 'undefined' && module.exports) {\n buffer = require('buffer').Buffer;\n }\n // constants\n var b64chars\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n var b64tab = function (bin) {\n var t = {};\n for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i;\n return t;\n }(b64chars);\n var fromCharCode = String.fromCharCode;\n // encoder stuff\n var cb_utob = function (c) {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (fromCharCode(0xc0 | (cc >>> 6))\n + fromCharCode(0x80 | (cc & 0x3f)))\n : (fromCharCode(0xe0 | ((cc >>> 12) & 0x0f))\n + fromCharCode(0x80 | ((cc >>> 6) & 0x3f))\n + fromCharCode(0x80 | (cc & 0x3f)));\n } else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (fromCharCode(0xf0 | ((cc >>> 18) & 0x07))\n + fromCharCode(0x80 | ((cc >>> 12) & 0x3f))\n + fromCharCode(0x80 | ((cc >>> 6) & 0x3f))\n + fromCharCode(0x80 | (cc & 0x3f)));\n }\n };\n var re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n var utob = function (u) {\n return u.replace(re_utob, cb_utob);\n };\n var cb_encode = function (ccc) {\n var padlen = [0, 2, 1][ccc.length % 3],\n ord = ccc.charCodeAt(0) << 16\n | ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8)\n | ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)),\n chars = [\n b64chars.charAt(ord >>> 18),\n b64chars.charAt((ord >>> 12) & 63),\n padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),\n padlen >= 1 ? '=' : b64chars.charAt(ord & 63)\n ];\n return chars.join('');\n };\n var btoa = global.btoa ? function (b) {\n return global.btoa(b);\n } : function (b) {\n return b.replace(/[\\s\\S]{1,3}/g, cb_encode);\n };\n var _encode = buffer\n ? function (u) {\n return (new buffer(u)).toString('base64')\n }\n : function (u) {\n return btoa(utob(u))\n }\n ;\n var encode = function (u, urisafe) {\n return !urisafe\n ? _encode(u)\n : _encode(u).replace(/[+\\/]/g, function (m0) {\n return m0 == '+' ? '-' : '_';\n }).replace(/=/g, '');\n };\n var encodeURI = function (u) {\n return encode(u, true)\n };\n // decoder stuff\n var re_btou = new RegExp([\n '[\\xC0-\\xDF][\\x80-\\xBF]',\n '[\\xE0-\\xEF][\\x80-\\xBF]{2}',\n '[\\xF0-\\xF7][\\x80-\\xBF]{3}'\n ].join('|'), 'g');\n var cb_btou = function (cccc) {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)),\n offset = cp - 0x10000;\n return (fromCharCode((offset >>> 10) + 0xD800)\n + fromCharCode((offset & 0x3FF) + 0xDC00));\n case 3:\n return fromCharCode(\n ((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2))\n );\n default:\n return fromCharCode(\n ((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1))\n );\n }\n };\n var btou = function (b) {\n return b.replace(re_btou, cb_btou);\n };\n var cb_decode = function (cccc) {\n var len = cccc.length,\n padlen = len % 4,\n n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0)\n | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0)\n | (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0)\n | (len > 3 ? b64tab[cccc.charAt(3)] : 0),\n chars = [\n fromCharCode(n >>> 16),\n fromCharCode((n >>> 8) & 0xff),\n fromCharCode(n & 0xff)\n ];\n chars.length -= [0, 0, 2, 1][padlen];\n return chars.join('');\n };\n var atob = global.atob ? function (a) {\n return global.atob(a);\n } : function (a) {\n return a.replace(/[\\s\\S]{1,4}/g, cb_decode);\n };\n var _decode = buffer\n ? function (a) {\n return (new buffer(a, 'base64')).toString()\n }\n : function (a) {\n return btou(atob(a))\n };\n var decode = function (a) {\n return _decode(\n a.replace(/[-_]/g, function (m0) {\n return m0 == '-' ? '+' : '/'\n })\n .replace(/[^A-Za-z0-9\\+\\/]/g, '')\n );\n };\n var noConflict = function () {\n var Base64 = global.Base64;\n global.Base64 = _Base64;\n return Base64;\n };\n // export Base64\n global.Base64 = {\n VERSION: version,\n atob: atob,\n btoa: btoa,\n fromBase64: decode,\n toBase64: encode,\n utob: utob,\n encode: encode,\n encodeURI: encodeURI,\n btou: btou,\n decode: decode,\n noConflict: noConflict\n };\n // if ES5 is available, make Base64.extendString() available\n if (typeof Object.defineProperty === 'function') {\n var noEnum = function (v) {\n return {value: v, enumerable: false, writable: true, configurable: true};\n };\n global.Base64.extendString = function () {\n Object.defineProperty(\n String.prototype, 'fromBase64', noEnum(function () {\n return decode(this)\n }));\n Object.defineProperty(\n String.prototype, 'toBase64', noEnum(function (urisafe) {\n return encode(this, urisafe)\n }));\n Object.defineProperty(\n String.prototype, 'toBase64URI', noEnum(function () {\n return encode(this, true)\n }));\n };\n }\n // that's it!\n\n 'use strict'\n // existing version for noConflict()\n var _Base64 = global.Base64\n var version = '2.1.4'\n // if node.js, we use Buffer\n var buffer\n if (typeof module !== 'undefined' && module.exports) {\n buffer = require('buffer').Buffer\n }\n // constants\n var b64chars\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n var b64tab = function (bin) {\n var t = {}\n for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i\n return t\n }(b64chars)\n var fromCharCode = String.fromCharCode\n // encoder stuff\n var cb_utob = function (c) {\n if (c.length < 2) {\n let cc = c.charCodeAt(0)\n return cc < 0x80 ? c\n : cc < 0x800 ? (fromCharCode(0xc0 | (cc >>> 6))\n + fromCharCode(0x80 | (cc & 0x3f)))\n : (fromCharCode(0xe0 | ((cc >>> 12) & 0x0f))\n + fromCharCode(0x80 | ((cc >>> 6) & 0x3f))\n + fromCharCode(0x80 | (cc & 0x3f)))\n } else {\n let cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00)\n return (fromCharCode(0xf0 | ((cc >>> 18) & 0x07))\n + fromCharCode(0x80 | ((cc >>> 12) & 0x3f))\n + fromCharCode(0x80 | ((cc >>> 6) & 0x3f))\n + fromCharCode(0x80 | (cc & 0x3f)))\n }\n }\n var re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g\n var utob = function (u) {\n return u.replace(re_utob, cb_utob)\n }\n var cb_encode = function (ccc) {\n var padlen = [0, 2, 1][ccc.length % 3],\n ord = ccc.charCodeAt(0) << 16\n | ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8)\n | ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)),\n chars = [\n b64chars.charAt(ord >>> 18),\n b64chars.charAt((ord >>> 12) & 63),\n padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),\n padlen >= 1 ? '=' : b64chars.charAt(ord & 63)\n ]\n return chars.join('')\n }\n var btoa = global.btoa ? function (b) {\n return global.btoa(b)\n } : function (b) {\n return b.replace(/[\\s\\S]{1,3}/g, cb_encode)\n }\n var _encode = buffer\n ? function (u) {\n return (new buffer(u)).toString('base64')\n }\n : function (u) {\n return btoa(utob(u))\n }\n\n var encode = function (u, urisafe) {\n return !urisafe\n ? _encode(u)\n : _encode(u).replace(/[+\\/]/g, function (m0) {\n return m0 == '+' ? '-' : '_'\n }).replace(/=/g, '')\n }\n var encodeURI = function (u) {\n return encode(u, true)\n }\n // decoder stuff\n var re_btou = new RegExp([\n '[\\xC0-\\xDF][\\x80-\\xBF]',\n '[\\xE0-\\xEF][\\x80-\\xBF]{2}',\n '[\\xF0-\\xF7][\\x80-\\xBF]{3}'\n ].join('|'), 'g')\n var cb_btou = function (cccc) {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)),\n offset = cp - 0x10000\n return (fromCharCode((offset >>> 10) + 0xD800)\n + fromCharCode((offset & 0x3FF) + 0xDC00))\n case 3:\n return fromCharCode(\n ((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2))\n )\n default:\n return fromCharCode(\n ((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1))\n )\n }\n }\n var btou = function (b) {\n return b.replace(re_btou, cb_btou)\n }\n var cb_decode = function (cccc) {\n var len = cccc.length,\n padlen = len % 4,\n n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0)\n | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0)\n | (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0)\n | (len > 3 ? b64tab[cccc.charAt(3)] : 0),\n chars = [\n fromCharCode(n >>> 16),\n fromCharCode((n >>> 8) & 0xff),\n fromCharCode(n & 0xff)\n ]\n chars.length -= [0, 0, 2, 1][padlen]\n return chars.join('')\n }\n var atob = global.atob ? function (a) {\n return global.atob(a)\n } : function (a) {\n return a.replace(/[\\s\\S]{1,4}/g, cb_decode)\n }\n var _decode = buffer\n ? function (a) {\n return (new buffer(a, 'base64')).toString()\n }\n : function (a) {\n return btou(atob(a))\n }\n var decode = function (a) {\n return _decode(\n a.replace(/[-_]/g, function (m0) {\n return m0 == '-' ? '+' : '/'\n })\n .replace(/[^A-Za-z0-9\\+\\/]/g, '')\n )\n }\n var noConflict = function () {\n var Base64 = global.Base64\n global.Base64 = _Base64\n return Base64\n }\n // export Base64\n global.Base64 = {\n VERSION: version,\n atob: atob,\n btoa: btoa,\n fromBase64: decode,\n toBase64: encode,\n utob: utob,\n encode: encode,\n encodeURI: encodeURI,\n btou: btou,\n decode: decode,\n noConflict: noConflict\n }\n // if ES5 is available, make Base64.extendString() available\n if (typeof Object.defineProperty === 'function') {\n var noEnum = function (v) {\n return {value: v, enumerable: false, writable: true, configurable: true}\n }\n global.Base64.extendString = function () {\n Object.defineProperty(\n String.prototype, 'fromBase64', noEnum(function () {\n return decode(this)\n }))\n Object.defineProperty(\n String.prototype, 'toBase64', noEnum(function (urisafe) {\n return encode(this, urisafe)\n }))\n Object.defineProperty(\n String.prototype, 'toBase64URI', noEnum(function () {\n return encode(this, true)\n }))\n }\n }\n // that's it!\n\n if (typeof window !== 'undefined') window.Base64 = global.Base64;\n})(typeof globalThis !== 'undefined' ? globalThis : this);\n\nglobalThis.CAPIWS = (typeof EIMZOEXT !== 'undefined') ? EIMZOEXT : {\n URL: ((typeof window !== 'undefined' ? window.location.protocol : '').toLowerCase() === \"https:\" ? \"wss://127.0.0.1:64443\" : \"ws://127.0.0.1:64646\") + \"/service/cryptapi\",\n callFunction: function (funcDef, callback, error) {\n if (!window.WebSocket) {\n if (error)\n error();\n return;\n }\n var socket;\n try {\n socket = new WebSocket(this.URL);\n } catch (e) {\n error(e);\n }\n socket.onerror = function (e) {\n if (error)\n error(e);\n };\n socket.onmessage = function (event) {\n var data = JSON.parse(event.data);\n socket.close();\n callback(event, data);\n };\n socket.onopen = function () {\n socket.send(JSON.stringify(funcDef));\n };\n },\n version: function (callback, error) {\n if (!window.WebSocket) {\n if (error)\n error();\n return;\n }\n var socket;\n try {\n socket = new WebSocket(this.URL);\n } catch (e) {\n error(e);\n }\n socket.onerror = function (e) {\n if (error)\n error(e);\n };\n socket.onmessage = function (event) {\n var data = JSON.parse(event.data);\n socket.close();\n callback(event, data);\n };\n socket.onopen = function () {\n var o = {name: 'version'};\n socket.send(JSON.stringify(o));\n };\n },\n apidoc: function (callback, error) {\n if (!window.WebSocket) {\n if (error)\n error();\n return;\n }\n var socket;\n try {\n socket = new WebSocket(this.URL);\n } catch (e) {\n error(e);\n }\n socket.onerror = function (e) {\n if (error)\n error(e);\n };\n socket.onmessage = function (event) {\n var data = JSON.parse(event.data);\n socket.close();\n callback(event, data);\n };\n socket.onopen = function () {\n var o = {name: 'apidoc'};\n socket.send(JSON.stringify(o));\n };\n },\n apikey: function (domainAndKey, callback, error) {\n if (!window.WebSocket) {\n if (error)\n error();\n return;\n }\n var socket;\n try {\n socket = new WebSocket(this.URL);\n } catch (e) {\n error(e);\n }\n socket.onerror = function (e) {\n if (error)\n error(e);\n };\n socket.onmessage = function (event) {\n var data = JSON.parse(event.data);\n socket.close();\n callback(event, data);\n };\n socket.onopen = function () {\n var o = {name: 'apikey', arguments: domainAndKey};\n socket.send(JSON.stringify(o));\n };\n }\n};\n","/* eslint-disable */\nDate.prototype.yyyymmdd = function () {\n var yyyy = this.getFullYear().toString();\n var mm = (this.getMonth() + 1).toString(); // getMonth() is zero-based\n var dd = this.getDate().toString();\n return yyyy + (mm[1] ? mm : \"0\" + mm[0]) + (dd[1] ? dd : \"0\" + dd[0]); // padding\n};\nDate.prototype.ddmmyyyy = function () {\n var yyyy = this.getFullYear().toString();\n var mm = (this.getMonth() + 1).toString(); // getMonth() is zero-based\n var dd = this.getDate().toString();\n return (dd[1] ? dd : \"0\" + dd[0]) + \".\" + (mm[1] ? mm : \"0\" + mm[0]) + \".\" + yyyy; // padding\n};\nvar dates = {\n convert: function (d) {\n // Converts the date in d to a date-object. The input can be:\n // a date object: returned without modification\n // an array : Interpreted as [year,month,day]. NOTE: month is 0-11.\n // a number : Interpreted as number of milliseconds\n // since 1 Jan 1970 (a timestamp)\n // a string : Any format supported by the javascript engine, like\n // \"YYYY/MM/DD\", \"MM/DD/YYYY\", \"Jan 31 2009\" etc.\n // an object : Interpreted as an object with year, month and date\n // attributes. **NOTE** month is 0-11.\n return (\n d.constructor === Date ? d :\n d.constructor === Array ? new Date(d[0], d[1], d[2]) :\n d.constructor === Number ? new Date(d) :\n d.constructor === String ? new Date(d) :\n typeof d === \"object\" ? new Date(d.year, d.month, d.date) :\n NaN\n );\n },\n compare: function (a, b) {\n // Compare two dates (could be of any type supported by the convert\n // function above) and returns:\n // -1 : if a < b\n // 0 : if a = b\n // 1 : if a > b\n // NaN : if a or b is an illegal date\n // NOTE: The code inside isFinite does an assignment (=).\n return (\n isFinite(a = this.convert(a).valueOf()) &&\n isFinite(b = this.convert(b).valueOf()) ?\n (a > b) - (a < b) :\n NaN\n );\n },\n inRange: function (d, start, end) {\n // Checks if date in d is between dates in start and end.\n // Returns a boolean or NaN:\n // true : if d is between start and end (inclusive)\n // false : if d is before start or after end\n // NaN : if one or more of the dates is illegal.\n // NOTE: The code inside isFinite does an assignment (=).\n return (\n isFinite(d = this.convert(d).valueOf()) &&\n isFinite(start = this.convert(start).valueOf()) &&\n isFinite(end = this.convert(end).valueOf()) ?\n start <= d && d <= end :\n NaN\n );\n }\n};\nString.prototype.splitKeep = function (splitter, ahead) {\n var self = this;\n var result = [];\n if (splitter != '') {\n // Substitution of matched string\n function getSubst(value) {\n var substChar = value[0] == '0' ? '1' : '0';\n var subst = '';\n for (var i = 0; i < value.length; i++) {\n subst += substChar;\n }\n return subst;\n };\n var matches = [];\n // Getting mached value and its index\n var replaceName = splitter instanceof RegExp ? \"replace\" : \"replaceAll\";\n var r = self[replaceName](splitter, function (m, i, e) {\n matches.push({value: m, index: i});\n return getSubst(m);\n });\n // Finds split substrings\n var lastIndex = 0;\n for (var i = 0; i < matches.length; i++) {\n var m = matches[i];\n var nextIndex = ahead == true ? m.index : m.index + m.value.length;\n if (nextIndex != lastIndex) {\n var part = self.substring(lastIndex, nextIndex);\n result.push(part);\n lastIndex = nextIndex;\n }\n }\n ;\n if (lastIndex < self.length) {\n var part = self.substring(lastIndex, self.length);\n result.push(part);\n }\n ;\n } else {\n result.add(self);\n }\n ;\n return result;\n};\n\nexport const EIMZOClient = {\n NEW_API: false,\n NEW_API2: false,\n API_KEYS: [\n 'localhost', '96D0C1491615C82B9A54D9989779DF825B690748224C2B04F500F370D51827CE2644D8D4A82C18184D73AB8530BB8ED537269603F61DB0D03D2104ABF789970B',\n '127.0.0.1', 'A7BCFA5D490B351BE0754130DF03A068F855DB4333D43921125B9CF2670EF6A40370C646B90401955E1F7BC9CDBF59CE0B2C5467D820BE189C845D0B79CFC96F'\n ],\n checkVersion: function (success, fail) {\n CAPIWS.version(function (event, data) {\n if (data.success === true) {\n if (data.major && data.minor) {\n var installedVersion = parseInt(data.major) * 100 + parseInt(data.minor);\n EIMZOClient.NEW_API = installedVersion >= 336;\n EIMZOClient.NEW_API2 = installedVersion >= 412;\n success(data.major, data.minor);\n } else {\n fail(null, 'E-IMZO Version is undefined');\n }\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n },\n installApiKeys: function (success, fail) {\n CAPIWS.apikey(EIMZOClient.API_KEYS, function (event, data) {\n if (data.success) {\n success();\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n },\n listAllUserKeys: function (itemIdGen, itemUiGen, success, fail) {\n var items = [];\n var errors = [];\n if (!EIMZOClient.NEW_API) {\n fail(null, 'Please install new version of E-IMZO');\n } else {\n if (EIMZOClient.NEW_API2) {\n EIMZOClient._findPfxs2(itemIdGen, itemUiGen, items, errors, function (firstItmId2) {\n if (items.length === 0 && errors.length > 0) {\n fail(errors[0].e, errors[0].r);\n } else {\n var firstId = null;\n if (items.length === 1) {\n if (firstItmId2) {\n firstId = firstItmId2;\n }\n }\n success(items, firstId);\n }\n });\n } else {\n EIMZOClient._findPfxs2(itemIdGen, itemUiGen, items, errors, function (firstItmId2) {\n EIMZOClient._findTokens2(itemIdGen, itemUiGen, items, errors, function (firstItmId3) {\n if (items.length === 0 && errors.length > 0) {\n fail(errors[0].e, errors[0].r);\n } else {\n var firstId = null;\n if (items.length === 1) {\n if (firstItmId2) {\n firstId = firstItmId2;\n } else if (firstItmId3) {\n firstId = firstItmId3;\n }\n }\n success(items, firstId);\n }\n });\n });\n }\n }\n },\n idCardIsPLuggedIn: function (success, fail) {\n if (!EIMZOClient.NEW_API2) {\n success(false);\n } else {\n CAPIWS.callFunction({plugin: \"idcard\", name: \"list_readers\"}, function (event, data) {\n if (data.success) {\n success(data.readers.length > 0);\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n }\n },\n loadKey: function (itemObject, success, fail, verifyPassword) {\n if (itemObject) {\n var vo = itemObject;\n if (vo.type === \"pfx\") {\n CAPIWS.callFunction({\n plugin: \"pfx\",\n name: \"load_key\",\n arguments: [vo.disk, vo.path, vo.name, vo.alias]\n }, function (event, data) {\n if (data.success) {\n var id = data.keyId;\n if (verifyPassword) {\n CAPIWS.callFunction({\n name: \"verify_password\",\n plugin: \"pfx\",\n arguments: [id]\n }, function (event, data) {\n if (data.success) {\n success(id);\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n } else {\n success(id);\n }\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n } else if (vo.type === \"ftjc\") {\n CAPIWS.callFunction({\n plugin: \"ftjc\",\n name: \"load_key\",\n arguments: [vo.cardUID]\n }, function (event, data) {\n if (data.success) {\n var id = data.keyId;\n if (verifyPassword) {\n CAPIWS.callFunction({\n plugin: \"ftjc\",\n name: \"verify_pin\",\n arguments: [id, '1']\n }, function (event, data) {\n if (data.success) {\n success(id);\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n } else {\n success(id);\n }\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n }\n }\n },\n changeKeyPassword: function (itemObject, success, fail) {\n if (itemObject) {\n var vo = itemObject;\n if (vo.type === \"pfx\") {\n CAPIWS.callFunction({\n plugin: \"pfx\",\n name: \"load_key\",\n arguments: [vo.disk, vo.path, vo.name, vo.alias]\n }, function (event, data) {\n if (data.success) {\n var id = data.keyId;\n CAPIWS.callFunction({\n name: \"change_password\",\n plugin: \"pfx\",\n arguments: [id]\n }, function (event, data) {\n if (data.success) {\n success();\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n } else if (vo.type === \"ftjc\") {\n CAPIWS.callFunction({\n plugin: \"ftjc\",\n name: \"load_key\",\n arguments: [vo.cardUID]\n }, function (event, data) {\n if (data.success) {\n var id = data.keyId;\n CAPIWS.callFunction({\n name: \"change_pin\",\n plugin: \"ftjc\",\n arguments: [id, '1']\n }, function (event, data) {\n if (data.success) {\n success();\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n }\n }\n },\n createPkcs7: function (id, data, timestamper, success, fail, detached, isDataBase64Encoded, enableAttachTimestamp = true) {\n var data64;\n if (isDataBase64Encoded === true) {\n data64 = data\n } else {\n data64 = Base64.encode(data);\n }\n if (detached === true) {\n detached = 'yes';\n } else {\n detached = 'no';\n }\n CAPIWS.callFunction({\n plugin: \"pkcs7\",\n name: \"create_pkcs7\",\n arguments: [data64, id, detached]\n }, function (event, data) {\n if (data.success) {\n var pkcs7 = data.pkcs7_64;\n if (timestamper) {\n var sn = data.signer_serial_number;\n timestamper(data.signature_hex, function (tst) {\n if(enableAttachTimestamp) {\n CAPIWS.callFunction({\n plugin: \"pkcs7\",\n name: \"attach_timestamp_token_pkcs7\",\n arguments: [pkcs7, sn, tst]\n }, function (event, data) {\n if (data.success) {\n var pkcs7tst = data.pkcs7_64;\n success(pkcs7tst);\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n } else {\n success(tst);\n }\n }, fail, data.pkcs7_64);\n } else {\n success(pkcs7);\n }\n } else {\n fail(null, data.reason);\n }\n }, function (e) {\n fail(e, null);\n });\n },\n _getX500Val: function (s, f) {\n var res = s.splitKeep(/,[A-Z]+=/g, true);\n for (var i in res) {\n var n = res[i].search((i > 0 ? \",\" : \"\") + f + \"=\");\n if (n !== -1) {\n return res[i].slice(n + f.length + 1 + (i > 0 ? 1 : 0));\n }\n }\n return \"\";\n },\n _findPfxs2: function (itemIdGen, itemUiGen, items, errors, callback) {\n var itmkey0;\n CAPIWS.callFunction({plugin: \"pfx\", name: \"list_all_certificates\"}, function (event, data) {\n if (data.success) {\n for (var rec in data.certificates) {\n var el = data.certificates[rec];\n var x500name_ex = el.alias.toUpperCase();\n x500name_ex = x500name_ex.replace(\"1.2.860.3.16.1.1=\", \"INN=\");\n x500name_ex = x500name_ex.replace(\"1.2.860.3.16.1.2=\", \"PINFL=\");\n var vo = {\n disk: el.disk,\n path: el.path,\n name: el.name,\n alias: el.alias,\n serialNumber: EIMZOClient._getX500Val(x500name_ex, \"SERIALNUMBER\"),\n validFrom: new Date(EIMZOClient._getX500Val(x500name_ex, \"VALIDFROM\").replace(/\\./g, \"-\").replace(\" \", \"T\")),\n validTo: new Date(EIMZOClient._getX500Val(x500name_ex, \"VALIDTO\").replace(/\\./g, \"-\").replace(\" \", \"T\")),\n CN: EIMZOClient._getX500Val(x500name_ex, \"CN\"),\n TIN: (EIMZOClient._getX500Val(x500name_ex, \"INN\") ? EIMZOClient._getX500Val(x500name_ex, \"INN\") : EIMZOClient._getX500Val(x500name_ex, \"UID\")),\n UID: EIMZOClient._getX500Val(x500name_ex, \"UID\"),\n PINFL: EIMZOClient._getX500Val(x500name_ex, \"PINFL\"),\n O: EIMZOClient._getX500Val(x500name_ex, \"O\"),\n T: EIMZOClient._getX500Val(x500name_ex, \"T\"),\n type: 'pfx'\n };\n if (!vo.TIN && !vo.PINFL)\n continue;\n var itmkey = itemIdGen(vo, rec);\n if (!itmkey0) {\n itmkey0 = itmkey;\n }\n var itm = itemUiGen(itmkey, vo);\n items.push(itm);\n }\n } else {\n errors.push({r: data.reason});\n }\n callback(itmkey0);\n }, function (e) {\n errors.push({e: e});\n callback(itmkey0);\n });\n },\n _findTokens2: function (itemIdGen, itemUiGen, items, errors, callback) {\n var itmkey0;\n CAPIWS.callFunction({plugin: \"ftjc\", name: \"list_all_keys\", arguments: ['']}, function (event, data) {\n if (data.success) {\n for (var rec in data.tokens) {\n var el = data.tokens[rec];\n var x500name_ex = el.info.toUpperCase();\n x500name_ex = x500name_ex.replace(\"1.2.860.3.16.1.1=\", \"INN=\");\n x500name_ex = x500name_ex.replace(\"1.2.860.3.16.1.2=\", \"PINFL=\");\n var vo = {\n cardUID: el.cardUID,\n statusInfo: el.statusInfo,\n ownerName: el.ownerName,\n info: el.info,\n serialNumber: EIMZOClient._getX500Val(x500name_ex, \"SERIALNUMBER\"),\n validFrom: new Date(EIMZOClient._getX500Val(x500name_ex, \"VALIDFROM\")),\n validTo: new Date(EIMZOClient._getX500Val(x500name_ex, \"VALIDTO\")),\n CN: EIMZOClient._getX500Val(x500name_ex, \"CN\"),\n TIN: (EIMZOClient._getX500Val(x500name_ex, \"INN\") ? EIMZOClient._getX500Val(x500name_ex, \"INN\") : EIMZOClient._getX500Val(x500name_ex, \"UID\")),\n UID: EIMZOClient._getX500Val(x500name_ex, \"UID\"),\n PINFL: EIMZOClient._getX500Val(x500name_ex, \"PINFL\"),\n O: EIMZOClient._getX500Val(x500name_ex, \"O\"),\n T: EIMZOClient._getX500Val(x500name_ex, \"T\"),\n type: 'ftjc'\n };\n if (!vo.TIN && !vo.PINFL)\n continue;\n var itmkey = itemIdGen(vo, rec);\n if (!itmkey0) {\n itmkey0 = itmkey;\n }\n var itm = itemUiGen(itmkey, vo);\n items.push(itm);\n }\n } else {\n errors.push({r: data.reason});\n }\n callback(itmkey0);\n }, function (e) {\n errors.push({e: e});\n callback(itmkey0);\n });\n }\n};\n\n","/**\n * Vendored E-IMZO SDK'ni yuklaydi va tiplangan yuzasini beradi.\n *\n * `./e-imzo.js` — side-effect: `window.CAPIWS` va `window.Base64` ni o'rnatadi.\n * `./e-imzo-client.js` — ESM eksport `EIMZOClient`.\n */\nimport './e-imzo.js'\nimport { EIMZOClient } from './e-imzo-client.js'\n\nimport { EimzoError } from '../errors'\nimport type { RawCapiws, RawEimzoClient } from '../raw-types'\n\nexport const rawClient: RawEimzoClient = EIMZOClient\n\ninterface Base64Global {\n encode(input: string): string\n decode(input: string): string\n}\n\nfunction pickGlobal<T>(name: 'CAPIWS' | 'Base64'): T | undefined {\n const g = globalThis as Record<string, unknown>\n if (g[name] != null) return g[name] as T\n const w = g['window'] as Record<string, unknown> | undefined\n return w?.[name] as T | undefined\n}\n\n/** `window.CAPIWS` — E-IMZO lokal soket ko'prigi. Topilmasa E_NOT_INSTALLED. */\nexport function getCapiws(): RawCapiws {\n const capiws = pickGlobal<RawCapiws>('CAPIWS')\n if (!capiws || typeof capiws.callFunction !== 'function') {\n throw new EimzoError(\n 'E_NOT_INSTALLED',\n \"E-IMZO klienti yuklanmadi (window.CAPIWS topilmadi). Brauzerda ishlayotganingizni tekshiring.\",\n )\n }\n return capiws\n}\n\n/** `window.Base64` — SDK bilan birga keladigan kodlagich. */\nexport function getBase64(): Base64Global {\n const b64 = pickGlobal<Base64Global>('Base64')\n if (!b64 || typeof b64.encode !== 'function') {\n throw new EimzoError('E_NOT_INSTALLED', 'Base64 (E-IMZO SDK) yuklanmadi.')\n }\n return b64\n}\n","import { EimzoError, toEimzoError } from './errors'\nimport type {\n AuditEvent,\n BatchSignItem,\n Cert,\n CertType,\n EimzoClientOptions,\n EimzoVersion,\n SignBatchOptions,\n SignDoc,\n} from './types'\nimport { nowIso, normalizeSerial, throwIfAborted, withTimeout } from './util'\nimport { getBase64, getCapiws, rawClient } from './vendor'\nimport type { RawCapiResponse, RawCert } from './raw-types'\n\nconst DEFAULT_TIMEOUT_MS = 30_000\nconst DEFAULT_KEY_LOAD_TIMEOUT_MS = 120_000\nconst DEFAULT_MIN_VERSION: EimzoVersion = { major: 3, minor: 37 }\n\n/**\n * E-IMZO bilan ishlashning framework-agnostik yadrosi.\n *\n * Kafolatlar:\n * - har chaqiruvda timeout bor (osilib qolmaydi);\n * - `signBatch` kalitni BIR MARTA yuklaydi (parol bir marta so'raladi);\n * - har imzodan keyin seriya raqami tanlangan sertifikatga tekshiriladi;\n * - sessiya tugagach yuklangan kalit holati JS'da saqlanmaydi;\n * - `console` ga hech narsa yozilmaydi — hammasi `onAudit` orqali.\n */\nexport class EimzoClient {\n private readonly apiKeys: ReadonlyArray<readonly [string, string]>\n private readonly timeoutMs: number\n private readonly keyLoadTimeoutMs: number\n private readonly minVersion: EimzoVersion\n private readonly onAudit?: (event: AuditEvent) => void\n\n /** Faqat joriy sessiya davomida to'ldiriladi; `signBatch` oxirida tozalanadi. */\n private activeKeySerial: string | null = null\n\n constructor(options: EimzoClientOptions) {\n if (!Array.isArray(options?.apiKeys) || options.apiKeys.length === 0) {\n throw new EimzoError(\n 'E_MISCONFIGURED',\n \"EimzoClient: 'apiKeys' berilishi shart ([[domen, kalit], ...]).\",\n )\n }\n this.apiKeys = options.apiKeys\n this.timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS\n this.keyLoadTimeoutMs = options.keyLoadTimeoutMs ?? DEFAULT_KEY_LOAD_TIMEOUT_MS\n this.minVersion = options.minVersion ?? DEFAULT_MIN_VERSION\n this.onAudit = options.onAudit\n }\n\n // ─── Commanda: o'rnatish ────────────────────────────────────────────────\n\n /**\n * Versiyani tekshiradi va domen API kalitlarini o'rnatadi.\n * Har imzolash seansidan oldin (yoki ilova yuklanganda bir marta) chaqiring.\n */\n async install(): Promise<EimzoVersion> {\n const version = await this.checkVersion()\n\n if (!isVersionAtLeast(version, this.minVersion)) {\n throw new EimzoError(\n 'E_VERSION_LOW',\n `E-IMZO ${version.major}.${version.minor} — kamida ` +\n `${this.minVersion.major}.${this.minVersion.minor} talab qilinadi.`,\n )\n }\n\n rawClient.API_KEYS = this.apiKeys.flatMap(([domain, key]) => [domain, key])\n await this.installApiKeys()\n return version\n }\n\n checkVersion(): Promise<EimzoVersion> {\n return withTimeout<EimzoVersion>(\n this.timeoutMs,\n () =>\n new EimzoError(\n 'E_NOT_INSTALLED',\n \"E-IMZO dasturi javob bermadi (versiya so'rovi). Dastur ishga tushganini tekshiring.\",\n ),\n (resolve, reject) => {\n rawClient.checkVersion(\n (major, minor) => {\n this.audit({ type: 'version_checked', ts: nowIso(), major, minor })\n resolve({ major, minor })\n },\n (error) =>\n reject(\n new EimzoError('E_NOT_INSTALLED', 'E-IMZO dasturi topilmadi.', {\n cause: error,\n }),\n ),\n )\n },\n )\n }\n\n private installApiKeys(): Promise<void> {\n return withTimeout<void>(\n this.timeoutMs,\n () => new EimzoError('E_TIMEOUT', \"API kalitlari o'rnatilmadi (javob yo'q).\"),\n (resolve, reject) => {\n rawClient.installApiKeys(\n () => resolve(),\n (error) =>\n reject(\n new EimzoError(\n 'E_API_KEY_REJECTED',\n \"Domen API kaliti rad etildi. Domen va kalit juftligini tekshiring.\",\n { cause: error },\n ),\n ),\n )\n },\n )\n }\n\n // ─── So'rov: sertifikatlar ───────────────────────────────────────────────\n\n /** Foydalanuvchining barcha kalitlari (disk + token). ID-karta bunga kirmaydi. */\n listCerts(): Promise<Cert[]> {\n return withTimeout<Cert[]>(\n this.timeoutMs,\n () => new EimzoError('E_TIMEOUT', \"Sertifikatlar ro'yxati javob bermadi.\"),\n (resolve, reject) => {\n rawClient.listAllUserKeys(\n (cert, index) => `${cert.serialNumber}-${index}`,\n (_id, cert) => cert,\n (items) => {\n const certs = (items as RawCert[]).map((raw) => normalizeCert(raw))\n this.audit({ type: 'certs_listed', ts: nowIso(), count: certs.length })\n resolve(certs)\n },\n (error) =>\n reject(\n new EimzoError('E_NO_CERTS', \"Sertifikatlarni o'qib bo'lmadi.\", {\n cause: error,\n }),\n ),\n )\n },\n )\n }\n\n /** ID-karta o'quvchiga ulanganmi. Timeout'da `false` qaytaradi (xato tashlamaydi). */\n isIdCardPlugged(): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n let settled = false\n const finish = (value: boolean): void => {\n if (settled) return\n settled = true\n clearTimeout(timer)\n resolve(value)\n }\n const timer = setTimeout(() => finish(false), this.timeoutMs)\n try {\n rawClient.idCardIsPLuggedIn(\n (plugged) => finish(Boolean(plugged)),\n () => finish(false),\n )\n } catch {\n finish(false)\n }\n })\n }\n\n /** ID-karta uchun \"sertifikat\" o'rnini bosuvchi belgili obyekt. */\n static idCardCert(): Cert {\n const far = new Date(Date.now() + 10 * 365 * 24 * 60 * 60 * 1000)\n return {\n serialNumber: 'IDCARD',\n CN: 'ID card',\n TIN: '',\n UID: '',\n PINFL: '',\n O: '',\n T: '',\n validFrom: new Date(0),\n validTo: far,\n type: 'idcard',\n raw: null,\n }\n }\n\n // ─── Commanda: partiyali imzolash ───────────────────────────────────────\n\n /**\n * Bitta sertifikat bilan bir nechta hujjatni imzolaydi.\n *\n * Oqim:\n * 1. Kalitni bir marta yuklaydi (`idcard` bo'lsa — yuklamaydi).\n * 2. Har hujjat uchun `create_pkcs7` ni KETMA-KET chaqiradi (parallel EMAS —\n * CAPIWS bitta soket).\n * 3. Har natijada `signer_serial_number` ni tekshiradi.\n * 4. Yakunda kalit holatini tozalaydi.\n *\n * Bitta hujjat xato bersa — massivda `ok:false` bilan qoladi, qolganlari davom etadi.\n * Foydalanuvchi bekor qilsa (`signal`) — `E_CANCELLED` tashlanadi.\n */\n async signBatch(\n cert: Cert,\n docs: readonly SignDoc[],\n options: SignBatchOptions = {},\n ): Promise<BatchSignItem[]> {\n if (docs.length === 0) {\n throw new EimzoError('E_MISCONFIGURED', \"Imzolash uchun hujjat berilmadi.\")\n }\n assertUniqueIds(docs)\n const { signal, onProgress } = options\n throwIfAborted(signal)\n\n const base64 = getBase64()\n const keyId = await this.acquireKey(cert, signal)\n\n const results: BatchSignItem[] = []\n let signed = 0\n let failed = 0\n\n try {\n for (let i = 0; i < docs.length; i += 1) {\n throwIfAborted(signal)\n const doc = docs[i]!\n onProgress?.({ done: i, total: docs.length, currentId: doc.id })\n this.audit({\n type: 'sign_started',\n ts: nowIso(),\n serial: cert.serialNumber,\n docId: doc.id,\n })\n\n try {\n const raw = await this.createPkcs7(keyId, base64.encode(doc.content), signal)\n const signerSerial = String(raw['signer_serial_number'] ?? '')\n\n if (\n cert.type !== 'idcard' &&\n normalizeSerial(signerSerial) !== normalizeSerial(cert.serialNumber)\n ) {\n throw new EimzoError(\n 'E_SERIAL_MISMATCH',\n 'Imzolangan sertifikat seriyasi tanlangandan farq qiladi.',\n )\n }\n\n results.push({\n id: doc.id,\n ok: true,\n pkcs7_64: String(raw['pkcs7_64'] ?? ''),\n signature_hex: String(raw['signature_hex'] ?? ''),\n signer_serial_number: signerSerial,\n })\n signed += 1\n this.audit({\n type: 'sign_ok',\n ts: nowIso(),\n serial: cert.serialNumber,\n docId: doc.id,\n })\n } catch (error) {\n // Bekor qilish — butun partiyani to'xtatadi.\n if (EimzoError.is(error, 'E_CANCELLED')) throw error\n\n const err = toEimzoError(error, 'E_SIGN_FAILED', 'Hujjatni imzolab bo\\'lmadi.')\n results.push({ id: doc.id, ok: false, error: err })\n failed += 1\n this.audit({\n type: 'sign_failed',\n ts: nowIso(),\n docId: doc.id,\n code: err.code,\n })\n }\n }\n\n onProgress?.({ done: docs.length, total: docs.length })\n return results\n } finally {\n // Kalitni JS holatida ushlab turmaymiz. E-IMZO dasturi kalitni o'z\n // ichida qisqa TTL bilan eslaydi; biz unga tayanmaymiz.\n this.activeKeySerial = null\n this.audit({\n type: 'session_ended',\n ts: nowIso(),\n serial: cert.serialNumber,\n signed,\n failed,\n })\n }\n }\n\n /** Yagona hujjatni imzolash — `signBatch` ustidagi qulaylik. */\n async sign(\n cert: Cert,\n content: string,\n options: SignBatchOptions = {},\n ): Promise<BatchSignItem> {\n const [item] = await this.signBatch(cert, [{ id: 'single', content }], options)\n return item!\n }\n\n // ─── Ichki ─────────────────────────────────────────────────────────────\n\n private async acquireKey(cert: Cert, signal?: AbortSignal): Promise<string> {\n if (cert.type === 'idcard') return 'idcard'\n try {\n return await this.loadKey(cert, signal)\n } catch (error) {\n throw toEimzoError(\n error,\n 'E_KEY_LOAD_CANCELLED',\n 'Kalit yuklanmadi yoki bekor qilindi.',\n )\n }\n }\n\n private loadKey(cert: Cert, signal?: AbortSignal): Promise<string> {\n return withTimeout<string>(\n this.keyLoadTimeoutMs,\n () =>\n new EimzoError(\n 'E_KEY_LOAD_CANCELLED',\n \"Kalit yuklash javob bermadi (parol oynasi ochilmadi yoki yopilmadi).\",\n ),\n (resolve, reject) => {\n rawClient.loadKey(\n cert.raw as RawCert,\n (id) => {\n this.activeKeySerial = cert.serialNumber\n this.audit({\n type: 'key_loaded',\n ts: nowIso(),\n serial: cert.serialNumber,\n })\n resolve(id)\n },\n (error) =>\n reject(\n new EimzoError('E_KEY_LOAD_CANCELLED', 'Kalit yuklanmadi.', {\n cause: error,\n }),\n ),\n )\n },\n signal,\n )\n }\n\n private createPkcs7(\n keyId: string,\n contentBase64: string,\n signal?: AbortSignal,\n ): Promise<RawCapiResponse> {\n return withTimeout<RawCapiResponse>(\n this.timeoutMs,\n () => new EimzoError('E_TIMEOUT', \"Imzolash javob bermadi (create_pkcs7).\"),\n (resolve, reject) => {\n let capiws\n try {\n capiws = getCapiws()\n } catch (error) {\n reject(error)\n return\n }\n capiws.callFunction(\n {\n plugin: 'pkcs7',\n name: 'create_pkcs7',\n arguments: [contentBase64, keyId, 'no'],\n },\n (_event, data) => {\n if (data && data.success) {\n resolve(data)\n } else {\n reject(\n new EimzoError(\n 'E_SIGN_FAILED',\n reasonOf(data) || 'E-IMZO imzolashni rad etdi.',\n { cause: data },\n ),\n )\n }\n },\n (error) =>\n reject(\n new EimzoError('E_TRANSPORT', \"E-IMZO bilan aloqa uzildi.\", {\n cause: error,\n }),\n ),\n )\n },\n signal,\n )\n }\n\n private audit(event: AuditEvent): void {\n if (!this.onAudit) return\n try {\n this.onAudit(event)\n } catch {\n // Audit hook consumer kodida yashaydi — uning xatosi kutubxonani buzmasin.\n }\n }\n}\n\n// ─── Modul yordamchilari ──────────────────────────────────────────────────\n\nfunction isVersionAtLeast(actual: EimzoVersion, min: EimzoVersion): boolean {\n if (actual.major !== min.major) return actual.major > min.major\n return actual.minor >= min.minor\n}\n\nfunction reasonOf(data: RawCapiResponse | undefined | null): string {\n return data && typeof data.reason === 'string' ? data.reason : ''\n}\n\nconst KNOWN_TYPES: ReadonlySet<CertType> = new Set(['pfx', 'ftjc', 'idcard'])\n\nfunction normalizeCert(raw: RawCert): Cert {\n return {\n serialNumber: normalizeSerial(raw.serialNumber),\n CN: str(raw.CN),\n TIN: str(raw.TIN),\n UID: str(raw.UID),\n PINFL: str(raw.PINFL),\n O: str(raw.O),\n T: str(raw.T),\n validFrom: toDate(raw.validFrom),\n validTo: toDate(raw.validTo),\n type: KNOWN_TYPES.has(raw.type as CertType) ? (raw.type as CertType) : 'pfx',\n raw,\n }\n}\n\nfunction str(value: unknown): string {\n return value == null ? '' : String(value)\n}\n\nfunction toDate(value: string | Date | undefined): Date {\n if (value instanceof Date) return value\n const d = new Date(String(value ?? ''))\n return Number.isNaN(d.getTime()) ? new Date(0) : d\n}\n\nfunction assertUniqueIds(docs: readonly SignDoc[]): void {\n const seen = new Set<string>()\n for (const doc of docs) {\n if (!doc.id) {\n throw new EimzoError('E_MISCONFIGURED', 'Har bir hujjatda id bo\\'lishi shart.')\n }\n if (seen.has(doc.id)) {\n throw new EimzoError('E_MISCONFIGURED', `Hujjat id'si takrorlangan: ${doc.id}`)\n }\n seen.add(doc.id)\n }\n}\n","import type { Cert } from './types'\n\n/** Sertifikat berilgan sanada muddati o'tganmi. */\nexport function certIsExpired(cert: Cert, at: Date = new Date()): boolean {\n return cert.validTo.getTime() < at.getTime()\n}\n\n/** E-IMZO O maydoniga \"tashkilot yo'q\" ma'nosida qo'yadigan belgilar. */\nconst ORG_PLACEHOLDERS = new Set([\n 'НЕ УКАЗАНО',\n 'НЕ УКАЗАНА',\n 'NE UKAZANO',\n \"KO'RSATILMAGAN\",\n 'КЎРСАТИЛМАГАН',\n '-',\n '',\n])\n\n/** Haqiqiy tashkilot nomi (placeholder bo'lsa bo'sh string). */\nexport function certOrg(cert: Cert): string {\n const o = (cert.O ?? '').trim()\n return ORG_PLACEHOLDERS.has(o.toUpperCase()) ? '' : o\n}\n\n/** Jismoniy shaxs sertifikatimi (haqiqiy tashkilot nomi yo'q). */\nexport function certIsIndividual(cert: Cert): boolean {\n return certOrg(cert) === ''\n}\n\n/** Sertifikat hali kuchга kirmaganmi (validFrom kelajakda). */\nexport function certIsNotYetValid(cert: Cert, at: Date = new Date()): boolean {\n return cert.validFrom.getTime() > at.getTime()\n}\n\n/** Sertifikat hozir amal qiladimi (from <= now <= to). */\nexport function certIsUsable(cert: Cert, at: Date = new Date()): boolean {\n return !certIsExpired(cert, at) && !certIsNotYetValid(cert, at)\n}\n\n/** Muddati yaqin kunlarda tugaydimi (default 14 kun). */\nexport function certExpiresSoon(\n cert: Cert,\n withinDays = 14,\n at: Date = new Date(),\n): boolean {\n if (certIsExpired(cert, at)) return false\n const msLeft = cert.validTo.getTime() - at.getTime()\n return msLeft <= withinDays * 24 * 60 * 60 * 1000\n}\n\n/**\n * Ro'yxatni ko'rsatish tartibiga keltiradi: amaldagilar tepada,\n * keyin muddat tugash sanasi bo'yicha kamayish tartibida.\n * Yangi massiv qaytaradi (mutatsiya yo'q).\n */\nexport function sortCerts(certs: readonly Cert[], at: Date = new Date()): Cert[] {\n return [...certs].sort((a, b) => {\n const au = certIsUsable(a, at)\n const bu = certIsUsable(b, at)\n if (au !== bu) return au ? -1 : 1\n return b.validTo.getTime() - a.validTo.getTime()\n })\n}\n\n/** Bir xil seriya raqamli takroriy sertifikatlarni olib tashlaydi (disk + token). */\nexport function dedupeCerts(certs: readonly Cert[]): Cert[] {\n const seen = new Set<string>()\n const out: Cert[] = []\n for (const cert of certs) {\n if (seen.has(cert.serialNumber)) continue\n seen.add(cert.serialNumber)\n out.push(cert)\n }\n return out\n}\n"]}