@islom929/react-eimzo 0.1.0 → 0.3.0

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/dist/index.cjs CHANGED
@@ -28,23 +28,687 @@ module.exports = __toCommonJS(index_exports);
28
28
  // src/provider.tsx
29
29
  var import_react = require("react");
30
30
 
31
+ // src/sdk-content.ts
32
+ var SDK_SOURCE = `(function(global) {
33
+ 'use strict';
34
+ var _Base64 = global.Base64;
35
+ var version = "2.1.4";
36
+ var buffer;
37
+ if (typeof module !== 'undefined' && module.exports) {
38
+ buffer = require('buffer').Buffer;
39
+ }
40
+ var b64chars
41
+ = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
42
+ var b64tab = function(bin) {
43
+ var t = {};
44
+ for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i;
45
+ return t;
46
+ }(b64chars);
47
+ var fromCharCode = String.fromCharCode;
48
+ var cb_utob = function(c) {
49
+ if (c.length < 2) {
50
+ var cc = c.charCodeAt(0);
51
+ return cc < 0x80 ? c
52
+ : cc < 0x800 ? (fromCharCode(0xc0 | (cc >>> 6))
53
+ + fromCharCode(0x80 | (cc & 0x3f)))
54
+ : (fromCharCode(0xe0 | ((cc >>> 12) & 0x0f))
55
+ + fromCharCode(0x80 | ((cc >>> 6) & 0x3f))
56
+ + fromCharCode(0x80 | ( cc & 0x3f)));
57
+ } else {
58
+ var cc = 0x10000
59
+ + (c.charCodeAt(0) - 0xD800) * 0x400
60
+ + (c.charCodeAt(1) - 0xDC00);
61
+ return (fromCharCode(0xf0 | ((cc >>> 18) & 0x07))
62
+ + fromCharCode(0x80 | ((cc >>> 12) & 0x3f))
63
+ + fromCharCode(0x80 | ((cc >>> 6) & 0x3f))
64
+ + fromCharCode(0x80 | ( cc & 0x3f)));
65
+ }
66
+ };
67
+ var re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;
68
+ var utob = function(u) {
69
+ return u.replace(re_utob, cb_utob);
70
+ };
71
+ var cb_encode = function(ccc) {
72
+ var padlen = [0, 2, 1][ccc.length % 3],
73
+ ord = ccc.charCodeAt(0) << 16
74
+ | ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8)
75
+ | ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)),
76
+ chars = [
77
+ b64chars.charAt( ord >>> 18),
78
+ b64chars.charAt((ord >>> 12) & 63),
79
+ padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),
80
+ padlen >= 1 ? '=' : b64chars.charAt(ord & 63)
81
+ ];
82
+ return chars.join('');
83
+ };
84
+ var btoa = global.btoa ? function(b) {
85
+ return global.btoa(b);
86
+ } : function(b) {
87
+ return b.replace(/[\\s\\S]{1,3}/g, cb_encode);
88
+ };
89
+ var _encode = buffer
90
+ ? function (u) { return (new buffer(u)).toString('base64') }
91
+ : function (u) { return btoa(utob(u)) }
92
+ ;
93
+ var encode = function(u, urisafe) {
94
+ return !urisafe
95
+ ? _encode(u)
96
+ : _encode(u).replace(/[+\\/]/g, function(m0) {
97
+ return m0 == '+' ? '-' : '_';
98
+ }).replace(/=/g, '');
99
+ };
100
+ var encodeURI = function(u) { return encode(u, true) };
101
+ var re_btou = new RegExp([
102
+ '[\\xC0-\\xDF][\\x80-\\xBF]',
103
+ '[\\xE0-\\xEF][\\x80-\\xBF]{2}',
104
+ '[\\xF0-\\xF7][\\x80-\\xBF]{3}'
105
+ ].join('|'), 'g');
106
+ var cb_btou = function(cccc) {
107
+ switch(cccc.length) {
108
+ case 4:
109
+ var cp = ((0x07 & cccc.charCodeAt(0)) << 18)
110
+ | ((0x3f & cccc.charCodeAt(1)) << 12)
111
+ | ((0x3f & cccc.charCodeAt(2)) << 6)
112
+ | (0x3f & cccc.charCodeAt(3)),
113
+ offset = cp - 0x10000;
114
+ return (fromCharCode((offset >>> 10) + 0xD800)
115
+ + fromCharCode((offset & 0x3FF) + 0xDC00));
116
+ case 3:
117
+ return fromCharCode(
118
+ ((0x0f & cccc.charCodeAt(0)) << 12)
119
+ | ((0x3f & cccc.charCodeAt(1)) << 6)
120
+ | (0x3f & cccc.charCodeAt(2))
121
+ );
122
+ default:
123
+ return fromCharCode(
124
+ ((0x1f & cccc.charCodeAt(0)) << 6)
125
+ | (0x3f & cccc.charCodeAt(1))
126
+ );
127
+ }
128
+ };
129
+ var btou = function(b) {
130
+ return b.replace(re_btou, cb_btou);
131
+ };
132
+ var cb_decode = function(cccc) {
133
+ var len = cccc.length,
134
+ padlen = len % 4,
135
+ n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0)
136
+ | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0)
137
+ | (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0)
138
+ | (len > 3 ? b64tab[cccc.charAt(3)] : 0),
139
+ chars = [
140
+ fromCharCode( n >>> 16),
141
+ fromCharCode((n >>> 8) & 0xff),
142
+ fromCharCode( n & 0xff)
143
+ ];
144
+ chars.length -= [0, 0, 2, 1][padlen];
145
+ return chars.join('');
146
+ };
147
+ var atob = global.atob ? function(a) {
148
+ return global.atob(a);
149
+ } : function(a){
150
+ return a.replace(/[\\s\\S]{1,4}/g, cb_decode);
151
+ };
152
+ var _decode = buffer
153
+ ? function(a) { return (new buffer(a, 'base64')).toString() }
154
+ : function(a) { return btou(atob(a)) };
155
+ var decode = function(a){
156
+ return _decode(
157
+ a.replace(/[-_]/g, function(m0) { return m0 == '-' ? '+' : '/' })
158
+ .replace(/[^A-Za-z0-9\\+\\/]/g, '')
159
+ );
160
+ };
161
+ var noConflict = function() {
162
+ var Base64 = global.Base64;
163
+ global.Base64 = _Base64;
164
+ return Base64;
165
+ };
166
+ global.Base64 = {
167
+ VERSION: version,
168
+ atob: atob,
169
+ btoa: btoa,
170
+ fromBase64: decode,
171
+ toBase64: encode,
172
+ utob: utob,
173
+ encode: encode,
174
+ encodeURI: encodeURI,
175
+ btou: btou,
176
+ decode: decode,
177
+ noConflict: noConflict
178
+ };
179
+ if (typeof Object.defineProperty === 'function') {
180
+ var noEnum = function(v){
181
+ return {value:v,enumerable:false,writable:true,configurable:true};
182
+ };
183
+ global.Base64.extendString = function () {
184
+ Object.defineProperty(
185
+ String.prototype, 'fromBase64', noEnum(function () {
186
+ return decode(this)
187
+ }));
188
+ Object.defineProperty(
189
+ String.prototype, 'toBase64', noEnum(function (urisafe) {
190
+ return encode(this, urisafe)
191
+ }));
192
+ Object.defineProperty(
193
+ String.prototype, 'toBase64URI', noEnum(function () {
194
+ return encode(this, true)
195
+ }));
196
+ };
197
+ }
198
+ })(this);
199
+
200
+ CAPIWS = (typeof EIMZOEXT !== 'undefined') ? EIMZOEXT : {
201
+ URL: (window.location.protocol.toLowerCase() === "https:" ? "wss://127.0.0.1:64443" : "ws://127.0.0.1:64646") + "/service/cryptapi",
202
+ callFunction: function(funcDef, callback, error){
203
+ if (!window.WebSocket){
204
+ if(error)
205
+ error();
206
+ return;
207
+ }
208
+ var socket;
209
+ try{
210
+ socket = new WebSocket(this.URL);
211
+ } catch (e){
212
+ error(e);
213
+ }
214
+ socket.onclose = function(e){
215
+ if(error) {
216
+ if(e.code != 1000){
217
+ error(e.code);
218
+ }
219
+ }
220
+ };
221
+ socket.onmessage = function(event){
222
+ var data = JSON.parse(event.data);
223
+ socket.close();
224
+ callback(event,data);
225
+ };
226
+ socket.onopen = function(){
227
+ socket.send(JSON.stringify(funcDef));
228
+ };
229
+ },
230
+ version: function(callback, error){
231
+ if (!window.WebSocket){
232
+ if(error)
233
+ error();
234
+ return;
235
+ }
236
+ var socket;
237
+ try{
238
+ socket = new WebSocket(this.URL);
239
+ } catch (e){
240
+ error(e);
241
+ }
242
+ socket.onclose = function(e){
243
+ if(error) {
244
+ if(e.code != 1000){
245
+ error(e.code);
246
+ }
247
+ }
248
+ };
249
+ socket.onmessage = function(event){
250
+ var data = JSON.parse(event.data);
251
+ socket.close();
252
+ callback(event,data);
253
+ };
254
+ socket.onopen = function(){
255
+ var o = {name: 'version'};
256
+ socket.send(JSON.stringify(o));
257
+ };
258
+ },
259
+ apidoc: function(callback, error){
260
+ if (!window.WebSocket){
261
+ if(error)
262
+ error();
263
+ return;
264
+ }
265
+ var socket;
266
+ try{
267
+ socket = new WebSocket(this.URL);
268
+ } catch (e){
269
+ error(e);
270
+ }
271
+ socket.onclose = function(e){
272
+ if(error) {
273
+ if(e.code != 1000){
274
+ error(e.code);
275
+ }
276
+ }
277
+ };
278
+ socket.onmessage = function(event){
279
+ var data = JSON.parse(event.data);
280
+ socket.close();
281
+ callback(event,data);
282
+ };
283
+ socket.onopen = function(){
284
+ var o = {name: 'apidoc'};
285
+ socket.send(JSON.stringify(o));
286
+ };
287
+ },
288
+ apikey: function(domainAndKey, callback, error){
289
+ if (!window.WebSocket){
290
+ if(error)
291
+ error();
292
+ return;
293
+ }
294
+ var socket;
295
+ try{
296
+ socket = new WebSocket(this.URL);
297
+ } catch (e){
298
+ error(e);
299
+ }
300
+ socket.onclose = function(e){
301
+ if(error) {
302
+ if(e.code != 1000){
303
+ error(e.code);
304
+ }
305
+ }
306
+ };
307
+ socket.onmessage = function(event){
308
+ var data = JSON.parse(event.data);
309
+ socket.close();
310
+ callback(event,data);
311
+ };
312
+ socket.onopen = function(){
313
+ var o = {name: 'apikey', arguments: domainAndKey};
314
+ socket.send(JSON.stringify(o));
315
+ };
316
+ }
317
+ };
318
+
319
+ Date.prototype.yyyymmdd = function () {
320
+ var yyyy = this.getFullYear().toString();
321
+ var mm = (this.getMonth() + 1).toString();
322
+ var dd = this.getDate().toString();
323
+ return yyyy + (mm[1] ? mm : "0" + mm[0]) + (dd[1] ? dd : "0" + dd[0]);
324
+ };
325
+ Date.prototype.ddmmyyyy = function () {
326
+ var yyyy = this.getFullYear().toString();
327
+ var mm = (this.getMonth() + 1).toString();
328
+ var dd = this.getDate().toString();
329
+ return (dd[1] ? dd : "0" + dd[0]) + "." + (mm[1] ? mm : "0" + mm[0]) + "." + yyyy;
330
+ };
331
+ var dates = {
332
+ convert: function (d) {
333
+ return (
334
+ d.constructor === Date ? d :
335
+ d.constructor === Array ? new Date(d[0], d[1], d[2]) :
336
+ d.constructor === Number ? new Date(d) :
337
+ d.constructor === String ? new Date(d) :
338
+ typeof d === "object" ? new Date(d.year, d.month, d.date) :
339
+ NaN
340
+ );
341
+ },
342
+ compare: function (a, b) {
343
+ return (
344
+ isFinite(a = this.convert(a).valueOf()) &&
345
+ isFinite(b = this.convert(b).valueOf()) ?
346
+ (a > b) - (a < b) :
347
+ NaN
348
+ );
349
+ },
350
+ inRange: function (d, start, end) {
351
+ return (
352
+ isFinite(d = this.convert(d).valueOf()) &&
353
+ isFinite(start = this.convert(start).valueOf()) &&
354
+ isFinite(end = this.convert(end).valueOf()) ?
355
+ start <= d && d <= end :
356
+ NaN
357
+ );
358
+ }
359
+ };
360
+ String.prototype.splitKeep = function (splitter, ahead) {
361
+ var self = this;
362
+ var result = [];
363
+ if (splitter != '') {
364
+ function getSubst(value) {
365
+ var substChar = value[0] == '0' ? '1' : '0';
366
+ var subst = '';
367
+ for (var i = 0; i < value.length; i++) {
368
+ subst += substChar;
369
+ }
370
+ return subst;
371
+ };
372
+ var matches = [];
373
+ var replaceName = splitter instanceof RegExp ? "replace" : "replaceAll";
374
+ var r = self[replaceName](splitter, function (m, i, e) {
375
+ matches.push({value: m, index: i});
376
+ return getSubst(m);
377
+ });
378
+ var lastIndex = 0;
379
+ for (var i = 0; i < matches.length; i++) {
380
+ var m = matches[i];
381
+ var nextIndex = ahead == true ? m.index : m.index + m.value.length;
382
+ if (nextIndex != lastIndex) {
383
+ var part = self.substring(lastIndex, nextIndex);
384
+ result.push(part);
385
+ lastIndex = nextIndex;
386
+ }
387
+ };
388
+ if (lastIndex < self.length) {
389
+ var part = self.substring(lastIndex, self.length);
390
+ result.push(part);
391
+ };
392
+ } else {
393
+ result.add(self);
394
+ };
395
+ return result;
396
+ };
397
+
398
+ var EIMZOClient = {
399
+ NEW_API: false,
400
+ NEW_API2: false,
401
+ NEW_API3: false,
402
+ // Add your production domain and API key below:
403
+ // 'yourdomain.uz', 'YOUR_API_KEY_HERE',
404
+ API_KEYS: [
405
+ 'localhost', '96D0C1491615C82B9A54D9989779DF825B690748224C2B04F500F370D51827CE2644D8D4A82C18184D73AB8530BB8ED537269603F61DB0D03D2104ABF789970B',
406
+ '127.0.0.1', 'A7BCFA5D490B351BE0754130DF03A068F855DB4333D43921125B9CF2670EF6A40370C646B90401955E1F7BC9CDBF59CE0B2C5467D820BE189C845D0B79CFC96F'
407
+ ],
408
+ checkVersion: function(success, fail){
409
+ CAPIWS.version(function (event, data) {
410
+ if(data.success === true){
411
+ if(data.major && data.minor){
412
+ var installedVersion = parseInt(data.major) * 100 + parseInt(data.minor);
413
+ EIMZOClient.NEW_API = installedVersion >= 336;
414
+ EIMZOClient.NEW_API2 = installedVersion >= 412;
415
+ EIMZOClient.NEW_API3 = installedVersion >= 486;
416
+ success(data.major, data.minor);
417
+ } else {
418
+ fail(null, 'E-IMZO Version is undefined');
419
+ }
420
+ } else {
421
+ fail(null, data.reason);
422
+ }
423
+ }, function (e) {
424
+ fail(e, null);
425
+ });
426
+ },
427
+ installApiKeys: function(success, fail){
428
+ CAPIWS.apikey(EIMZOClient.API_KEYS, function (event, data) {
429
+ if (data.success) {
430
+ success();
431
+ } else {
432
+ fail(null,data.reason);
433
+ }
434
+ }, function (e) {
435
+ fail(e, null);
436
+ });
437
+ },
438
+ listAllUserKeys: function(itemIdGen, itemUiGen, success, fail){
439
+ var items = [];
440
+ var errors = [];
441
+ if(!EIMZOClient.NEW_API){
442
+ fail(null, 'Please install new version of E-IMZO');
443
+ } else {
444
+ if(EIMZOClient.NEW_API2){
445
+ EIMZOClient._findPfxs2(itemIdGen, itemUiGen, items, errors, function (firstItmId2) {
446
+ if(items.length === 0 && errors.length > 0){
447
+ fail(errors[0].e, errors[0].r);
448
+ } else {
449
+ var firstId = null;
450
+ if (items.length === 1) {
451
+ if (firstItmId2) {
452
+ firstId = firstItmId2;
453
+ }
454
+ }
455
+ success(items, firstId);
456
+ }
457
+ });
458
+ } else {
459
+ EIMZOClient._findPfxs2(itemIdGen, itemUiGen, items, errors, function (firstItmId2) {
460
+ EIMZOClient._findTokens2(itemIdGen, itemUiGen, items, errors, function (firstItmId3) {
461
+ if(items.length === 0 && errors.length > 0){
462
+ fail(errors[0].e, errors[0].r);
463
+ } else {
464
+ var firstId = null;
465
+ if (items.length === 1) {
466
+ if (firstItmId2) {
467
+ firstId = firstItmId2;
468
+ } else if (firstItmId3) {
469
+ firstId = firstItmId3;
470
+ }
471
+ }
472
+ success(items, firstId);
473
+ }
474
+ });
475
+ });
476
+ }
477
+ }
478
+ },
479
+ idCardIsPLuggedIn: function(success, fail){
480
+ if(!EIMZOClient.NEW_API2){
481
+ success(false);
482
+ } else {
483
+ CAPIWS.callFunction({plugin: "idcard", name: "list_readers"}, function (event, data) {
484
+ if (data.success) {
485
+ success(data.readers.length>0);
486
+ } else {
487
+ fail(null, data.reason);
488
+ }
489
+ }, function (e) {
490
+ fail(e, null);
491
+ });
492
+ }
493
+ },
494
+ isBAIKTokenPLuggedIn: function(success, fail){
495
+ if(!EIMZOClient.NEW_API3){
496
+ success(false);
497
+ } else {
498
+ CAPIWS.callFunction({plugin: "baikey", name: "list_tokens"}, function (event, data) {
499
+ if (data.success) {
500
+ success(data.tokens.length>0);
501
+ } else {
502
+ fail(null, data.reason);
503
+ }
504
+ }, function (e) {
505
+ fail(e, null);
506
+ });
507
+ }
508
+ },
509
+ isCKCPLuggedIn: function(success, fail){
510
+ if(!EIMZOClient.NEW_API3){
511
+ success(false);
512
+ } else {
513
+ CAPIWS.callFunction({plugin: "ckc", name: "list_ckc"}, function (event, data) {
514
+ if (data.success) {
515
+ success(data.devices.length>0);
516
+ } else {
517
+ fail(null, data.reason);
518
+ }
519
+ }, function (e) {
520
+ fail(e, null);
521
+ });
522
+ }
523
+ },
524
+ loadKey: function(itemObject, success, fail, verifyPassword){
525
+ if (itemObject) {
526
+ var vo = itemObject;
527
+ if (vo.type === "pfx") {
528
+ CAPIWS.callFunction({plugin: "pfx", name: "load_key", arguments: [vo.disk, vo.path, vo.name, vo.alias]}, function (event, data) {
529
+ if (data.success) {
530
+ var id = data.keyId;
531
+ if(verifyPassword){
532
+ CAPIWS.callFunction({name: "verify_password", plugin: "pfx", arguments: [id]}, function (event, data) {
533
+ if (data.success) {
534
+ success(id);
535
+ } else {
536
+ fail(null, data.reason);
537
+ }
538
+ }, function (e) {
539
+ fail(e, null);
540
+ });
541
+ } else {
542
+ success(id);
543
+ }
544
+ } else {
545
+ fail(null, data.reason);
546
+ }
547
+ }, function (e) {
548
+ fail(e, null);
549
+ });
550
+ } else if (vo.type === "ftjc") {
551
+ CAPIWS.callFunction({plugin: "ftjc", name: "load_key", arguments: [vo.cardUID]}, function (event, data) {
552
+ if (data.success) {
553
+ var id = data.keyId;
554
+ if(verifyPassword){
555
+ CAPIWS.callFunction({plugin: "ftjc", name: "verify_pin", arguments: [id,'1']}, function (event, data) {
556
+ if (data.success) {
557
+ success(id);
558
+ } else {
559
+ fail(null, data.reason);
560
+ }
561
+ }, function (e) {
562
+ fail(e, null);
563
+ });
564
+ } else {
565
+ success(id);
566
+ }
567
+ } else {
568
+ fail(null, data.reason);
569
+ }
570
+ }, function (e) {
571
+ fail(e, null);
572
+ });
573
+ }
574
+ }
575
+ },
576
+ createPkcs7: function(id, data, timestamper, success, fail, detached, isDataBase64Encoded){
577
+ var data64;
578
+ if(isDataBase64Encoded === true){
579
+ data64 = data
580
+ }else {
581
+ data64 = Base64.encode(data);
582
+ }
583
+ if(detached === true){
584
+ detached = 'yes';
585
+ } else {
586
+ detached = 'no';
587
+ }
588
+ CAPIWS.callFunction({plugin: "pkcs7", name: "create_pkcs7", arguments: [data64, id, detached]}, function (event, data) {
589
+ if (data.success) {
590
+ var pkcs7 = data.pkcs7_64;
591
+ success(pkcs7);
592
+ } else {
593
+ fail(null, data.reason);
594
+ }
595
+ }, function (e) {
596
+ fail(e, null);
597
+ });
598
+ },
599
+ _getX500Val: function (s, f) {
600
+ var res = s.splitKeep(/,[A-Z]+=/g, true);
601
+ for (var i in res) {
602
+ var n = res[i].search((i > 0 ? "," : "") + f + "=");
603
+ if (n !== -1) {
604
+ return res[i].slice(n + f.length + 1 + (i > 0 ? 1 : 0));
605
+ }
606
+ }
607
+ return "";
608
+ },
609
+ _findPfxs2: function (itemIdGen, itemUiGen, items, errors, callback) {
610
+ var itmkey0;
611
+ CAPIWS.callFunction({plugin: "pfx", name: "list_all_certificates"}, function (event, data) {
612
+ if (data.success) {
613
+ for (var rec in data.certificates) {
614
+ var el = data.certificates[rec];
615
+ var x500name_ex = el.alias.toUpperCase();
616
+ x500name_ex = x500name_ex.replace("1.2.860.3.16.1.1=", "INN=");
617
+ x500name_ex = x500name_ex.replace("1.2.860.3.16.1.2=", "PINFL=");
618
+ var vo = {
619
+ disk: el.disk,
620
+ path: el.path,
621
+ name: el.name,
622
+ alias: el.alias,
623
+ serialNumber: EIMZOClient._getX500Val(x500name_ex, "SERIALNUMBER"),
624
+ validFrom: new Date(EIMZOClient._getX500Val(x500name_ex, "VALIDFROM").replace(/\\./g, "-").replace(" ", "T")),
625
+ validTo: new Date(EIMZOClient._getX500Val(x500name_ex, "VALIDTO").replace(/\\./g, "-").replace(" ", "T")),
626
+ CN: EIMZOClient._getX500Val(x500name_ex, "CN"),
627
+ TIN: (EIMZOClient._getX500Val(x500name_ex, "INN") ? EIMZOClient._getX500Val(x500name_ex, "INN") : EIMZOClient._getX500Val(x500name_ex, "UID")),
628
+ UID: EIMZOClient._getX500Val(x500name_ex, "UID"),
629
+ PINFL: EIMZOClient._getX500Val(x500name_ex, "PINFL"),
630
+ O: EIMZOClient._getX500Val(x500name_ex, "O"),
631
+ T: EIMZOClient._getX500Val(x500name_ex, "T"),
632
+ type: 'pfx'
633
+ };
634
+ if (!vo.TIN && !vo.PINFL)
635
+ continue;
636
+ var itmkey = itemIdGen(vo,rec);
637
+ if (!itmkey0) {
638
+ itmkey0 = itmkey;
639
+ }
640
+ var itm = itemUiGen(itmkey, vo);
641
+ items.push(itm);
642
+ }
643
+ } else {
644
+ errors.push({r: data.reason});
645
+ }
646
+ callback(itmkey0);
647
+ }, function (e) {
648
+ errors.push({e: e});
649
+ callback(itmkey0);
650
+ });
651
+ },
652
+ _findTokens2: function (itemIdGen, itemUiGen, items, errors, callback) {
653
+ var itmkey0;
654
+ CAPIWS.callFunction({plugin: "ftjc", name: "list_all_keys", arguments:['']}, function (event, data) {
655
+ if (data.success) {
656
+ for (var rec in data.tokens) {
657
+ var el = data.tokens[rec];
658
+ var x500name_ex = el.info.toUpperCase();
659
+ x500name_ex = x500name_ex.replace("1.2.860.3.16.1.1=", "INN=");
660
+ x500name_ex = x500name_ex.replace("1.2.860.3.16.1.2=", "PINFL=");
661
+ var vo = {
662
+ cardUID: el.cardUID,
663
+ statusInfo: el.statusInfo,
664
+ ownerName: el.ownerName,
665
+ info: el.info,
666
+ serialNumber: EIMZOClient._getX500Val(x500name_ex, "SERIALNUMBER"),
667
+ validFrom: new Date(EIMZOClient._getX500Val(x500name_ex, "VALIDFROM")),
668
+ validTo: new Date(EIMZOClient._getX500Val(x500name_ex, "VALIDTO")),
669
+ CN: EIMZOClient._getX500Val(x500name_ex, "CN"),
670
+ TIN: (EIMZOClient._getX500Val(x500name_ex, "INN") ? EIMZOClient._getX500Val(x500name_ex, "INN") : EIMZOClient._getX500Val(x500name_ex, "UID")),
671
+ UID: EIMZOClient._getX500Val(x500name_ex, "UID"),
672
+ PINFL: EIMZOClient._getX500Val(x500name_ex, "PINFL"),
673
+ O: EIMZOClient._getX500Val(x500name_ex, "O"),
674
+ T: EIMZOClient._getX500Val(x500name_ex, "T"),
675
+ type: 'ftjc'
676
+ };
677
+ if (!vo.TIN && !vo.PINFL)
678
+ continue;
679
+ var itmkey = itemIdGen(vo,rec);
680
+ if (!itmkey0) {
681
+ itmkey0 = itmkey;
682
+ }
683
+ var itm = itemUiGen(itmkey, vo);
684
+ items.push(itm);
685
+ }
686
+ } else {
687
+ errors.push({r: data.reason});
688
+ }
689
+ callback(itmkey0);
690
+ }, function (e) {
691
+ errors.push({e: e});
692
+ callback(itmkey0);
693
+ });
694
+ }
695
+ };
696
+ `;
697
+
31
698
  // src/eimzo.ts
