@it-enterprise/digital-signature 1.2.2 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@it-enterprise/digital-signature",
3
- "version": "1.2.2",
3
+ "version": "1.2.4",
4
4
  "description": "digital signature",
5
5
  "private": false,
6
6
  "main": "src/index.js",
@@ -18,4 +18,4 @@
18
18
  "@babel/eslint-parser": "^7.18.9",
19
19
  "eslint": "^7.18.0"
20
20
  }
21
- }
21
+ }
package/readme.md CHANGED
@@ -68,6 +68,11 @@ import {
68
68
 
69
69
  Инициализация библиотеки
70
70
  ```javascript
71
+ import {
72
+ DigitalSignature,
73
+ Models
74
+ } from "@it-enterprise/digital-signature";
75
+
71
76
  const ds = new DigitalSignature(
72
77
  new Models.DefaultSettingProvider(
73
78
  "uk", // Язык ошибок (строка, или функция, возвращающая строку)
@@ -80,20 +85,22 @@ const currentKeyType = await ds.initialise();
80
85
  Сменить тип библиотеки
81
86
  ```javascript
82
87
  /** Подпись файловыми ключами, через облачные сервисы */
83
- export const DigitalSignatureLibraryTypeJS = 0;
88
+ const DigitalSignatureLibraryTypeJS = 0;
84
89
  /** Подпись аппартными ключами */
85
- export const DigitalSignatureLibraryTypeSW = 1;
90
+ const DigitalSignatureLibraryTypeSW = 1;
86
91
  /**
87
92
  * Типы библиотеки
88
93
  */
89
- export const DigitalSignatureLibraryType = {
94
+ enum DigitalSignatureLibraryType = {
90
95
  /** Подпись файловыми ключами и через облачные сервисы */
91
96
  JS: DigitalSignatureLibraryTypeJS,
92
97
  /** Подпись аппартными ключами */
93
98
  SW: DigitalSignatureLibraryTypeSW
94
99
  };
95
100
 
96
- await ds.setLibraryType(type);
101
+ import { Models } from "@it-enterprise/digital-signature";
102
+
103
+ await ds.setLibraryType(Models.DigitalSignatureLibraryType.JS);
97
104
  ```
98
105
 
99
106
  # Центры сертификации ключей
@@ -116,6 +123,8 @@ const needCerts = ds.needPrivateKeyCertificates();
116
123
  ```
117
124
  Структура объекта CASettings
118
125
  ```javascript
126
+ import { EUSignCP.CASettings } from "@it-enterprise/digital-signature";
127
+
119
128
  class CASettings {
120
129
  // Названия ЦСК (обычно используется первое из списка)
121
130
  issuerCNs: Array<string>;
@@ -212,12 +221,15 @@ const ksps = ds.KSPs;
212
221
 
213
222
  ```javascript
214
223
  class KSPSettings {
224
+ // Идентификатор
225
+ id: string;
215
226
  // Название провайдера
216
227
  name: string;
217
228
  // Провайдер работает через QR код или через ID пользователя
218
229
  needQRCode: boolean;
219
230
  // Тип ID пользователя (имя пользователя/телефон/email)
220
231
  clientIdType?: EndUserKSPClientIdType;
232
+ // Тип провайдера
221
233
  ksp: EndUserKSP;
222
234
  address?: string;
223
235
  port?: string;
@@ -228,6 +240,36 @@ class KSPSettings {
228
240
  pollingInterval?: number;
229
241
  systemId?: string;
230
242
  }
243
+ import { EUSignCP.KSPSettings } from "@it-enterprise/digital-signature";
244
+
245
+ // Тип провайдера облачных ключей
246
+ enum EndUserKSP = {
247
+ // DepositSign, ESign, Вчасно
248
+ IIT
249
+ // SmartID, CloudKey
250
+ PB
251
+ // Дія.Підпис
252
+ DIIA
253
+ // Подписание ключами с Гряды через сервис подписи
254
+ GRYADA
255
+ }
256
+ import { Models.EndUserKSP } from "@it-enterprise/digital-signature";
257
+
258
+ // Тип ID пользователя
259
+ enum EndUserKSPClientIdType = {
260
+ // По умолчанию
261
+ Default,
262
+ // Имя пользователя
263
+ Name,
264
+ // Номер телефона
265
+ Phone,
266
+ // Email
267
+ Email,
268
+ // Имя пользователя и пароль (2 поля)
269
+ NamePassword
270
+ }
271
+ import { Models.EndUserKSPClientIdType } from "@it-enterprise/digital-signature";
272
+
231
273
  ```
232
274
 
233
275
  Для ключей, работающих через QR код, после инициализации библиотеки нужно подписаться на событие подтверждения операции
@@ -245,6 +287,7 @@ ds.addConfirmKSPOperationEventListener(eventArgs => { ... });
245
287
 
246
288
  Структура объекта, приходящего в коллбек события
247
289
  ```javascript
290
+ // Аргументы события
248
291
  class EndUserConfirmKSPOperationEvent {
249
292
  // Ссылка на подтверждение операции
250
293
  url: string;
@@ -255,6 +298,8 @@ class EndUserConfirmKSPOperationEvent {
255
298
  // Время, до которого действует ссылка
256
299
  expireDate: Date;
257
300
  }
301
+ import { EUSignCP.EndUserEvents.EndUserConfirmKSPOperationEvent } from "@it-enterprise/digital-signature";
302
+
258
303
  ```
259
304
  QR код нужно отобразить пользовтелю, что бы он мог отсканировать его в приложении и подтвердить подписание
260
305
  Для отображения QR кода можно использовать содержимое поля qrCode, либо сгенерировать его на основе ссылки из поля url
@@ -276,7 +321,9 @@ const keyInfo = await ds.readPrivateKeyKSP(
276
321
  // Получать информацию о сертификатах пользователя
277
322
  // true - поля ownerInfo и certificates в keyInfo будут заполены, но пользователю нужно будет подтвердить дополнительную операцию подписания
278
323
  // false - поля ownerInfo и certificates в keyInfo будут пустыми, но пользователь не получит дополнительный запрос на подписание
279
- getCerts = false);
324
+ getCerts = false,
325
+ // Пароль пользователя, если clientIdType == NamePassword
326
+ keyID = null);
280
327
  ```
281
328
 
282
329
 
@@ -327,6 +374,7 @@ class EndUserSignContainerInfo {
327
374
  // Тип подписи в ASiC контейнере (только для ASiC контейнеров)
328
375
  asicSignType: EndUserASiCSignType;
329
376
  }
377
+ import { EUSignCP.EndUserSignContainerInfo } from "@it-enterprise/digital-signature";
330
378
  ```
331
379
  Типы контейнеров подписи
332
380
  ```javascript
@@ -344,6 +392,7 @@ enum EndUserSignContainerType {
344
392
  // Контейнер для подписей в виде ZIP-архива
345
393
  ASiC
346
394
  }
395
+ import { EUSignCP.EndUserConstants.EndUserSignContainerType } from "@it-enterprise/digital-signature";
347
396
  ```
348
397
  Типы подписей CAdES
349
398
  ```javascript
@@ -355,6 +404,7 @@ enum EndUserCAdESType {
355
404
  // Подпись в одном контейнере с данными (внутренняя подпись)
356
405
  Enveloped
357
406
  }
407
+ import { EUSignCP.EndUserConstants.EndUserCAdESType } from "@it-enterprise/digital-signature";
358
408
  ```
359
409
  Типы подписей XAdES
360
410
  ```javascript
@@ -363,9 +413,10 @@ const EU_XADES_TYPE_ENVELOPED = 3;
363
413
  enum EndUserXAdESType {
364
414
  // Подпись отдельно от данных (внешняя подпись)
365
415
  Detached,
366
- // Подпись в одном контейнере с данными (внутренняя подпись)
416
+ // Подпись в одном контейнере с данными (внутренняя подпись) !! Данные могут быть только в формате XML !!
367
417
  Enveloped
368
418
  }
419
+ import { EUSignCP.EndUserConstants.EndUserXAdESType } from "@it-enterprise/digital-signature";
369
420
  ```
370
421
  Типы контейнеров ASiC
371
422
  ```javascript
@@ -377,6 +428,7 @@ enum EndUserASiCType {
377
428
  // Расширенный контейнер, может содержать несколько файлов с данными и несколько подписей
378
429
  E
379
430
  }
431
+ import { EUSignCP.EndUserConstants.EndUserASiCType } from "@it-enterprise/digital-signature";
380
432
  ```
381
433
  Типы подписей, которые могут содержаться в ASiC контейнере
382
434
  ```javascript
@@ -386,6 +438,7 @@ enum EndUserASiCSignType {
386
438
  CAdES,
387
439
  XAdES
388
440
  }
441
+ import { EUSignCP.EndUserConstants.EndUserASiCSignType } from "@it-enterprise/digital-signature";
389
442
  ```
390
443
 
391
444
  Пример использования формата подписи:
@@ -435,6 +488,7 @@ declare type NamedData = {
435
488
  // В качестве возвращаемого результата: контейнер с подписью
436
489
  val: string | Uint8Array;
437
490
  };
491
+ import { EUSignCP.NamedData } from "@it-enterprise/digital-signature";
438
492
  ```
439
493
  Пример использования формата именованных данных
440
494
  ```javascript
@@ -1,6 +1,6 @@
1
1
  import { EndUser, EndUserConstants, EndUserProxySettings, EndUserError, KSPSettings, EndUserCertificate, EndUserKeyMedia, EndUserSignContainerInfo } from "../euscp/euscp";
2
- import { DigitalSignatureKeyType, PrivateKeyInfo, FilePrivateKeyInfo, HardwarePrivateKeyInfo, KspPrivateKeyInfo } from "./Models";
3
- import { downloadAndSignFiles, downloadData, format, readFile, signAlgoToHashAlgo } from "./Utils";
2
+ import { DigitalSignatureKeyType, PrivateKeyInfo, FilePrivateKeyInfo, HardwarePrivateKeyInfo, KspPrivateKeyInfo, EndUserKSP } from "./Models";
3
+ import { downloadAndSignFiles, downloadData, format, isDefaultValue, readFile, signAlgoToHashAlgo } from "./Utils";
4
4
  import Resourses from "./Resourses.json";
5
5
  import GlSign from "./GlSign";
6
6
 
@@ -31,85 +31,8 @@ export default class DigitalSignature {
31
31
  /** @type {CASettings} */
32
32
  this._selectedCA = null;
33
33
 
34
- const depositsign = new KSPSettings();
35
- depositsign.name = "DepositSign";
36
- depositsign.ksp = EndUserConstants.EU_KSP_IIT;
37
- depositsign.address = "https://depositsign.com/api/v1/it-enterprise/sign-server";
38
- depositsign.directAccess = true;
39
- depositsign.needQRCode = false;
40
-
41
- const diia = new KSPSettings();
42
- diia.name = "Дія.Підпис";
43
- diia.ksp = EndUserConstants.EU_KSP_DIIA;
44
- diia.directAccess = true;
45
- diia.mobileAppName = "Дія";
46
- diia.address = "https://diia-sign.it.ua/KSPSign";
47
- diia.systemId = "diia-sign-it-ent";
48
- diia.needQRCode = true;
49
-
50
- const smartId = new KSPSettings();
51
- smartId.name = "Приватбанк - хмарний підпис \"SmartID\"";
52
- smartId.ksp = EndUserConstants.EU_KSP_PB;
53
- smartId.directAccess = true;
54
- smartId.mobileAppName = "Приват24";
55
- smartId.address = "https://acsk.privatbank.ua/cloud/api/back/";
56
- smartId.clientIdPrefix = "IEIS_";
57
- smartId.confirmationURL = "https://www.privat24.ua/rd/kep";
58
- smartId.needQRCode = true;
59
-
60
- const vchasno = new KSPSettings();
61
- vchasno.name = "Вчасно - хмарний підпис";
62
- vchasno.ksp = EndUserConstants.EU_KSP_IIT;
63
- vchasno.address = "https://cs.vchasno.ua/ss/";
64
- vchasno.directAccess = true;
65
- vchasno.needQRCode = false;
66
-
67
- const cloudKey = new KSPSettings();
68
- cloudKey.name = "ТОВ «ЦСК «Україна» - хмарний підпис CloudKey";
69
- cloudKey.ksp = EndUserConstants.EU_KSP_PB;
70
- cloudKey.directAccess = true;
71
- cloudKey.mobileAppName = "CloudKey";
72
- cloudKey.address = "https://sid.uakey.com.ua/smartid/iit/";
73
- cloudKey.clientIdPrefix = "DIIA_2";
74
- cloudKey.confirmationURL = "https://sid.uakey.com.ua/kep?hash=rd/kep";
75
- cloudKey.needQRCode = true;
76
-
77
- const esign = new KSPSettings();
78
- esign.name = "ESign - хмарний підпис";
79
- esign.ksp = EndUserConstants.EU_KSP_IIT;
80
- esign.address = "https://cabinet.e-life.com.ua/api/EDG/Sign";
81
- esign.directAccess = true;
82
- esign.needQRCode = false;
83
-
84
- const idd = new KSPSettings();
85
- idd.name = "ІДД ДПС - хмарний підпис";
86
- idd.ksp = EndUserConstants.EU_KSP_IIT;
87
- idd.address = "https://smart-sign.tax.gov.ua/";
88
- idd.port = "443";
89
- idd.directAccess = true;
90
- idd.clientIdType = 1;
91
- idd.needQRCode = false;
92
-
93
- this._KSPs = {
94
- depositsign,
95
- diia,
96
- smartId,
97
- vchasno,
98
- cloudKey,
99
- esign,
100
- idd,
101
- asArray: function() {
102
- return [
103
- depositsign,
104
- diia,
105
- smartId,
106
- vchasno,
107
- cloudKey,
108
- esign,
109
- idd
110
- ];
111
- }
112
- };
34
+ /** @type {KSPSettings} */
35
+ this._KSPs = [];
113
36
 
114
37
  /** @type {PrivateKeyInfo} */
115
38
  this._readedKey = null;
@@ -508,7 +431,8 @@ export default class DigitalSignature {
508
431
  * @param {boolean?} getCerts - Получать информацию о ключе пользователя. Это приведёт к дополнительному запросу на подписание
509
432
  */
510
433
  async readPrivateKeyDepositsign(userId, getCerts = false) {
511
- return await this.readPrivateKeyKSP(userId, this._KSPs.depositsign, getCerts);
434
+ var deposit = this.KSPs.find(ksp => ksp.id === "depositsign");
435
+ return await this.readPrivateKeyKSP(userId, deposit, getCerts);
512
436
  }
513
437
 
514
438
  /**
@@ -516,7 +440,8 @@ export default class DigitalSignature {
516
440
  * @param {boolean?} getCerts - Получать информацию о ключе пользователя. Это приведёт к дополнительному запросу на подписание
517
441
  */
518
442
  async readPrivateKeyDiia(getCerts = false) {
519
- return await this.readPrivateKeyKSP(null, this.KSPs.diia, getCerts);
443
+ var diia = this.KSPs.find(ksp => ksp.id === "diia-sign");
444
+ return await this.readPrivateKeyKSP(null, diia, getCerts);
520
445
  }
521
446
 
522
447
  /**
@@ -525,14 +450,14 @@ export default class DigitalSignature {
525
450
  * @param {string?} userId - Идентификатор пользователя
526
451
  * @param {boolean?} getCerts - Получать информацию о ключе пользователя. Это приведёт к дополнительному запросу на подписание
527
452
  */
528
- async readPrivateKeyKSP(ksp, userId, getCerts = false) {
453
+ async readPrivateKeyKSP(ksp, userId, getCerts = false, keyId) {
529
454
  await this.setLibraryType(DigitalSignatureKeyType.KSP);
530
455
 
531
456
  if (ksp.ksp === EndUserConstants.EU_KSP_DIIA) {
532
- await this._diiaCheckAccess();
457
+ await this._diiaCheckAccess(ksp);
533
458
  }
534
459
 
535
- const ownerInfo = await this._euSign.ReadPrivateKeyKSP(userId, ksp.name, getCerts);
460
+ const ownerInfo = await this._euSign.ReadPrivateKeyKSP(userId, ksp.name, getCerts, keyId);
536
461
  if (getCerts && !ownerInfo) {
537
462
  throw {
538
463
  code: EndUserError.EU_ERROR_KEY_MEDIAS_READ_FAILED,
@@ -544,7 +469,8 @@ export default class DigitalSignature {
544
469
  ownerInfo,
545
470
  getCerts ? await this._euSign.GetOwnCertificates() : [],
546
471
  userId,
547
- ksp
472
+ ksp,
473
+ keyId
548
474
  );
549
475
  return this._readedKey;
550
476
  }
@@ -570,7 +496,7 @@ export default class DigitalSignature {
570
496
  * @returns {KSPSettings[]} Список поддержирживаемых облачных провайдеров
571
497
  */
572
498
  get KSPs() {
573
- return this._KSPs.asArray();
499
+ return this._glSign.KSPs;
574
500
  }
575
501
 
576
502
  /**
@@ -632,7 +558,7 @@ export default class DigitalSignature {
632
558
  signType = new EndUserSignContainerInfo();
633
559
  signType.type = EndUserConstants.EndUserSignContainerType.CAdES;
634
560
  signType.subType = EndUserConstants.EndUserCAdESType.Enveloped;
635
- } else if (typeof signType != "object") {
561
+ } else if (isDefaultValue(signType)) {
636
562
  // По умолчанию создаётся подпись CAdES Detached
637
563
  signType = new EndUserSignContainerInfo();
638
564
  signType.type = EndUserConstants.EndUserSignContainerType.CAdES;
@@ -1033,7 +959,7 @@ export default class DigitalSignature {
1033
959
  key = new HardwarePrivateKeyInfo(key.keyType, key.ownerInfo, key.certificates, key.keyMedia);
1034
960
  }
1035
961
  else if (key.keyType == DigitalSignatureKeyType.KSP) {
1036
- key = new KspPrivateKeyInfo(key.keyType, key.ownerInfo, key.certificates, key.userId, key.ksp);
962
+ key = new KspPrivateKeyInfo(key.keyType, key.ownerInfo, key.certificates, key.userId, key.ksp, key.keyId);
1037
963
  }
1038
964
  const certs = [];
1039
965
  key.certificates.forEach(cert => {
@@ -1110,11 +1036,11 @@ export default class DigitalSignature {
1110
1036
  /**
1111
1037
  * Проверка доступности Дiя
1112
1038
  */
1113
- async _diiaCheckAccess() {
1039
+ async _diiaCheckAccess(ksp) {
1114
1040
  const diia = "DIIA";
1115
1041
  if (sessionStorage[diia] != "+") {
1116
1042
  try {
1117
- sessionStorage[diia] = await downloadData(new URL(this._KSPs.diia.address).origin + "/diia");
1043
+ sessionStorage[diia] = await downloadData(new URL(ksp.address).origin + "/diia");
1118
1044
  } catch {
1119
1045
  throw {
1120
1046
  code: EndUserError.EU_ERROR_TRANSMIT_REQUEST,
package/src/GlSign.js CHANGED
@@ -1,4 +1,7 @@
1
1
  /* eslint-disable no-magic-numbers */
2
+
3
+ import { getDefaultKSPs } from "./Models";
4
+
2
5
  /**
3
6
  * ПГУ GlSign
4
7
  */
@@ -68,6 +71,24 @@ export default class GlSign {
68
71
  this.AgentSignWeb = this._getZoneValue(settingArray, 21) === "+";
69
72
  this.TestCAConnection = this._getZoneValue(settingArray, 22) === "+";
70
73
  this.DontSaveToRegistry = this._getZoneValue(settingArray, 23) === "+";
74
+
75
+ var ksps = this._getZoneValue(settingArray, 24);
76
+ if (!ksps) {
77
+ this.KSPs = getDefaultKSPs();
78
+ } else {
79
+ try {
80
+ ksps = Buffer.from(ksps, "base64").toString();
81
+ this.KSPs = JSON.parse(ksps);
82
+ } catch (error) {
83
+ console.error("error parsing KSPs from GlSign");
84
+ console.error(error);
85
+ }
86
+
87
+ if (!this.KSPs || this.KSPs.length === 0)
88
+ {
89
+ this.KSPs = getDefaultKSPs();
90
+ }
91
+ }
71
92
  }
72
93
  _getZoneValue(zones, zone) {
73
94
  if (zones.length >= zone) {
package/src/Models.js CHANGED
@@ -1,8 +1,8 @@
1
- import { EndUserCertificate, EndUserError, EndUserOwnerInfo, EndUserConstants } from "../euscp/euscp";
1
+ import { EndUserCertificate, EndUserError, EndUserOwnerInfo, EndUserConstants, KSPSettings } from "../euscp/euscp";
2
2
  import GlSign from "./GlSign";
3
3
  import { downloadData, byteArrayToBase64, base64ToByteArray, signAlgoToHashAlgo, getSupportedSignAlgos } from "./Utils";
4
4
 
5
- const LIBRARY_VERSION = "1.3.53";
5
+ const LIBRARY_VERSION = "1.3.54";
6
6
 
7
7
  /**
8
8
  * Параметры библиотеки электронной подписи
@@ -279,6 +279,26 @@ export const DigitalSignatureKeyType = {
279
279
  KSP: DigitalSignatureKeyTypeKSP,
280
280
  };
281
281
 
282
+ export const EU_KSP_GRYADA = -1;
283
+ export const EU_KSP_IIT = 4;
284
+ export const EU_KSP_PB = 6;
285
+ export const EU_KSP_DIIA = 7;
286
+
287
+ export const EndUserKSP = {
288
+ IIT: EU_KSP_IIT,
289
+ PB: EU_KSP_PB,
290
+ DIIA: EU_KSP_DIIA,
291
+ GRYADA: EU_KSP_GRYADA
292
+ }
293
+
294
+ export const EndUserKSPClientIdType = {
295
+ Default: 0,
296
+ Name: 1,
297
+ Phone: 2,
298
+ Email: 3,
299
+ NamePassword: -1
300
+ }
301
+
282
302
  export class PrivateKeyInfo {
283
303
  /**
284
304
  * @param {number} keyType - Тип ключа
@@ -403,9 +423,77 @@ export class KspPrivateKeyInfo extends PrivateKeyInfo {
403
423
  * @param {string} userId - Идентификатор пользователя
404
424
  * @param {EndUserKSP} ksp - Объект KSP
405
425
  */
406
- constructor(keyType, ownerInfo, certificates, userId, ksp) {
426
+ constructor(keyType, ownerInfo, certificates, userId, ksp, keyId) {
407
427
  super(keyType, ownerInfo, certificates, userId, userId);
408
428
  this.userId = userId;
409
429
  this.ksp = ksp;
430
+ this.keyId = keyId;
410
431
  }
411
432
  }
433
+
434
+ export function getDefaultKSPs() {
435
+ const depositsign = new KSPSettings();
436
+ depositsign.id = "depositsign";
437
+ depositsign.name = "DepositSign";
438
+ depositsign.ksp = EndUserConstants.EU_KSP_IIT;
439
+ depositsign.address = "https://depositsign.com/api/v1/it-enterprise/sign-server";
440
+ depositsign.directAccess = true;
441
+ depositsign.needQRCode = false;
442
+
443
+ const diia = new KSPSettings();
444
+ diia.id = "diia-sign";
445
+ diia.name = "Дія.Підпис";
446
+ diia.ksp = EndUserConstants.EU_KSP_DIIA;
447
+ diia.directAccess = true;
448
+ diia.mobileAppName = "Дія";
449
+ diia.address = "https://diia-sign.it.ua/KSPSign";
450
+ diia.systemId = "diia-sign-it-ent";
451
+ diia.needQRCode = true;
452
+
453
+ const smartId = new KSPSettings();
454
+ smartId.id = "pb-smartid";
455
+ smartId.name = "Приватбанк - хмарний підпис \"SmartID\"";
456
+ smartId.ksp = EndUserConstants.EU_KSP_PB;
457
+ smartId.directAccess = true;
458
+ smartId.mobileAppName = "Приват24";
459
+ smartId.address = "https://acsk.privatbank.ua/cloud/api/back/";
460
+ smartId.clientIdPrefix = "IEIS_";
461
+ smartId.confirmationURL = "https://www.privat24.ua/rd/kep";
462
+ smartId.needQRCode = true;
463
+
464
+ const vchasno = new KSPSettings();
465
+ vchasno.id = "vchasno";
466
+ vchasno.name = "Вчасно - хмарний підпис";
467
+ vchasno.ksp = EndUserConstants.EU_KSP_IIT;
468
+ vchasno.address = "https://cs.vchasno.ua/ss/";
469
+ vchasno.directAccess = true;
470
+ vchasno.needQRCode = false;
471
+
472
+ const cloudKey = new KSPSettings();
473
+ cloudKey.id = "cloudkey";
474
+ cloudKey.name = "ТОВ «ЦСК «Україна» - хмарний підпис CloudKey";
475
+ cloudKey.ksp = EndUserConstants.EU_KSP_PB;
476
+ cloudKey.directAccess = true;
477
+ cloudKey.mobileAppName = "CloudKey";
478
+ cloudKey.address = "https://sid.uakey.com.ua/smartid/iit/";
479
+ cloudKey.clientIdPrefix = "DIIA_2";
480
+ cloudKey.confirmationURL = "https://sid.uakey.com.ua/kep?hash=rd/kep";
481
+ cloudKey.needQRCode = true;
482
+
483
+ const esign = new KSPSettings();
484
+ esign.id = "esign";
485
+ esign.name = "ESign - хмарний підпис";
486
+ esign.ksp = EndUserConstants.EU_KSP_IIT;
487
+ esign.address = "https://cabinet.e-life.com.ua/api/EDG/Sign";
488
+ esign.directAccess = true;
489
+ esign.needQRCode = false;
490
+
491
+ return [
492
+ depositsign,
493
+ diia,
494
+ smartId,
495
+ vchasno,
496
+ cloudKey,
497
+ esign
498
+ ];
499
+ }
package/src/Utils.js CHANGED
@@ -232,3 +232,7 @@ export async function downloadAndSignFiles(fileUrl, signFunc) {
232
232
  return returnNamedData ? sign : (sign.val || sign);
233
233
  }
234
234
  }
235
+
236
+ export function isDefaultValue(value) {
237
+ return value === false || value === null || typeof value === "undefined";
238
+ }