{"version":3,"sources":["../polyfills/process-polyfill.js","../src/e-imzo/capiws.ts","../src/e-imzo-client.ts","../src/core/plugin-base.ts","../src/plugins/certkey.ts","../src/plugins/cipher.ts","../src/plugins/crl.ts","../src/plugins/cryptoauth.ts","../src/plugins/fileio.ts","../src/plugins/ftjc.ts","../src/plugins/idcard.ts","../src/plugins/pfx.ts","../src/plugins/pkcs10.ts","../src/plugins/pkcs7.ts","../src/plugins/pki.ts","../src/plugins/truststore-jks.ts","../src/plugins/truststore.ts","../src/plugins/tsaclient.ts","../src/plugins/tunnel.ts","../src/plugins/x509.ts","../src/plugins/ytks.ts","../src/eimzo-api.ts","../src/global.ts"],"names":["getSubst","event","data","_init","_a"],"mappings":"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","file":"index.cjs","sourcesContent":["// Browser polyfill for process object\n// Bu fayl browser environmentda process obyektini safely handle qiladi\n\nif (typeof globalThis !== 'undefined' && typeof globalThis.process === 'undefined') {\n  globalThis.process = {\n    env: {\n      NODE_ENV: 'production'\n    },\n    versions: {\n      node: null\n    }\n  };\n}\n","// Type declarations for browser environment\ninterface WindowLocation {\n  protocol: string;\n}\n\ninterface BrowserWindow {\n  location: WindowLocation;\n  WebSocket: typeof WebSocket;\n}\n\ninterface EIMZOEXTType {\n  URL: string;\n  callFunction: (\n    funcDef: any,\n    callback: (event: MessageEvent, data: any) => void,\n    error?: (errorCode?: any) => void\n  ) => void;\n  version: (\n    callback: (event: MessageEvent, data: any) => void,\n    error?: (errorCode?: any) => void\n  ) => void;\n  apidoc: (\n    callback: (event: MessageEvent, data: any) => void,\n    error?: (errorCode?: any) => void\n  ) => void;\n  apikey: (\n    domainAndKey: any,\n    callback: (event: MessageEvent, data: any) => void,\n    error?: (errorCode?: any) => void\n  ) => void;\n}\n\n// Browser globals\ndeclare const window: BrowserWindow;\ndeclare const EIMZOEXT: EIMZOEXTType | undefined;\n\nconst CAPIWS: EIMZOEXTType =\n  typeof EIMZOEXT !== 'undefined'\n    ? EIMZOEXT\n    : {\n        URL:\n          (window.location.protocol.toLowerCase() === 'https:'\n            ? 'wss://127.0.0.1:64443'\n            : 'ws://127.0.0.1:64646') + '/service/cryptapi',\n        callFunction: function (\n          funcDef: any,\n          callback: (event: MessageEvent, data: any) => void,\n          error?: (errorCode?: any) => void\n        ): void {\n          if (!window.WebSocket) {\n            if (error) error();\n            return;\n          }\n          let socket: WebSocket;\n          try {\n            socket = new WebSocket(this.URL);\n          } catch (e) {\n            if (error) error(e);\n            return;\n          }\n          socket.onclose = function (e: CloseEvent): void {\n            if (error) {\n              if (e.code !== 1000) {\n                error(e.code);\n              }\n            }\n          };\n          socket.onmessage = function (event: MessageEvent): void {\n            const data = JSON.parse(event.data);\n            socket.close();\n            callback(event, data);\n          };\n          socket.onopen = function (): void {\n            socket.send(JSON.stringify(funcDef));\n          };\n        },\n        version: function (\n          callback: (event: MessageEvent, data: any) => void,\n          error?: (errorCode?: any) => void\n        ): void {\n          if (!window.WebSocket) {\n            if (error) error();\n            return;\n          }\n          let socket: WebSocket;\n          try {\n            socket = new WebSocket(this.URL);\n          } catch (e) {\n            if (error) error(e);\n            return;\n          }\n          socket.onclose = function (e: CloseEvent): void {\n            if (error) {\n              if (e.code !== 1000) {\n                error(e.code);\n              }\n            }\n          };\n          socket.onmessage = function (event: MessageEvent): void {\n            const data = JSON.parse(event.data);\n            socket.close();\n            callback(event, data);\n          };\n          socket.onopen = function (): void {\n            const o = { name: 'version' };\n            socket.send(JSON.stringify(o));\n          };\n        },\n        apidoc: function (\n          callback: (event: MessageEvent, data: any) => void,\n          error?: (errorCode?: any) => void\n        ): void {\n          if (!window.WebSocket) {\n            if (error) error();\n            return;\n          }\n          let socket: WebSocket;\n          try {\n            socket = new WebSocket(this.URL);\n          } catch (e) {\n            if (error) error(e);\n            return;\n          }\n          socket.onclose = function (e: CloseEvent): void {\n            if (error) {\n              if (e.code !== 1000) {\n                error(e.code);\n              }\n            }\n          };\n          socket.onmessage = function (event: MessageEvent): void {\n            const data = JSON.parse(event.data);\n            socket.close();\n            callback(event, data);\n          };\n          socket.onopen = function (): void {\n            const o = { name: 'apidoc' };\n            socket.send(JSON.stringify(o));\n          };\n        },\n        apikey: function (\n          domainAndKey: any,\n          callback: (event: MessageEvent, data: any) => void,\n          error?: (errorCode?: any) => void\n        ): void {\n          if (!window.WebSocket) {\n            if (error) error();\n            return;\n          }\n          let socket: WebSocket;\n          try {\n            socket = new WebSocket(this.URL);\n          } catch (e) {\n            if (error) error(e);\n            return;\n          }\n          socket.onclose = function (e: CloseEvent): void {\n            if (error) {\n              if (e.code !== 1000) {\n                error(e.code);\n              }\n            }\n          };\n          socket.onmessage = function (event: MessageEvent): void {\n            const data = JSON.parse(event.data);\n            socket.close();\n            callback(event, data);\n          };\n          socket.onopen = function (): void {\n            const o = { name: 'apikey', arguments: domainAndKey };\n            socket.send(JSON.stringify(o));\n          };\n        }\n      };\n\nexport default CAPIWS;\nexport type { EIMZOEXTType };\n","// Type definitions for E-IMZO Client\nimport CAPIWS from './e-imzo/capiws';\n\n// Extend Date interface to include custom methods\ndeclare global {\n  interface Date {\n    yyyymmdd(): string;\n    ddmmyyyy(): string;\n  }\n\n  interface String {\n    splitKeep(splitter: string | RegExp, ahead?: boolean): string[];\n  }\n}\n\n// Date prototype extensions\nDate.prototype.yyyymmdd = function (): string {\n  const yyyy = this.getFullYear().toString();\n  const mm = (this.getMonth() + 1).toString(); // getMonth() is zero-based\n  const dd = this.getDate().toString();\n  return yyyy + (mm[1] ? mm : '0' + mm[0]) + (dd[1] ? dd : '0' + dd[0]); // padding\n};\n\nDate.prototype.ddmmyyyy = function (): string {\n  const yyyy = this.getFullYear().toString();\n  const mm = (this.getMonth() + 1).toString(); // getMonth() is zero-based\n  const dd = this.getDate().toString();\n  return (dd[1] ? dd : '0' + dd[0]) + '.' + (mm[1] ? mm : '0' + mm[0]) + '.' + yyyy; // padding\n};\n\n// Type definitions\ninterface DateConvertible {\n  year?: number;\n  month?: number;\n  date?: number;\n}\n\ninterface DatesUtility {\n  convert(d: Date | number[] | number | string | DateConvertible): Date | number;\n  compare(\n    a: Date | number[] | number | string | DateConvertible,\n    b: Date | number[] | number | string | DateConvertible\n  ): number;\n  inRange(\n    d: Date | number[] | number | string | DateConvertible,\n    start: Date | number[] | number | string | DateConvertible,\n    end: Date | number[] | number | string | DateConvertible\n  ): boolean | number;\n}\n\ninterface CertificateInfo {\n  disk?: string;\n  path?: string;\n  name?: string;\n  alias?: string;\n  cardUID?: string;\n  statusInfo?: string;\n  ownerName?: string;\n  info?: string;\n  serialNumber: string;\n  validFrom: Date;\n  validTo: Date;\n  CN: string;\n  TIN: string;\n  UID: string;\n  PINFL: string;\n  O: string;\n  T: string;\n  type: 'pfx' | 'ftjc';\n}\n\ninterface ErrorInfo {\n  e?: unknown;\n  r?: string;\n}\n\ntype FailCallback = (error: unknown, reason: string | null) => void;\n\ntype ItemIdGenerator = (vo: CertificateInfo, rec: string) => string;\n\ntype ItemUiGenerator = (key: string, vo: CertificateInfo) => unknown;\n\ninterface ApiResponse {\n  success: boolean;\n  reason?: string;\n  major?: string;\n  minor?: string;\n  keyId?: string;\n  pkcs7_64?: string;\n  readers?: unknown[];\n  certificates?: Record<\n    string,\n    {\n      disk: string;\n      path: string;\n      name: string;\n      alias: string;\n    }\n  >;\n  tokens?: Record<\n    string,\n    {\n      cardUID: string;\n      statusInfo: string;\n      ownerName: string;\n      info: string;\n    }\n  >;\n}\n\ninterface EIMZOClientType {\n  NEW_API: boolean;\n  NEW_API2: boolean;\n  API_KEYS: string[];\n  checkVersion(success: (major: string, minor: string) => void, fail: FailCallback): void;\n  installApiKeys(success: () => void, fail: FailCallback): void;\n  listAllUserKeys(\n    itemIdGen: ItemIdGenerator,\n    itemUiGen: ItemUiGenerator,\n    success: (items: unknown[], firstId: string | null) => void,\n    fail: FailCallback\n  ): void;\n  idCardIsPLuggedIn(success: (isPlugged: boolean) => void, fail: FailCallback): void;\n  loadKey(\n    itemObject: CertificateInfo,\n    success: (id: string) => void,\n    fail: FailCallback,\n    verifyPassword?: boolean\n  ): void;\n  changeKeyPassword(itemObject: CertificateInfo, success: () => void, fail: FailCallback): void;\n  createPkcs7(\n    id: string,\n    data: string,\n    timestamper: unknown,\n    success: (pkcs7: string) => void,\n    fail: FailCallback,\n    detached?: boolean,\n    isDataBase64Encoded?: boolean\n  ): void;\n  _getX500Val(s: string, f: string): string;\n  _findPfxs2(\n    itemIdGen: ItemIdGenerator,\n    itemUiGen: ItemUiGenerator,\n    items: unknown[],\n    errors: ErrorInfo[],\n    callback: (firstItemId?: string) => void\n  ): void;\n  _findTokens2(\n    itemIdGen: ItemIdGenerator,\n    itemUiGen: ItemUiGenerator,\n    items: unknown[],\n    errors: ErrorInfo[],\n    callback: (firstItemId?: string) => void\n  ): void;\n}\n\n// Dates utility object\nconst dates: DatesUtility = {\n  convert(d: Date | number[] | number | string | DateConvertible): Date | number {\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    if (d instanceof Date) {\n      return d;\n    } else if (Array.isArray(d) && d.length >= 3) {\n      return new Date(d[0] || 0, d[1] || 0, d[2] || 0);\n    } else if (typeof d === 'number') {\n      return new Date(d);\n    } else if (typeof d === 'string') {\n      return new Date(d);\n    } else if (typeof d === 'object' && d !== null) {\n      const dateObj = d as DateConvertible;\n      return new Date(dateObj.year || 0, dateObj.month || 0, dateObj.date || 0);\n    }\n    return NaN;\n  },\n\n  compare(\n    a: Date | number[] | number | string | DateConvertible,\n    b: Date | number[] | number | string | DateConvertible\n  ): number {\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    const aVal = this.convert(a).valueOf();\n    const bVal = this.convert(b).valueOf();\n    return isFinite(aVal) && isFinite(bVal) ? (aVal > bVal ? 1 : 0) - (aVal < bVal ? 1 : 0) : NaN;\n  },\n\n  inRange(\n    d: Date | number[] | number | string | DateConvertible,\n    start: Date | number[] | number | string | DateConvertible,\n    end: Date | number[] | number | string | DateConvertible\n  ): boolean | number {\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    const dVal = this.convert(d).valueOf();\n    const startVal = this.convert(start).valueOf();\n    const endVal = this.convert(end).valueOf();\n    return isFinite(dVal) && isFinite(startVal) && isFinite(endVal)\n      ? startVal <= dVal && dVal <= endVal\n      : NaN;\n  }\n};\n\n// String prototype extension\nString.prototype.splitKeep = function (splitter: string | RegExp, ahead?: boolean): string[] {\n  const result: string[] = [];\n\n  if (splitter !== '') {\n    // Substitution of matched string\n    function getSubst(value: string): string {\n      const substChar = value[0] === '0' ? '1' : '0';\n      let subst = '';\n      for (let i = 0; i < value.length; i++) {\n        subst += substChar;\n      }\n      return subst;\n    }\n\n    const matches: Array<{ value: string; index: number }> = [];\n\n    // Getting matched value and its index\n    if (splitter instanceof RegExp) {\n      this.replace(splitter, (m: string, ...args: unknown[]) => {\n        const offset = args[args.length - 2] as number;\n        matches.push({ value: m, index: offset });\n        return getSubst(m);\n      });\n    } else {\n      this.replaceAll(splitter, (m: string, offset: number) => {\n        matches.push({ value: m, index: offset });\n        return getSubst(m);\n      });\n    }\n\n    // Finds split substrings\n    let lastIndex = 0;\n    for (let i = 0; i < matches.length; i++) {\n      const m = matches[i];\n      if (m) {\n        const nextIndex = ahead === true ? m.index : m.index + m.value.length;\n        if (nextIndex !== lastIndex) {\n          const part = this.substring(lastIndex, nextIndex);\n          result.push(part);\n          lastIndex = nextIndex;\n        }\n      }\n    }\n    if (lastIndex < this.length) {\n      const part = this.substring(lastIndex, this.length);\n      result.push(part);\n    }\n  } else {\n    result.push(this.toString());\n  }\n  return result;\n};\n\n// E-IMZO Client implementation\nconst EIMZOClient: EIMZOClientType = {\n  NEW_API: false,\n  NEW_API2: false,\n  API_KEYS: [\n    'localhost',\n    '96D0C1491615C82B9A54D9989779DF825B690748224C2B04F500F370D51827CE2644D8D4A82C18184D73AB8530BB8ED537269603F61DB0D03D2104ABF789970B',\n    '127.0.0.1',\n    'A7BCFA5D490B351BE0754130DF03A068F855DB4333D43921125B9CF2670EF6A40370C646B90401955E1F7BC9CDBF59CE0B2C5467D820BE189C845D0B79CFC96F'\n  ],\n\n  checkVersion(success: (major: string, minor: string) => void, fail: FailCallback): void {\n    CAPIWS.version(\n      (event: MessageEvent, data: ApiResponse) => {\n        if (data.success === true) {\n          if (data.major && data.minor) {\n            const 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 || 'Unknown error');\n        }\n      },\n      (e: unknown) => {\n        fail(e, null);\n      }\n    );\n  },\n\n  installApiKeys(success: () => void, fail: FailCallback): void {\n    CAPIWS.apikey(\n      EIMZOClient.API_KEYS,\n      (event: MessageEvent, data: ApiResponse) => {\n        if (data.success) {\n          success();\n        } else {\n          fail(null, data.reason || 'Unknown error');\n        }\n      },\n      (e: unknown) => {\n        fail(e, null);\n      }\n    );\n  },\n\n  listAllUserKeys(\n    itemIdGen: ItemIdGenerator,\n    itemUiGen: ItemUiGenerator,\n    success: (items: unknown[], firstId: string | null) => void,\n    fail: FailCallback\n  ): void {\n    const items: unknown[] = [];\n    const errors: ErrorInfo[] = [];\n\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, (firstItmId2?: string) => {\n          if (items.length === 0 && errors.length > 0) {\n            const firstError = errors[0];\n            if (firstError) {\n              fail(firstError.e, firstError.r || null);\n            }\n          } else {\n            let firstId: string | null = null;\n            if (items.length === 1 && firstItmId2) {\n              firstId = firstItmId2;\n            }\n            success(items, firstId);\n          }\n        });\n      } else {\n        EIMZOClient._findPfxs2(itemIdGen, itemUiGen, items, errors, (firstItmId2?: string) => {\n          EIMZOClient._findTokens2(itemIdGen, itemUiGen, items, errors, (firstItmId3?: string) => {\n            if (items.length === 0 && errors.length > 0) {\n              const firstError = errors[0];\n              if (firstError) {\n                fail(firstError.e, firstError.r || null);\n              }\n            } else {\n              let firstId: string | null = 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\n  idCardIsPLuggedIn(success: (isPlugged: boolean) => void, fail: FailCallback): void {\n    if (!EIMZOClient.NEW_API2) {\n      console.log('E-IMZO version should be 4.12 or newer');\n      success(false);\n    } else {\n      CAPIWS.callFunction(\n        { plugin: 'idcard', name: 'list_readers' },\n        (event: MessageEvent, data: ApiResponse) => {\n          if (data.success) {\n            success((data.readers?.length || 0) > 0);\n          } else {\n            fail(null, data.reason || 'Unknown error');\n          }\n        },\n        (e: unknown) => {\n          fail(e, null);\n        }\n      );\n    }\n  },\n\n  loadKey(\n    itemObject: CertificateInfo,\n    success: (id: string) => void,\n    fail: FailCallback,\n    verifyPassword?: boolean\n  ): void {\n    if (itemObject) {\n      const vo = itemObject;\n      if (vo.type === 'pfx') {\n        CAPIWS.callFunction(\n          {\n            plugin: 'pfx',\n            name: 'load_key',\n            arguments: [vo.disk, vo.path, vo.name, vo.alias]\n          },\n          (event: MessageEvent, data: ApiResponse) => {\n            if (data.success && data.keyId) {\n              const id = data.keyId;\n              if (verifyPassword) {\n                CAPIWS.callFunction(\n                  { name: 'verify_password', plugin: 'pfx', arguments: [id] },\n                  (event: MessageEvent, data: ApiResponse) => {\n                    if (data.success) {\n                      success(id);\n                    } else {\n                      fail(null, data.reason || 'Password verification failed');\n                    }\n                  },\n                  (e: unknown) => {\n                    fail(e, null);\n                  }\n                );\n              } else {\n                success(id);\n              }\n            } else {\n              fail(null, data.reason || 'Failed to load key');\n            }\n          },\n          (e: unknown) => {\n            fail(e, null);\n          }\n        );\n      } else if (vo.type === 'ftjc') {\n        CAPIWS.callFunction(\n          { plugin: 'ftjc', name: 'load_key', arguments: [vo.cardUID] },\n          (event: MessageEvent, data: ApiResponse) => {\n            if (data.success && data.keyId) {\n              const id = data.keyId;\n              if (verifyPassword) {\n                CAPIWS.callFunction(\n                  { plugin: 'ftjc', name: 'verify_pin', arguments: [id, '1'] },\n                  (event: MessageEvent, data: ApiResponse) => {\n                    if (data.success) {\n                      success(id);\n                    } else {\n                      fail(null, data.reason || 'PIN verification failed');\n                    }\n                  },\n                  (e: unknown) => {\n                    fail(e, null);\n                  }\n                );\n              } else {\n                success(id);\n              }\n            } else {\n              fail(null, data.reason || 'Failed to load key');\n            }\n          },\n          (e: unknown) => {\n            fail(e, null);\n          }\n        );\n      }\n    }\n  },\n\n  changeKeyPassword(itemObject: CertificateInfo, success: () => void, fail: FailCallback): void {\n    if (itemObject) {\n      const vo = itemObject;\n      if (vo.type === 'pfx') {\n        CAPIWS.callFunction(\n          {\n            plugin: 'pfx',\n            name: 'load_key',\n            arguments: [vo.disk, vo.path, vo.name, vo.alias]\n          },\n          (event: MessageEvent, data: ApiResponse) => {\n            if (data.success && data.keyId) {\n              const id = data.keyId;\n              CAPIWS.callFunction(\n                { name: 'change_password', plugin: 'pfx', arguments: [id] },\n                (event: MessageEvent, data: ApiResponse) => {\n                  if (data.success) {\n                    success();\n                  } else {\n                    fail(null, data.reason || 'Failed to change password');\n                  }\n                },\n                (e: unknown) => {\n                  fail(e, null);\n                }\n              );\n            } else {\n              fail(null, data.reason || 'Failed to load key');\n            }\n          },\n          (e: unknown) => {\n            fail(e, null);\n          }\n        );\n      } else if (vo.type === 'ftjc') {\n        CAPIWS.callFunction(\n          { plugin: 'ftjc', name: 'load_key', arguments: [vo.cardUID] },\n          (event: MessageEvent, data: ApiResponse) => {\n            if (data.success && data.keyId) {\n              const id = data.keyId;\n              CAPIWS.callFunction(\n                { name: 'change_pin', plugin: 'ftjc', arguments: [id, '1'] },\n                (event: MessageEvent, data: ApiResponse) => {\n                  if (data.success) {\n                    success();\n                  } else {\n                    fail(null, data.reason || 'Failed to change PIN');\n                  }\n                },\n                (e: unknown) => {\n                  fail(e, null);\n                }\n              );\n            } else {\n              fail(null, data.reason || 'Failed to load key');\n            }\n          },\n          (e: unknown) => {\n            fail(e, null);\n          }\n        );\n      }\n    }\n  },\n\n  createPkcs7(\n    id: string,\n    data: string,\n    timestamper: any,\n    success: (pkcs7: string) => void,\n    fail: FailCallback,\n    detached?: boolean,\n    isDataBase64Encoded?: boolean\n  ): void {\n    // Note: Base64 should be imported or defined elsewhere\n    let data64: string;\n    if (isDataBase64Encoded === true) {\n      data64 = data;\n    } else {\n      // Assuming Base64 utility is available globally or imported\n      data64 =\n        (\n          globalThis as unknown as Record<string, { encode: (data: string) => string }>\n        ).Base64?.encode(data) || btoa(data);\n    }\n\n    const detachedStr = detached === true ? 'yes' : 'no';\n\n    CAPIWS.callFunction(\n      {\n        plugin: 'pkcs7',\n        name: 'create_pkcs7',\n        arguments: [data64, id, detachedStr]\n      },\n      (event: MessageEvent, data: ApiResponse) => {\n        if (data.success && data.pkcs7_64) {\n          const pkcs7 = data.pkcs7_64;\n          success(pkcs7);\n        } else {\n          fail(null, data.reason || 'Failed to create PKCS7');\n        }\n      },\n      (e: unknown) => {\n        fail(e, null);\n      }\n    );\n  },\n\n  _getX500Val(s: string, f: string): string {\n    const res = s.splitKeep(/,[A-Z]+=/g, true);\n    for (const i in res) {\n      const resItem = res[i];\n      if (resItem) {\n        const n = resItem.search((parseInt(i) > 0 ? ',' : '') + f + '=');\n        if (n !== -1) {\n          return resItem.slice(n + f.length + 1 + (parseInt(i) > 0 ? 1 : 0));\n        }\n      }\n    }\n    return '';\n  },\n\n  _findPfxs2(\n    itemIdGen: ItemIdGenerator,\n    itemUiGen: ItemUiGenerator,\n    items: any[],\n    errors: ErrorInfo[],\n    callback: (firstItemId?: string) => void\n  ): void {\n    let itmkey0: string | undefined;\n\n    CAPIWS.callFunction(\n      { plugin: 'pfx', name: 'list_all_certificates' },\n      (event: MessageEvent, data: ApiResponse) => {\n        if (data.success && data.certificates) {\n          for (const rec in data.certificates) {\n            const el = data.certificates[rec];\n            if (!el) continue;\n\n            let 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\n            const vo: CertificateInfo = {\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(\n                EIMZOClient._getX500Val(x500name_ex, 'VALIDFROM')\n                  .replace(/\\./g, '-')\n                  .replace(' ', 'T')\n              ),\n              validTo: new Date(\n                EIMZOClient._getX500Val(x500name_ex, 'VALIDTO')\n                  .replace(/\\./g, '-')\n                  .replace(' ', 'T')\n              ),\n              CN: EIMZOClient._getX500Val(x500name_ex, 'CN'),\n              TIN:\n                EIMZOClient._getX500Val(x500name_ex, 'INN') ||\n                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\n            if (!vo.TIN && !vo.PINFL) continue;\n\n            const itmkey = itemIdGen(vo, rec);\n            if (!itmkey0) {\n              itmkey0 = itmkey;\n            }\n            const itm = itemUiGen(itmkey, vo);\n            items.push(itm);\n          }\n        } else {\n          errors.push({ r: data.reason || 'Failed to list certificates' });\n        }\n        callback(itmkey0);\n      },\n      (e: unknown) => {\n        errors.push({ e: e });\n        callback(itmkey0);\n      }\n    );\n  },\n\n  _findTokens2(\n    itemIdGen: ItemIdGenerator,\n    itemUiGen: ItemUiGenerator,\n    items: any[],\n    errors: ErrorInfo[],\n    callback: (firstItemId?: string) => void\n  ): void {\n    let itmkey0: string | undefined;\n\n    CAPIWS.callFunction(\n      { plugin: 'ftjc', name: 'list_all_keys', arguments: [''] },\n      (event: MessageEvent, data: ApiResponse) => {\n        if (data.success && data.tokens) {\n          for (const rec in data.tokens) {\n            const el = data.tokens[rec];\n            if (!el) continue;\n\n            let 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\n            const vo: CertificateInfo = {\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:\n                EIMZOClient._getX500Val(x500name_ex, 'INN') ||\n                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\n            if (!vo.TIN && !vo.PINFL) continue;\n\n            const itmkey = itemIdGen(vo, rec);\n            if (!itmkey0) {\n              itmkey0 = itmkey;\n            }\n            const itm = itemUiGen(itmkey, vo);\n            items.push(itm);\n          }\n        } else {\n          errors.push({ r: data.reason || 'Failed to list tokens' });\n        }\n        callback(itmkey0);\n      },\n      (e: unknown) => {\n        errors.push({ e: e });\n        callback(itmkey0);\n      }\n    );\n  }\n};\n\nexport default EIMZOClient;\nexport { dates, type CertificateInfo, type EIMZOClientType };\n","import CAPIWS from '../e-imzo/capiws.js';\nimport type { BasePlugin, CallbackFunction, ErrorCallback, PluginMethodCall } from './types.js';\n\n/**\n * Core plugin base class that all E-IMZO plugins extend\n */\nexport abstract class EIMZOPlugin implements BasePlugin {\n  abstract readonly name: string;\n  public readonly version: string = '1.0.0';\n  public readonly description: string = '';\n\n  /**\n   * Execute a plugin method call through CAPIWS\n   */\n  protected callMethod<T = unknown>(\n    methodName: string,\n    args: unknown[] = [],\n    onSuccess: CallbackFunction<T>,\n    onError: ErrorCallback\n  ): void {\n    const call: PluginMethodCall = {\n      plugin: this.name,\n      name: methodName,\n      ...(args.length > 0 && { arguments: args })\n    };\n\n    CAPIWS.callFunction(call, onSuccess, onError);\n  }\n\n  /**\n   * Create a promise-based wrapper for plugin methods\n   */\n  protected createPromiseMethod<TArgs extends unknown[], TResult = unknown>(methodName: string) {\n    return (...args: TArgs): Promise<TResult> => {\n      return new Promise((resolve, reject) => {\n        this.callMethod<TResult>(\n          methodName,\n          args as unknown[],\n          (_event, data) => {\n            if (data.success) {\n              resolve(data as TResult);\n            } else {\n              reject(new Error(data.reason ?? 'Unknown error'));\n            }\n          },\n          error => reject(error instanceof Error ? error : new Error(String(error)))\n        );\n      });\n    };\n  }\n\n  /**\n   * Create both callback and promise versions of a method\n   */\n  protected createMethod<TArgs extends unknown[], TResult = unknown>(methodName: string) {\n    const promiseMethod = this.createPromiseMethod<TArgs, TResult>(methodName);\n\n    const callbackMethod = (...args: [...TArgs, CallbackFunction<TResult>, ErrorCallback]) => {\n      const methodArgs = args.slice(0, -2) as TArgs;\n      const onSuccess = args[args.length - 2] as CallbackFunction<TResult>;\n      const onError = args[args.length - 1] as ErrorCallback;\n\n      this.callMethod<TResult>(methodName, methodArgs as unknown[], onSuccess, onError);\n    };\n\n    return {\n      promise: promiseMethod,\n      callback: callbackMethod\n    };\n  }\n}\n\n/**\n * Plugin manager for registering and accessing plugins\n */\nexport class PluginManager {\n  private static plugins = new Map<string, EIMZOPlugin>();\n\n  static register(plugin: EIMZOPlugin): void {\n    this.plugins.set(plugin.name, plugin);\n  }\n\n  static get<T extends EIMZOPlugin>(name: string): T | undefined {\n    return this.plugins.get(name) as T;\n  }\n\n  static getAll(): EIMZOPlugin[] {\n    return Array.from(this.plugins.values());\n  }\n\n  static has(name: string): boolean {\n    return this.plugins.has(name);\n  }\n}\n\n/**\n * Decorator for auto-registering plugins\n */\nexport function RegisterPlugin<T extends new () => EIMZOPlugin>(constructor: T): T {\n  const instance = new constructor();\n  PluginManager.register(instance);\n  return constructor;\n}\n","import { EIMZOPlugin, RegisterPlugin } from '../core/plugin-base.js';\nimport type { CallbackFunction, ErrorCallback, CertificateInfo } from '../core/types.js';\n\n/**\n * Плагин для работы с электронными ключами и сертификатами\n */\n@RegisterPlugin\nexport class CertKeyPlugin extends EIMZOPlugin {\n  readonly name = 'certkey';\n  readonly description = 'Plugin for working with electronic keys and certificates';\n\n  /**\n   * Удалить загруженные ключи по идентификатору\n   */\n  unloadKey = (\n    keyId: string,\n    onSuccess: CallbackFunction<boolean>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('unload_key', [keyId], onSuccess, onError);\n  };\n\n  /**\n   * Получить список дисков\n   */\n  listDisks = (onSuccess: CallbackFunction<string[]>, onError: ErrorCallback): void => {\n    this.callMethod('list_disks', [], onSuccess, onError);\n  };\n\n  /**\n   * Получить список сертификатов пользователя\n   */\n  listCertificates = (\n    diskPath: string,\n    onSuccess: CallbackFunction<CertificateInfo[]>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('list_certificates', [diskPath], onSuccess, onError);\n  };\n\n  /**\n   * Получить список всех сертификатов пользователя\n   */\n  listAllCertificates = (\n    onSuccess: CallbackFunction<CertificateInfo[]>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('list_all_certificates', [], onSuccess, onError);\n  };\n\n  /**\n   * Загрузить ключ и получить идентификатор ключа\n   */\n  loadKey = (\n    keyPath: string,\n    password: string,\n    onSuccess: CallbackFunction<string>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('load_key', [keyPath, password], onSuccess, onError);\n  };\n}\n","import { EIMZOPlugin, RegisterPlugin } from '../core/plugin-base.js';\nimport type { CallbackFunction, ErrorCallback } from '../core/types.js';\n\n/**\n * Плагин для шифрования и дешифрования документа по алг.шифрования ГОСТ-28147, алг.обмена ключа ECDH-SHA256 в режиме P2P\n */\n@RegisterPlugin\nexport class CipherPlugin extends EIMZOPlugin {\n  readonly name = 'cipher';\n  readonly description = 'Plugin for encryption/decryption using GOST-28147 and ECDH-SHA256';\n\n  /**\n   * Создать зашифрованный документ\n   */\n  encryptDocument = (\n    data: string,\n    recipientCertificate: string,\n    senderKeyId: string,\n    onSuccess: CallbackFunction<string>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod(\n      'encrypt_document',\n      [data, recipientCertificate, senderKeyId],\n      onSuccess,\n      onError\n    );\n  };\n\n  /**\n   * Дешифровать зашифрованный документ\n   */\n  decryptDocument = (\n    encryptedData: string,\n    recipientKeyId: string,\n    onSuccess: CallbackFunction<string>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('decrypt_document', [encryptedData, recipientKeyId], onSuccess, onError);\n  };\n}\n","import { EIMZOPlugin, RegisterPlugin } from '../core/plugin-base.js';\nimport type { CallbackFunction, ErrorCallback } from '../core/types.js';\n\nexport interface CRLInfo {\n  issuer: string;\n  thisUpdate: string;\n  nextUpdate: string;\n  revokedCertificates: {\n    serialNumber: string;\n    revocationDate: string;\n    reason?: string;\n  }[];\n}\n\nexport interface CertificateStatus {\n  isRevoked: boolean;\n  revocationDate?: string;\n  reason?: string;\n}\n\n/**\n * Плагин для работы с CRL (Certificate Revocation List)\n */\n@RegisterPlugin\nexport class CRLPlugin extends EIMZOPlugin {\n  readonly name = 'crl';\n  readonly description = 'Plugin for working with Certificate Revocation Lists';\n\n  /**\n   * Открывает CRL\n   */\n  openCrl = (\n    crlData: string,\n    onSuccess: CallbackFunction<unknown>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('open_crl', [crlData], onSuccess, onError);\n  };\n\n  /**\n   * Открывает CRL из файла\n   */\n  openCrlFile = (\n    filePath: string,\n    onSuccess: CallbackFunction<unknown>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('open_crl_file', [filePath], onSuccess, onError);\n  };\n\n  /**\n   * Проверка статуса сертификата по CRL\n   */\n  checkCertificate = (\n    certificate: string,\n    crlId: string,\n    onSuccess: CallbackFunction<CertificateStatus>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('check_certificate', [certificate, crlId], onSuccess, onError);\n  };\n\n  /**\n   * Получить информацию о CRL\n   */\n  getCrlInfo = (\n    crlId: string,\n    onSuccess: CallbackFunction<CRLInfo>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('get_crl_info', [crlId], onSuccess, onError);\n  };\n\n  /**\n   * Верификация CRL\n   */\n  verifyCrl = (\n    crlId: string,\n    issuerCertificate: string,\n    onSuccess: CallbackFunction<boolean>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('verify_crl', [crlId, issuerCertificate], onSuccess, onError);\n  };\n}\n","import { EIMZOPlugin, RegisterPlugin } from '../core/plugin-base.js';\nimport type { CallbackFunction, ErrorCallback } from '../core/types.js';\n\n/**\n * Плагин для выполнения низкоуровневых криптографических преобразований\n */\n@RegisterPlugin\nexport class CryptoAuthPlugin extends EIMZOPlugin {\n  readonly name = 'cryptoauth';\n  readonly description = 'Plugin for low-level cryptographic operations';\n\n  /**\n   * Подписать данные ключем задаваемым идентификатором\n   */\n  getSignature = (\n    keyId: string,\n    data: string,\n    onSuccess: CallbackFunction<string>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('get_signature', [keyId, data], onSuccess, onError);\n  };\n\n  /**\n   * Вычислить хеш (в формате HEX) данных по алгоритму OZDST-1106-2009-2-A\n   */\n  getDigestHex = (\n    data: string,\n    onSuccess: CallbackFunction<string>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('get_digest_hex', [data], onSuccess, onError);\n  };\n\n  /**\n   * Верифицировать подпись данных сертификатом\n   */\n  verifySignatureWithCertificate = (\n    data: string,\n    signature: string,\n    certificate: string,\n    onSuccess: CallbackFunction<boolean>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod(\n      'verify_signature_with_certificate',\n      [data, signature, certificate],\n      onSuccess,\n      onError\n    );\n  };\n\n  /**\n   * Верифицировать подпись хеша (в формате HEX) ключем задаваемым идентификатором\n   */\n  verifyDigestHexSignatureWithId = (\n    digestHex: string,\n    signature: string,\n    keyId: string,\n    onSuccess: CallbackFunction<boolean>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod(\n      'verify_digest_hex_signature_with_id',\n      [digestHex, signature, keyId],\n      onSuccess,\n      onError\n    );\n  };\n\n  /**\n   * Подписать хеш (в формате HEX) ключем задаваемым идентификатором\n   */\n  getDigestHexSignature = (\n    digestHex: string,\n    keyId: string,\n    onSuccess: CallbackFunction<string>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('get_digest_hex_signature', [digestHex, keyId], onSuccess, onError);\n  };\n\n  /**\n   * Верифицировать подпись данных ключем задаваемым идентификатором\n   */\n  verifySignatureWithId = (\n    data: string,\n    signature: string,\n    keyId: string,\n    onSuccess: CallbackFunction<boolean>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('verify_signature_with_id', [data, signature, keyId], onSuccess, onError);\n  };\n\n  /**\n   * Верифицировать подпись хеша (в формате HEX) сертификатом\n   */\n  verifyDigestHexSignatureWithCertificate = (\n    digestHex: string,\n    signature: string,\n    certificate: string,\n    onSuccess: CallbackFunction<boolean>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod(\n      'verify_digest_hex_signature_with_certificate',\n      [digestHex, signature, certificate],\n      onSuccess,\n      onError\n    );\n  };\n}\n","import { EIMZOPlugin, RegisterPlugin } from '../core/plugin-base.js';\nimport type { CallbackFunction, ErrorCallback } from '../core/types.js';\n\n/**\n * Плагин для работы с файлами\n */\n@RegisterPlugin\nexport class FileIOPlugin extends EIMZOPlugin {\n  readonly name = 'fileio';\n  readonly description = 'Plugin for file input/output operations';\n\n  /**\n   * Загруить файл\n   */\n  loadFile = (\n    filePath: string,\n    onSuccess: CallbackFunction<string>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('load_file', [filePath], onSuccess, onError);\n  };\n\n  /**\n   * Записать содержимое zip файла на диск\n   */\n  writeFile = (\n    zipContent: string,\n    destinationPath: string,\n    onSuccess: CallbackFunction<boolean>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('write_file', [zipContent, destinationPath], onSuccess, onError);\n  };\n}\n","import { EIMZOPlugin, RegisterPlugin } from '../core/plugin-base';\nimport type { TokenInfo, KeyResponse, CallbackFunction, ErrorCallback } from '../core/types';\n\n// FTJC-specific response types\nexport interface FtjcTokenInfo extends TokenInfo {\n  cardUID: string;\n  statusInfo: string;\n  ownerName: string;\n  info: string;\n}\n\nexport interface FtjcListResponse {\n  success: true;\n  tokens: FtjcTokenInfo[];\n}\n\nexport interface UserDataResponse {\n  success: true;\n  data_64: string;\n}\n\nexport interface RandomDataResponse {\n  success: true;\n  random_64: string;\n}\n\n/**\n * FTJC Plugin for working with USB FT Javacard tokens\n */\n@RegisterPlugin\nexport class FtjcPlugin extends EIMZOPlugin {\n  readonly name = 'ftjc';\n  readonly description = 'Plugin for working with USB FT Javacard tokens - STUB';\n\n  // Callback-based methods\n\n  /**\n   * Get list of all keys from connected tokens\n   */\n  listAllKeys = (\n    exceptCards = '',\n    onSuccess: CallbackFunction<FtjcListResponse>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('list_all_keys', [exceptCards], onSuccess, onError);\n  };\n\n  /**\n   * Get list of tokens\n   */\n  listTokens = (onSuccess: CallbackFunction<FtjcListResponse>, onError: ErrorCallback): void => {\n    this.callMethod('list_tokens', [], onSuccess, onError);\n  };\n\n  /**\n   * Load key and get key identifier\n   */\n  loadKey = (\n    cardUID: string,\n    onSuccess: CallbackFunction<KeyResponse>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('load_key', [cardUID], onSuccess, onError);\n  };\n\n  /**\n   * Unload key by identifier\n   */\n  unloadKey = (\n    tokenId: string,\n    onSuccess: CallbackFunction<{ success: true }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('unload_key', [tokenId], onSuccess, onError);\n  };\n\n  /**\n   * Verify PIN code of token\n   * @param pinType 0 - Initialization, 1 - User, 2 - Reset\n   */\n  verifyPin = (\n    tokenId: string,\n    pinType: '0' | '1' | '2',\n    onSuccess: CallbackFunction<{ success: true }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('verify_pin', [tokenId, pinType], onSuccess, onError);\n  };\n\n  /**\n   * Change PIN code of token\n   * @param pinType 0 - Initialization, 1 - User, 2 - Reset\n   */\n  changePin = (\n    tokenId: string,\n    pinType: '0' | '1' | '2',\n    onSuccess: CallbackFunction<{ success: true }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('change_pin', [tokenId, pinType], onSuccess, onError);\n  };\n\n  /**\n   * Set name for USB token\n   */\n  setName = (\n    tokenId: string,\n    name: string,\n    onSuccess: CallbackFunction<{ success: true }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('set_name', [tokenId, name], onSuccess, onError);\n  };\n\n  /**\n   * Store certificates in USB token\n   */\n  storeCertificates = (\n    tokenId: string,\n    subjectCertificate64: string,\n    caCertificate64: string,\n    rootCertificate64: string,\n    onSuccess: CallbackFunction<{ success: true }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod(\n      'store_certificates',\n      [tokenId, subjectCertificate64, caCertificate64, rootCertificate64],\n      onSuccess,\n      onError\n    );\n  };\n\n  /**\n   * Get user data from token\n   */\n  getUserData = (\n    tokenId: string,\n    onSuccess: CallbackFunction<UserDataResponse>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('get_user_data', [tokenId], onSuccess, onError);\n  };\n\n  /**\n   * Set or delete user data in token\n   * @param data64 Data in BASE64 encoding or empty string to delete\n   */\n  setUserData = (\n    tokenId: string,\n    data64: string,\n    onSuccess: CallbackFunction<{ success: true }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('set_user_data', [tokenId, data64], onSuccess, onError);\n  };\n\n  /**\n   * Generate random data in USB token\n   */\n  getRandomData = (\n    tokenId: string,\n    onSuccess: CallbackFunction<RandomDataResponse>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('get_random_data', [tokenId], onSuccess, onError);\n  };\n\n  /**\n   * Install applet in USB token\n   */\n  installApplet = (\n    cardUID: string,\n    applet64: string,\n    signatureHex: string,\n    onSuccess: CallbackFunction<{ success: true }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('install_applet', [cardUID, applet64, signatureHex], onSuccess, onError);\n  };\n\n  // Promise-based methods\n\n  /**\n   * List all keys (Promise version)\n   */\n  listAllKeysAsync = this.createPromiseMethod<[string?], FtjcListResponse>('list_all_keys');\n\n  /**\n   * List tokens (Promise version)\n   */\n  listTokensAsync = this.createPromiseMethod<[], FtjcListResponse>('list_tokens');\n\n  /**\n   * Load key (Promise version)\n   */\n  loadKeyAsync = this.createPromiseMethod<[string], KeyResponse>('load_key');\n\n  /**\n   * Unload key (Promise version)\n   */\n  unloadKeyAsync = this.createPromiseMethod<[string], { success: true }>('unload_key');\n\n  /**\n   * Verify PIN (Promise version)\n   */\n  verifyPinAsync = this.createPromiseMethod<[string, '0' | '1' | '2'], { success: true }>(\n    'verify_pin'\n  );\n\n  /**\n   * Change PIN (Promise version)\n   */\n  changePinAsync = this.createPromiseMethod<[string, '0' | '1' | '2'], { success: true }>(\n    'change_pin'\n  );\n\n  /**\n   * Set name (Promise version)\n   */\n  setNameAsync = this.createPromiseMethod<[string, string], { success: true }>('set_name');\n\n  /**\n   * Store certificates (Promise version)\n   */\n  storeCertificatesAsync = this.createPromiseMethod<\n    [string, string, string, string],\n    { success: true }\n  >('store_certificates');\n\n  /**\n   * Get user data (Promise version)\n   */\n  getUserDataAsync = this.createPromiseMethod<[string], UserDataResponse>('get_user_data');\n\n  /**\n   * Set user data (Promise version)\n   */\n  setUserDataAsync = this.createPromiseMethod<[string, string], { success: true }>('set_user_data');\n\n  /**\n   * Get random data (Promise version)\n   */\n  getRandomDataAsync = this.createPromiseMethod<[string], RandomDataResponse>('get_random_data');\n\n  /**\n   * Install applet (Promise version)\n   */\n  installAppletAsync = this.createPromiseMethod<[string, string, string], { success: true }>(\n    'install_applet'\n  );\n}\n\n// Export singleton instance\nexport const ftjcPlugin = new FtjcPlugin();\n","import { EIMZOPlugin, RegisterPlugin } from '../core/plugin-base.js';\nimport type { CallbackFunction, ErrorCallback, CertificateInfo } from '../core/types.js';\n\nexport interface ReaderInfo {\n  name: string;\n  connected: boolean;\n  cardPresent: boolean;\n}\n\n/**\n * Плагин для работы с ID-card E-IMZO\n */\n@RegisterPlugin\nexport class IDCardPlugin extends EIMZOPlugin {\n  readonly name = 'idcard';\n  readonly description = 'Plugin for working with E-IMZO ID cards';\n\n  /**\n   * Проверить пароль хранилища ключей (заглушка)\n   */\n  verifyPassword = (\n    password: string,\n    onSuccess: CallbackFunction<boolean>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('verify_password', [password], onSuccess, onError);\n  };\n\n  /**\n   * Персонализировать ID-карту записав новые сертификаты и установив PIN-код\n   */\n  personalize = (\n    certificates: string[],\n    pinCode: string,\n    onSuccess: CallbackFunction<boolean>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('personalize', [certificates, pinCode], onSuccess, onError);\n  };\n\n  /**\n   * Получить список считывателей\n   */\n  listReaders = (onSuccess: CallbackFunction<ReaderInfo[]>, onError: ErrorCallback): void => {\n    this.callMethod('list_readers', [], onSuccess, onError);\n  };\n\n  /**\n   * Получить список всех сертификатов пользователя (заглушка)\n   */\n  listAllCertificates = (\n    onSuccess: CallbackFunction<CertificateInfo[]>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('list_all_certificates', [], onSuccess, onError);\n  };\n\n  /**\n   * Получить зашифрованный и подписанный заводской номер USB-токена\n   */\n  getEncryptedSignedCplc = (onSuccess: CallbackFunction<string>, onError: ErrorCallback): void => {\n    this.callMethod('get_encrypted_signed_cplc', [], onSuccess, onError);\n  };\n\n  /**\n   * Загрузить ключ и получить идентификатор ключа. Ключ будет доступен определенное время (заглушка)\n   */\n  loadKey = (\n    cardIndex: number,\n    password: string,\n    onSuccess: CallbackFunction<string>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('load_key', [cardIndex, password], onSuccess, onError);\n  };\n}\n","import { EIMZOPlugin, RegisterPlugin } from '../core/plugin-base';\nimport type {\n  CertificateInfo,\n  KeyResponse,\n  ListResponse,\n  CallbackFunction,\n  ErrorCallback\n} from '../core/types';\n\n// PFX-specific response types\nexport interface PfxCertificate extends CertificateInfo {\n  disk: string;\n  path: string;\n  name: string;\n  alias: string;\n}\n\nexport interface PfxListResponse extends ListResponse<PfxCertificate> {\n  certificates: PfxCertificate[];\n}\n\nexport interface DiskInfo {\n  name: string;\n  label?: string;\n  available: boolean;\n}\n\n/**\n * PFX Plugin for working with PFX key storage files\n */\n@RegisterPlugin\nexport class PfxPlugin extends EIMZOPlugin {\n  readonly name = 'pfx';\n  readonly description = 'Plugin for working with PFX key storage files';\n\n  // Callback-based methods\n\n  /**\n   * Get list of available disks\n   */\n  listDisks = (\n    onSuccess: CallbackFunction<{ disks: DiskInfo[] }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('list_disks', [], onSuccess, onError);\n  };\n\n  /**\n   * Get list of certificates from specific disk\n   */\n  listCertificates = (\n    disk: string,\n    onSuccess: CallbackFunction<PfxListResponse>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('list_certificates', [disk], onSuccess, onError);\n  };\n\n  /**\n   * Get list of all certificates from all disks\n   */\n  listAllCertificates = (\n    onSuccess: CallbackFunction<PfxListResponse>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('list_all_certificates', [], onSuccess, onError);\n  };\n\n  /**\n   * Load key and get key identifier\n   */\n  loadKey = (\n    disk: string,\n    path: string,\n    name: string,\n    alias: string,\n    onSuccess: CallbackFunction<KeyResponse>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('load_key', [disk, path, name, alias], onSuccess, onError);\n  };\n\n  /**\n   * Unload key by identifier\n   */\n  unloadKey = (\n    keyId: string,\n    onSuccess: CallbackFunction<{ success: true }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('unload_key', [keyId], onSuccess, onError);\n  };\n\n  /**\n   * Verify password for key storage\n   */\n  verifyPassword = (\n    keyId: string,\n    onSuccess: CallbackFunction<{ success: true }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('verify_password', [keyId], onSuccess, onError);\n  };\n\n  /**\n   * Change password for key storage\n   */\n  changePassword = (\n    keyId: string,\n    onSuccess: CallbackFunction<{ success: true }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('change_password', [keyId], onSuccess, onError);\n  };\n\n  /**\n   * Save key pair and certificates to new PFX file\n   */\n  savePfx = (\n    disk: string,\n    path: string,\n    name: string,\n    alias: string,\n    id: string,\n    newKeyPassword: string,\n    subjectCertificate64: string,\n    caCertificate64: string,\n    rootCertificate64: string,\n    onSuccess: CallbackFunction<{ success: true }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod(\n      'save_pfx',\n      [\n        disk,\n        path,\n        name,\n        alias,\n        id,\n        newKeyPassword,\n        subjectCertificate64,\n        caCertificate64,\n        rootCertificate64\n      ],\n      onSuccess,\n      onError\n    );\n  };\n\n  /**\n   * Save temporary PFX with self-signed certificate\n   */\n  saveTemporaryPfx = (\n    disk: string,\n    path: string,\n    name: string,\n    alias: string,\n    id: string,\n    password: string,\n    subjectX500Name: string,\n    onSuccess: CallbackFunction<{ success: true }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod(\n      'save_temporary_pfx',\n      [disk, path, name, alias, id, password, subjectX500Name],\n      onSuccess,\n      onError\n    );\n  };\n\n  // Promise-based methods\n\n  /**\n   * Get list of available disks (Promise version)\n   */\n  listDisksAsync = this.createPromiseMethod<[], { disks: DiskInfo[] }>('list_disks');\n\n  /**\n   * Get list of certificates from specific disk (Promise version)\n   */\n  listCertificatesAsync = this.createPromiseMethod<[string], PfxListResponse>('list_certificates');\n\n  /**\n   * Get list of all certificates (Promise version)\n   */\n  listAllCertificatesAsync = this.createPromiseMethod<[], PfxListResponse>('list_all_certificates');\n\n  /**\n   * Load key (Promise version)\n   */\n  loadKeyAsync = this.createPromiseMethod<[string, string, string, string], KeyResponse>(\n    'load_key'\n  );\n\n  /**\n   * Unload key (Promise version)\n   */\n  unloadKeyAsync = this.createPromiseMethod<[string], { success: true }>('unload_key');\n\n  /**\n   * Verify password (Promise version)\n   */\n  verifyPasswordAsync = this.createPromiseMethod<[string], { success: true }>('verify_password');\n\n  /**\n   * Change password (Promise version)\n   */\n  changePasswordAsync = this.createPromiseMethod<[string], { success: true }>('change_password');\n\n  /**\n   * Save PFX (Promise version)\n   */\n  savePfxAsync = this.createPromiseMethod<\n    [string, string, string, string, string, string, string, string, string],\n    { success: true }\n  >('save_pfx');\n\n  /**\n   * Save temporary PFX (Promise version)\n   */\n  saveTemporaryPfxAsync = this.createPromiseMethod<\n    [string, string, string, string, string, string, string],\n    { success: true }\n  >('save_temporary_pfx');\n}\n\n// Export singleton instance\nexport const pfxPlugin = new PfxPlugin();\n","import { EIMZOPlugin, RegisterPlugin } from '../core/plugin-base.js';\nimport type { CallbackFunction, ErrorCallback } from '../core/types.js';\n\nexport interface PKCS10Info {\n  subject: string;\n  publicKey: string;\n  signatureAlgorithm: string;\n  [key: string]: unknown;\n}\n\nexport interface KeyPairInfo {\n  privateKeyId: string;\n  publicKey: string;\n}\n\n/**\n * Плагин для генерации ключевой пары и формирования запроса на сертификат формата PKCS#10\n */\n@RegisterPlugin\nexport class PKCS10Plugin extends EIMZOPlugin {\n  readonly name = 'pkcs10';\n  readonly description = 'Plugin for generating key pairs and PKCS#10 certificate requests';\n\n  /**\n   * Формировать запрос на сертификат формата PKCS#10 из существующего ключа\n   */\n  createPkcs10FromKey = (\n    keyId: string,\n    subject: string,\n    onSuccess: CallbackFunction<string>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('create_pkcs10_from_key', [keyId, subject], onSuccess, onError);\n  };\n\n  /**\n   * Сгенерировать ключевую пару\n   */\n  generateKeypair = (\n    keySize: number,\n    onSuccess: CallbackFunction<KeyPairInfo>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('generate_keypair', [keySize], onSuccess, onError);\n  };\n\n  /**\n   * Формировать запрос на сертификат формата PKCS#10\n   */\n  createPkcs10 = (\n    subject: string,\n    keySize: number,\n    onSuccess: CallbackFunction<string>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('create_pkcs10', [subject, keySize], onSuccess, onError);\n  };\n\n  /**\n   * Получить информацию о запросе PKCS#10\n   */\n  getPkcs10Info = (\n    pkcs10: string,\n    onSuccess: CallbackFunction<PKCS10Info>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('get_pkcs10_info', [pkcs10], onSuccess, onError);\n  };\n}\n","import { EIMZOPlugin, RegisterPlugin } from '../core/plugin-base';\nimport type { CallbackFunction, ErrorCallback } from '../core/types';\n\n// PKCS7-specific response types\nexport interface Pkcs7Response {\n  success: true;\n  pkcs7_64: string;\n}\n\nexport interface Pkcs7InfoResponse {\n  success: boolean;\n  signatures: {\n    signer: string;\n    timestamp?: string;\n    valid: boolean;\n  }[];\n}\n\nexport interface TimestampTokenResponse {\n  success: true;\n  timestamp_token_64: string;\n}\n\n/**\n * PKCS7 Plugin for working with PKCS#7/CMS format\n */\n@RegisterPlugin\nexport class Pkcs7Plugin extends EIMZOPlugin {\n  readonly name = 'pkcs7';\n  readonly description = 'Plugin for working with PKCS#7/CMS format';\n\n  // Callback-based methods\n\n  /**\n   * Create PKCS#7/CMS document by signing with key\n   */\n  createPkcs7 = (\n    data64: string,\n    keyId: string,\n    detached: 'yes' | 'no' | '' = '',\n    onSuccess: CallbackFunction<Pkcs7Response>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('create_pkcs7', [data64, keyId, detached], onSuccess, onError);\n  };\n\n  /**\n   * Get full information about PKCS#7/CMS document (attached)\n   */\n  getPkcs7AttachedInfo = (\n    pkcs764: string,\n    trustStoreId = '',\n    onSuccess: CallbackFunction<Pkcs7InfoResponse>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('get_pkcs7_attached_info', [pkcs764, trustStoreId], onSuccess, onError);\n  };\n\n  /**\n   * Get full information about PKCS#7/CMS document (detached)\n   */\n  getPkcs7DetachedInfo = (\n    data64: string,\n    pkcs764: string,\n    trustStoreId = '',\n    onSuccess: CallbackFunction<Pkcs7InfoResponse>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('get_pkcs7_detached_info', [data64, pkcs764, trustStoreId], onSuccess, onError);\n  };\n\n  /**\n   * Verify PKCS#7/CMS document (attached) - STUB\n   */\n  verifyPkcs7Attached = (\n    pkcs764: string,\n    trustStoreId: string,\n    requesterId = '',\n    onSuccess: CallbackFunction<{ success: true; valid: boolean }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod(\n      'verify_pkcs7_attached',\n      [pkcs764, trustStoreId, requesterId],\n      onSuccess,\n      onError\n    );\n  };\n\n  /**\n   * Verify PKCS#7/CMS document (detached) - STUB\n   */\n  verifyPkcs7Detached = (\n    data64: string,\n    pkcs764: string,\n    trustStoreId: string,\n    requesterId = '',\n    onSuccess: CallbackFunction<{ success: true; valid: boolean }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod(\n      'verify_pkcs7_detached',\n      [data64, pkcs764, trustStoreId, requesterId],\n      onSuccess,\n      onError\n    );\n  };\n\n  /**\n   * Verify PKCS#7/CMS document with CRL (attached) - STUB\n   */\n  verifyPkcs7AttachedCrl = (\n    pkcs764: string,\n    trustStoreId: string,\n    crlId: string,\n    onSuccess: CallbackFunction<{ success: true; valid: boolean }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod(\n      'verify_pkcs7_attached_crl',\n      [pkcs764, trustStoreId, crlId],\n      onSuccess,\n      onError\n    );\n  };\n\n  /**\n   * Verify PKCS#7/CMS document with CRL (detached) - STUB\n   */\n  verifyPkcs7DetachedCrl = (\n    data64: string,\n    pkcs764: string,\n    trustStoreId: string,\n    crlId: string,\n    onSuccess: CallbackFunction<{ success: true; valid: boolean }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod(\n      'verify_pkcs7_detached_crl',\n      [data64, pkcs764, trustStoreId, crlId],\n      onSuccess,\n      onError\n    );\n  };\n\n  /**\n   * Attach timestamp token to PKCS#7/CMS document - STUB\n   */\n  attachTimestampTokenPkcs7 = (\n    pkcs764: string,\n    signerSerialNumber: string,\n    timestampToken64: string,\n    onSuccess: CallbackFunction<Pkcs7Response>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod(\n      'attach_timestamp_token_pkcs7',\n      [pkcs764, signerSerialNumber, timestampToken64],\n      onSuccess,\n      onError\n    );\n  };\n\n  /**\n   * Add signature to existing PKCS#7/CMS document (attached) - DEPRECATED\n   */\n  appendPkcs7Attached = (\n    pkcs764: string,\n    keyId: string,\n    onSuccess: CallbackFunction<Pkcs7Response>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('append_pkcs7_attached', [pkcs764, keyId], onSuccess, onError);\n  };\n\n  /**\n   * Add signature to existing PKCS#7/CMS document (detached) - DEPRECATED\n   */\n  appendPkcs7Detached = (\n    data64: string,\n    pkcs764: string,\n    keyId: string,\n    onSuccess: CallbackFunction<Pkcs7Response>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('append_pkcs7_detached', [data64, pkcs764, keyId], onSuccess, onError);\n  };\n\n  // Promise-based methods\n\n  /**\n   * Create PKCS#7/CMS document (Promise version)\n   */\n  createPkcs7Async = this.createPromiseMethod<\n    [string, string, ('yes' | 'no' | '')?],\n    Pkcs7Response\n  >('create_pkcs7');\n\n  /**\n   * Get PKCS#7 attached info (Promise version)\n   */\n  getPkcs7AttachedInfoAsync = this.createPromiseMethod<[string, string?], Pkcs7InfoResponse>(\n    'get_pkcs7_attached_info'\n  );\n\n  /**\n   * Get PKCS#7 detached info (Promise version)\n   */\n  getPkcs7DetachedInfoAsync = this.createPromiseMethod<\n    [string, string, string?],\n    Pkcs7InfoResponse\n  >('get_pkcs7_detached_info');\n\n  /**\n   * Verify PKCS#7 attached (Promise version)\n   */\n  verifyPkcs7AttachedAsync = this.createPromiseMethod<\n    [string, string, string?],\n    { success: true; valid: boolean }\n  >('verify_pkcs7_attached');\n\n  /**\n   * Verify PKCS#7 detached (Promise version)\n   */\n  verifyPkcs7DetachedAsync = this.createPromiseMethod<\n    [string, string, string, string?],\n    { success: true; valid: boolean }\n  >('verify_pkcs7_detached');\n\n  /**\n   * Attach timestamp token (Promise version)\n   */\n  attachTimestampTokenPkcs7Async = this.createPromiseMethod<\n    [string, string, string],\n    Pkcs7Response\n  >('attach_timestamp_token_pkcs7');\n}\n\n// Export singleton instance\nexport const pkcs7Plugin = new Pkcs7Plugin();\n","import { EIMZOPlugin, RegisterPlugin } from '../core/plugin-base.js';\nimport type { CallbackFunction, ErrorCallback } from '../core/types.js';\n\n/**\n * Плагин для взаимодейтвия с ИОК (инфраструктура открытых ключей)\n */\n@RegisterPlugin\nexport class PKIPlugin extends EIMZOPlugin {\n  readonly name = 'pki';\n  readonly description = 'Plugin for PKI (Public Key Infrastructure) interaction';\n\n  /**\n   * Шаг №1 для получения ключа PFX\n   */\n  enrollPfxStep1 = (\n    request: string,\n    onSuccess: CallbackFunction<unknown>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('enroll_pfx_step1', [request], onSuccess, onError);\n  };\n\n  /**\n   * Шаг №2 для получения ключа PFX\n   */\n  enrollPfxStep2 = (\n    response: string,\n    onSuccess: CallbackFunction<unknown>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('enroll_pfx_step2', [response], onSuccess, onError);\n  };\n}\n","import { EIMZOPlugin, RegisterPlugin } from '../core/plugin-base.js';\nimport type { CallbackFunction, ErrorCallback } from '../core/types.js';\n\n/**\n * Плагин для работы с хранилищами доверенных сертификатов формата JKS\n */\n@RegisterPlugin\nexport class TruststoreJKSPlugin extends EIMZOPlugin {\n  readonly name = 'truststore-jks';\n  readonly description = 'Plugin for working with JKS trust stores';\n\n  /**\n   * Открывает хранилище доверенных сертификатов 'truststore.jks' в домашней директории пользователя\n   */\n  openTruststore = (onSuccess: CallbackFunction<unknown>, onError: ErrorCallback): void => {\n    this.callMethod('open_truststore', [], onSuccess, onError);\n  };\n\n  // Promise-based methods\n\n  /**\n   * Открывает хранилище доверенных сертификатов 'truststore.jks' в домашней директории пользователя\n   */\n  async openTruststoreAsync(): Promise<unknown> {\n    return new Promise((resolve, reject) => {\n      this.openTruststore(\n        (event, data) => {\n          if (data.success) {\n            resolve(data);\n          } else {\n            reject(new Error(data.reason ?? 'Unknown error'));\n          }\n        },\n        error => reject(new Error(String(error)))\n      );\n    });\n  }\n}\n","import { EIMZOPlugin, RegisterPlugin } from '../core/plugin-base.js';\nimport type { CallbackFunction, ErrorCallback, CertificateInfo } from '../core/types.js';\n\n/**\n * Плагин для работы с хранилищами доверенных сертификатов\n */\n@RegisterPlugin\nexport class TruststorePlugin extends EIMZOPlugin {\n  readonly name = 'truststore';\n  readonly description = 'Plugin for working with trust stores';\n\n  /**\n   * Получить список доверенных сертификатов (ЗАГЛУШКА)\n   */\n  listTruststore = (\n    onSuccess: CallbackFunction<CertificateInfo[]>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('list_truststore', [], onSuccess, onError);\n  };\n}\n","import { EIMZOPlugin, RegisterPlugin } from '../core/plugin-base.js';\nimport type { CallbackFunction, ErrorCallback } from '../core/types.js';\n\nexport interface TimestampTokenInfo {\n  timestamp: string;\n  tsaName: string;\n  serialNumber: string;\n  messageImprint: string;\n  policy?: string;\n}\n\n/**\n * Плагин для работы с токенами штампов времени\n */\n@RegisterPlugin\nexport class TSAClientPlugin extends EIMZOPlugin {\n  readonly name = 'tsaclient';\n  readonly description = 'Plugin for working with timestamp tokens';\n\n  /**\n   * Получить запрос на получения токена штампа времени для данных\n   */\n  getTimestampTokenRequestForData = (\n    data: string,\n    onSuccess: CallbackFunction<string>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('get_timestamp_token_request_for_data', [data], onSuccess, onError);\n  };\n\n  /**\n   * Получить токен штампа времени на подпись от службы штампов времени по веб-ссылке\n   */\n  getTimestampTokenForSignature = (\n    signature: string,\n    tsaUrl: string,\n    onSuccess: CallbackFunction<string>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('get_timestamp_token_for_signature', [signature, tsaUrl], onSuccess, onError);\n  };\n\n  /**\n   * Получить токен штампа времени на данные от службы штампов времени по веб-ссылке\n   */\n  getTimestampTokenForData = (\n    data: string,\n    tsaUrl: string,\n    onSuccess: CallbackFunction<string>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('get_timestamp_token_for_data', [data, tsaUrl], onSuccess, onError);\n  };\n\n  /**\n   * Получить информацию о токене штампа времени\n   */\n  getTimestampTokenInfo = (\n    token: string,\n    onSuccess: CallbackFunction<TimestampTokenInfo>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('get_timestamp_token_info', [token], onSuccess, onError);\n  };\n\n  /**\n   * Получить запрос на получения токена штампа времени для подписи\n   */\n  getTimestampTokenRequestForSignature = (\n    signature: string,\n    onSuccess: CallbackFunction<string>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('get_timestamp_token_request_for_signature', [signature], onSuccess, onError);\n  };\n}\n","import { EIMZOPlugin, RegisterPlugin } from '../core/plugin-base.js';\nimport type { CallbackFunction, ErrorCallback } from '../core/types.js';\n\n/**\n * Плагин для установки зашифрованного соединения с сервером по алг.шифрования ГОСТ-28147\n */\n@RegisterPlugin\nexport class TunnelPlugin extends EIMZOPlugin {\n  readonly name = 'tunnel';\n  readonly description = 'Plugin for establishing encrypted connections using GOST-28147';\n\n  /**\n   * Создать зашифрованного соединения с сервером и вернуть TCP-порт для приема/передачи данных\n   */\n  createTunnel = (\n    serverHost: string,\n    serverPort: number,\n    keyId: string,\n    onSuccess: CallbackFunction<{ port: number }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('create_tunnel', [serverHost, serverPort, keyId], onSuccess, onError);\n  };\n\n  // Promise-based wrapper (если нужен)\n  async createTunnelAsync(serverHost: string, serverPort: number, keyId: string): Promise<unknown> {\n    return new Promise((resolve, reject) => {\n      this.createTunnel(\n        serverHost,\n        serverPort,\n        keyId,\n        (event, data) => {\n          if (data.success) {\n            resolve(data);\n          } else {\n            reject(new Error(data.reason ?? 'Unknown error'));\n          }\n        },\n        error => reject(new Error(String(error)))\n      );\n    });\n  }\n}\n","import { EIMZOPlugin, RegisterPlugin } from '../core/plugin-base.js';\nimport type { CallbackFunction, ErrorCallback, CertificateInfo } from '../core/types.js';\n\n/**\n * Плагин для работы с сертификатами X.509\n */\n@RegisterPlugin\nexport class X509Plugin extends EIMZOPlugin {\n  readonly name = 'x509';\n  readonly description = 'Plugin for working with X.509 certificates';\n\n  /**\n   * Верификация подписи сертификата субъектка сертификатом издателя\n   */\n  verifyCertificate = (\n    subjectCert: string,\n    issuerCert: string,\n    onSuccess: CallbackFunction<boolean>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('verify_certificate', [subjectCert, issuerCert], onSuccess, onError);\n  };\n\n  /**\n   * Получить цепочку сертификатов в кодировке BASE64 по идентификатору ключа\n   */\n  getCertificateChain = (\n    keyId: string,\n    onSuccess: CallbackFunction<string[]>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('get_certificate_chain', [keyId], onSuccess, onError);\n  };\n\n  /**\n   * Получить информацию о сертификате\n   */\n  getCertificateInfo = (\n    certificate: string,\n    onSuccess: CallbackFunction<CertificateInfo>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('get_certificate_info', [certificate], onSuccess, onError);\n  };\n}\n","import { EIMZOPlugin, RegisterPlugin } from '../core/plugin-base.js';\nimport type { CallbackFunction, ErrorCallback, CertificateInfo } from '../core/types.js';\n\nexport interface DiskInfo {\n  name: string;\n  path: string;\n  available: boolean;\n}\n\n/**\n * Плагин для работы с файлами хранилища ключей формата YTKS\n */\n@RegisterPlugin\nexport class YTKSPlugin extends EIMZOPlugin {\n  readonly name = 'ytks';\n  readonly description = 'Plugin for working with YTKS key storage files';\n\n  /**\n   * Удалить загруженные ключи по идентификатору\n   */\n  unloadKey = (\n    keyId: string,\n    onSuccess: CallbackFunction<boolean>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('unload_key', [keyId], onSuccess, onError);\n  };\n\n  /**\n   * Изменить пароль хранилища ключей\n   */\n  changePassword = (\n    disk: string,\n    path: string,\n    name: string,\n    oldPassword: string,\n    newPassword: string,\n    onSuccess: CallbackFunction<boolean>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod(\n      'change_password',\n      [disk, path, name, oldPassword, newPassword],\n      onSuccess,\n      onError\n    );\n  };\n\n  /**\n   * Получить список дисков\n   */\n  listDisks = (\n    onSuccess: CallbackFunction<{ disks: DiskInfo[] }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('list_disks', [], onSuccess, onError);\n  };\n\n  /**\n   * Получить список сертификатов пользователя\n   */\n  listCertificates = (\n    disk: string,\n    onSuccess: CallbackFunction<{ certificates: CertificateInfo[] }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('list_certificates', [disk], onSuccess, onError);\n  };\n\n  /**\n   * Проверить пароль хранилища ключей\n   */\n  verifyPassword = (\n    disk: string,\n    path: string,\n    name: string,\n    password: string,\n    onSuccess: CallbackFunction<boolean>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('verify_password', [disk, path, name, password], onSuccess, onError);\n  };\n\n  /**\n   * Получить список всех сертификатов пользователя\n   */\n  listAllCertificates = (\n    onSuccess: CallbackFunction<{ certificates: CertificateInfo[] }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('list_all_certificates', [], onSuccess, onError);\n  };\n\n  /**\n   * Загрузить ключ и получить идентификатор ключа\n   */\n  loadKey = (\n    disk: string,\n    path: string,\n    name: string,\n    alias: string,\n    onSuccess: CallbackFunction<{ keyId: string }>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod('load_key', [disk, path, name, alias], onSuccess, onError);\n  };\n\n  /**\n   * Сохранить ключевую пару или существующий ключ и новые сертификаты в новый файл формата YTKS\n   */\n  saveYtks = (\n    disk: string,\n    path: string,\n    name: string,\n    password: string,\n    keyId: string,\n    certificates: string[],\n    onSuccess: CallbackFunction<boolean>,\n    onError: ErrorCallback\n  ): void => {\n    this.callMethod(\n      'save_ytks',\n      [disk, path, name, password, keyId, certificates],\n      onSuccess,\n      onError\n    );\n  };\n}\n","import { PluginManager, type EIMZOPlugin } from './core/plugin-base.js';\nimport EIMZOClient from './e-imzo-client.js';\nimport CAPIWS from './e-imzo/capiws.js';\n\n// Type definitions for E-IMZO API responses\ninterface VersionResponse {\n  success: boolean;\n  major: string;\n  minor: string;\n  reason?: string;\n}\n\ninterface ApiResponse {\n  success: boolean;\n  reason?: string;\n  [key: string]: unknown;\n}\n\n// Import all plugins to ensure they're registered\nimport './plugins/certkey.js';\nimport './plugins/cipher.js';\nimport './plugins/crl.js';\nimport './plugins/cryptoauth.js';\nimport './plugins/fileio.js';\nimport './plugins/ftjc.js';\nimport './plugins/idcard.js';\nimport './plugins/pfx.js';\nimport './plugins/pkcs10.js';\nimport './plugins/pkcs7.js';\nimport './plugins/pki.js';\nimport './plugins/truststore-jks.js';\nimport './plugins/truststore.js';\nimport './plugins/tsaclient.js';\nimport './plugins/tunnel.js';\nimport './plugins/x509.js';\nimport './plugins/ytks.js';\n\n// Re-export plugin instances for direct access\nexport { ftjcPlugin } from './plugins/ftjc';\nexport { pfxPlugin } from './plugins/pfx';\nexport { pkcs7Plugin } from './plugins/pkcs7';\n// Note: cryptoauth and other plugins use class-based registration, instances available via PluginManager\n\n// Re-export types\nexport * from './core/types';\nexport type { CertKeyPlugin } from './plugins/certkey';\nexport type { CipherPlugin } from './plugins/cipher';\nexport type { CertificateStatus, CRLInfo, CRLPlugin } from './plugins/crl';\nexport type { CryptoAuthPlugin } from './plugins/cryptoauth';\nexport type { FileIOPlugin } from './plugins/fileio';\nexport type { FtjcPlugin, FtjcTokenInfo } from './plugins/ftjc';\nexport type { IDCardPlugin, ReaderInfo } from './plugins/idcard';\nexport type { PfxCertificate, PfxPlugin } from './plugins/pfx';\nexport type { KeyPairInfo, PKCS10Info, PKCS10Plugin } from './plugins/pkcs10';\nexport type { Pkcs7Plugin, Pkcs7Response } from './plugins/pkcs7';\nexport type { PKIPlugin } from './plugins/pki';\nexport type { TruststorePlugin } from './plugins/truststore';\nexport type { TruststoreJKSPlugin } from './plugins/truststore-jks';\nexport type { TimestampTokenInfo, TSAClientPlugin } from './plugins/tsaclient.js';\nexport type { TunnelPlugin } from './plugins/tunnel';\nexport type { X509Plugin } from './plugins/x509';\nexport type { YTKSPlugin } from './plugins/ytks.js';\n\n/**\n * Main E-IMZO API class providing unified access to all plugins\n */\nexport class EIMZOApi {\n  // Core CAPIWS access\n  public readonly capiws = CAPIWS;\n\n  // Legacy client for backward compatibility\n  public readonly client = EIMZOClient;\n\n  // Plugin manager for accessing plugins\n  public readonly plugins = PluginManager;\n\n  // Direct plugin access\n  public readonly pfx = PluginManager.get('pfx');\n  public readonly pkcs7 = PluginManager.get('pkcs7');\n  public readonly ftjc = PluginManager.get('ftjc');\n  public readonly cryptoauth = PluginManager.get('cryptoauth');\n  public readonly truststoreJks = PluginManager.get('truststore-jks');\n  public readonly tunnel = PluginManager.get('tunnel');\n  public readonly certkey = PluginManager.get('certkey');\n  public readonly x509 = PluginManager.get('x509');\n  public readonly cipher = PluginManager.get('cipher');\n  public readonly pki = PluginManager.get('pki');\n  public readonly pkcs10 = PluginManager.get('pkcs10');\n  public readonly idcard = PluginManager.get('idcard');\n  public readonly truststore = PluginManager.get('truststore');\n  public readonly crl = PluginManager.get('crl');\n  public readonly fileio = PluginManager.get('fileio');\n  public readonly tsaclient = PluginManager.get('tsaclient');\n  public readonly ytks = PluginManager.get('ytks');\n\n  /**\n   * Initialize E-IMZO API and check version\n   */\n  async initialize(): Promise<{ major: string; minor: string }> {\n    return new Promise((resolve, reject) => {\n      this.client.checkVersion(\n        (major, minor) => resolve({ major, minor }),\n        (error, reason) => reject(new Error(reason ?? 'Version check failed'))\n      );\n    });\n  }\n\n  /**\n   * Install API keys\n   */\n  async installApiKeys(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      this.client.installApiKeys(\n        () => resolve(),\n        (error, reason) => reject(new Error(reason ?? 'API key installation failed'))\n      );\n    });\n  }\n\n  /**\n   * Check if ID card is plugged in\n   */\n  async isIdCardPluggedIn(): Promise<boolean> {\n    return new Promise((resolve, reject) => {\n      this.client.idCardIsPLuggedIn(\n        isPlugged => resolve(isPlugged),\n        (error, reason) => reject(new Error(reason ?? 'ID card check failed'))\n      );\n    });\n  }\n\n  /**\n   * Get version information\n   */\n  async getVersion(): Promise<{ major: string; minor: string }> {\n    return new Promise((resolve, reject) => {\n      this.capiws.version(\n        (event, data: VersionResponse) => {\n          if (data.success && data.major && data.minor) {\n            resolve({ major: data.major, minor: data.minor });\n          } else {\n            reject(new Error(data.reason ?? 'Failed to get version'));\n          }\n        },\n        error => reject(new Error(String(error) || 'Version check failed'))\n      );\n    });\n  }\n\n  /**\n   * Get API documentation\n   */\n  async getApiDoc(): Promise<unknown> {\n    return new Promise((resolve, reject) => {\n      this.capiws.apidoc(\n        (event, data: ApiResponse) => {\n          if (data.success) {\n            resolve(data);\n          } else {\n            reject(new Error(data.reason ?? 'Failed to get API documentation'));\n          }\n        },\n        error => reject(new Error(String(error) || 'API documentation request failed'))\n      );\n    });\n  }\n\n  /**\n   * Setup API keys\n   */\n  async setupApiKeys(domainAndKey: string[]): Promise<void> {\n    return new Promise((resolve, reject) => {\n      this.capiws.apikey(\n        domainAndKey,\n        (event, data: ApiResponse) => {\n          if (data.success) {\n            resolve();\n          } else {\n            reject(new Error(data.reason ?? 'Failed to setup API keys'));\n          }\n        },\n        error => reject(new Error(String(error) || 'API keys setup failed'))\n      );\n    });\n  }\n\n  /**\n   * Get all available plugins\n   */\n  getAvailablePlugins(): string[] {\n    return this.plugins.getAll().map(plugin => plugin.name);\n  }\n\n  /**\n   * Check if a plugin is available\n   */\n  hasPlugin(name: string): boolean {\n    return this.plugins.has(name);\n  }\n\n  /**\n   * Get plugin by name with type safety\n   */\n  getPlugin<T extends EIMZOPlugin>(name: string): T | undefined {\n    return this.plugins.get<T>(name);\n  }\n}\n\n// Create and export singleton instance\nexport const eimzoApi = new EIMZOApi();\n\n// Default export\nexport default eimzoApi;\n","/**\n * Global browser setup for E-IMZO Agnostic\n * Bu fayl browserda window obyektiga global o'zgaruvchilarni qo'shadi\n */\n\nimport EIMZOClient from './e-imzo-client.js';\nimport CAPIWS from './e-imzo/capiws.js';\nimport { eimzoApi } from './eimzo-api.js';\n\n// Global types\ndeclare global {\n  interface Window {\n    CAPIWS: typeof CAPIWS;\n    EIMZOClient: typeof EIMZOClient;\n    capiws: typeof CAPIWS;\n    eimzoApi: typeof eimzoApi;\n    imzoPlugins?: Record<string, unknown>;\n  }\n}\n\n/**\n * Setup global objects in browser environment\n */\nexport function setupGlobalObjects(): void {\n  // Browser environment tekshirish\n  if (typeof window !== 'undefined') {\n    const win = window;\n\n    // Legacy global objects (boshqalar ishlatganidek)\n    win.CAPIWS = CAPIWS;\n    win.EIMZOClient = EIMZOClient;\n\n    // Lowercase alias for convenience\n    win.capiws = CAPIWS;\n\n    // Modern API\n    win.eimzoApi = eimzoApi;\n\n    // Development mode - barcha pluginlarni expose qilish (browser-safe)\n    const isNodeJS =\n      typeof process !== 'undefined' &&\n      typeof process.versions === 'object' &&\n      Boolean(process.versions.node);\n    const isDev = isNodeJS && process.env.NODE_ENV === 'development';\n\n    if (isDev) {\n      win.imzoPlugins = {\n        version: '1.0.0',\n        loaded: true,\n        plugins: [],\n        debug: true\n      };\n\n      console.info('🔧 E-IMZO Agnostic Library - Development Mode');\n      console.info('Available APIs:', {\n        CAPIWS: 'Main CAPIWS client for E-IMZO communication',\n        EIMZOClient: 'Legacy E-IMZO client wrapper',\n        capiws: 'Legacy alias for CAPIWS',\n        eimzoApi: 'Modern plugin-based E-IMZO API',\n        imzoPlugins: 'Plugin system information'\n      });\n    }\n\n    // Log successful initialization\n    if (isDev) {\n      console.info('✅ E-IMZO Global Setup - Success');\n      console.info('Global status:', {\n        CAPIWS: Boolean(win.CAPIWS),\n        EIMZOClient: Boolean(win.EIMZOClient),\n        capiws: Boolean(win.capiws),\n        eimzoApi: Boolean(win.eimzoApi),\n        imzoPlugins: Boolean(win.imzoPlugins)\n      });\n    }\n  }\n}\n\n// Auto-setup browser globals\nsetupGlobalObjects();\n"]}