32
699
  var sdkLoaded = false;
33
- function loadSDK(sdkPath) {
34
- return new Promise((resolve, reject) => {
700
+ function loadSDK() {
701
+ return new Promise((resolve) => {
35
702
  if (sdkLoaded || typeof EIMZOClient !== "undefined") {
36
703
  sdkLoaded = true;
37
704
  resolve();
38
705
  return;
39
706
  }
40
707
  const script = document.createElement("script");
41
- script.src = sdkPath || "/e-imzo.js";
42
- script.onload = () => {
43
- sdkLoaded = true;
44
- resolve();
45
- };
46
- script.onerror = () => reject("Failed to load E-IMZO SDK");
708
+ script.textContent = SDK_SOURCE;
47
709
  document.head.appendChild(script);
710
+ sdkLoaded = true;
711
+ resolve();
48
712
  });
49
713
  }
50
714
  function checkVersion() {
@@ -132,8 +796,8 @@ function checkCkc() {
132
796
  );
133
797
  });
134
798
  }
135
- async function install(apiKeys, sdkPath) {
136
- await loadSDK(sdkPath);
799
+ async function install(apiKeys) {
800
+ await loadSDK();
137
801
  await checkVersion();
138
802
  await installApiKeys(apiKeys);
139
803
  }
@@ -141,7 +805,7 @@ async function install(apiKeys, sdkPath) {
141
805
  // src/provider.tsx
142
806
  var import_jsx_runtime = require("react/jsx-runtime");
143
807
  var EimzoContext = (0, import_react.createContext)(null);
144
- function EimzoProvider({ apiKeys, sdkPath, children }) {
808
+ function EimzoProvider({ apiKeys, children }) {
145
809
  const [isInstalled, setIsInstalled] = (0, import_react.useState)(false);
146
810
  const [isLoading, setIsLoading] = (0, import_react.useState)(false);
147
811
  const [keyList, setKeyList] = (0, import_react.useState)([]);
@@ -151,7 +815,7 @@ function EimzoProvider({ apiKeys, sdkPath, children }) {
151
815
  ckc: false
152
816
  });
153
817
  (0, import_react.useEffect)(() => {
154
- install(apiKeys, sdkPath).then(() => setIsInstalled(true)).catch(() => setIsInstalled(false));
818
+ install(apiKeys).then(() => setIsInstalled(true)).catch(() => setIsInstalled(false));
155
819
  }, []);
156
820
  const loadKeys = (0, import_react.useCallback)(async () => {
157
821
  setIsLoading(true);
@@ -175,7 +839,7 @@ function EimzoProvider({ apiKeys, sdkPath, children }) {
175
839
  }
176
840
  }, []);
177
841
  const sign = (0, import_react.useCallback)(
178
- async ({ keyId, data }) => {
842
+ async ({ keyId, data, onSuccess, onError }) => {
179
843
  setIsLoading(true);
180
844
  try {
181
845
  let id;
@@ -185,7 +849,10 @@ function EimzoProvider({ apiKeys, sdkPath, children }) {
185
849
  id = keyId;
186
850
  }
187
851
  const pkcs7 = await createPkcs7(id, data);
188
- return pkcs7;
852
+ onSuccess(pkcs7);
853
+ } catch (err) {
854
+ const message = typeof err === "string" ? err : "E-IMZO signing failed";
855
+ onError?.(message);
189
856
  } finally {
190
857
  setIsLoading(false);
191
858
  }