@it-enterprise/digital-signature 1.3.8 → 1.3.10

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.3.8",
3
+ "version": "1.3.10",
4
4
  "description": "digital signature",
5
5
  "private": false,
6
6
  "main": "src/index.js",
@@ -615,11 +615,24 @@ export default class DigitalSignature {
615
615
  asByteArray = false;
616
616
  }
617
617
 
618
- if (this.readedKey.keyType === DigitalSignatureKeyType.KSP && signType.type !== EndUserConstants.EndUserSignContainerType.CAdES) {
619
- throw {
620
- code: EndUserError.EU_ERROR_NOT_SUPPORTED,
621
- message: this._resourses.KSPSignFormatError
622
- };
618
+ if (this.readedKey.keyType === DigitalSignatureKeyType.KSP) {
619
+ if (signType.type !== EndUserConstants.EU_SIGN_CONTAINER_TYPE_CADES &&
620
+ signType.type !== EndUserConstants.EU_SIGN_CONTAINER_TYPE_PADES) {
621
+ throw {
622
+ code: EndUserError.EU_ERROR_NOT_SUPPORTED,
623
+ message: this._resourses.KSPSignFormatError
624
+ };
625
+ }
626
+
627
+ if (signType.type === EndUserConstants.EU_SIGN_CONTAINER_TYPE_PADES) {
628
+ const ksp = typeof this.readedKey.ksp === "object" ? this.readedKey.ksp.ksp : this.readedKey.ksp;
629
+ if (ksp != EndUserKSP.GRYADA) {
630
+ throw {
631
+ code: EndUserError.EU_ERROR_NOT_SUPPORTED,
632
+ message: this._resourses.KSPSignPAdESError
633
+ };
634
+ }
635
+ }
623
636
  }
624
637
 
625
638
  if (signType.type === EndUserConstants.EndUserSignContainerType.ASiC) {
@@ -11,7 +11,8 @@
11
11
  "PrivateKeyNotReaded": "Особистий ключ не считано.",
12
12
  "DiiaError": "Дія.Підпис – сервіс для накладання кваліфікованого електронного підпису за допомогою смартфону і додатку «Дія».<br/>Для можливості використання «Дія.Підпис» у даній інсталяції системи вам необхідно звернутися до свого постачальника.<br/>У зверненні вкажіть наступну інформацію:<br/><ul><li>Посилання: ",
13
13
  "XadesError": "Перевірка кваліфікованого електронного підпису, який сформовано у вигляді окремого файлу з розширенням .xml виконується за умов наявності файлу з даними, на які накладено кваліфікований електронний підпис. Ім`я такого файлу зазвичай ідентичне з іменем файлу файлу з розширенням .xml. Оберіть цей файл разом з файлом кваліфікованого електронного підпису.",
14
- "KSPSignFormatError": "Хмарні сервіси підтримують тільки підписи типу CAdES",
14
+ "KSPSignFormatError": "Хмарні сервіси підтримують тільки підписи типу CAdES або PAdES",
15
+ "KSPSignPAdESError": "Створення підписів в форматі PAdES підтримується тільки для Серверу підпису",
15
16
  "BadSignatureType": "Невірний тип підпису",
16
17
  "DownloadingRootCertificatesError": "Помилка при завантаженні сертифікатів ЦСК або списку ЦСК. Перевірте наявність налаштувань ЦСК в функції \"Інструменти і налаштування → Електронний підпис → Налаштування ЦСК\" та виконання задачі планувальника UPDATECASCERTIFICATES.",
17
18
  "BadParameter": "Невірний параметр",
@@ -32,7 +33,8 @@
32
33
  "PrivateKeyNotReaded": "Приватный ключ не считан.",
33
34
  "DiiaError": "Дія.Підпис – сервис для наложения квалифицированной электронной подписи с помощью смартфона и приложения «Дія».<br/>Для возможности использования «Дія.Підпис» в данной инсталляции системы вам необходимо обратиться к своему поставщику.<br/>В обращении укажите следующую информацию:<br/><ul><li>Ссылка: ",
34
35
  "XadesError": "Проверка квалифицированной электронной подписи, которая сформирована в виде отдельного файла с расширением .xml, выполняется при наличии файла с данными, на которые наложена квалифицированная электронная подпись. Имя такого файла обычно идентично с именем файла с расширением .xml. Выберите этот файл вместе с квалифицированной электронной подписью.",
35
- "KSPSignFormatError": "Облачные сервисы поддерживают только подписи типа CAdES",
36
+ "KSPSignFormatError": "Облачные сервисы поддерживают только подписи типа CAdES или PAdES",
37
+ "KSPSignPAdESError": "Создание подписей в формате PAdES поддерживается только для Сервера подписи",
36
38
  "BadSignatureType": "Неверный тип подписи",
37
39
  "DownloadingRootCertificatesError": "Ошибка при загрузке корневых сертификатов ЦСК, либо списка ЦСК. Проверьте наличие настроек ЦСК в функции \"Инструменты и настройки → Электронная подпись → Настройки ЦСК\" и выполнение задачи планировщика UPDATECASCERTIFICATES.",
38
40
  "BadParameter": "Неверный параметр",
@@ -53,7 +55,8 @@
53
55
  "PrivateKeyNotReaded": "Private key not readed.",
54
56
  "DiiaError": "Diia.Sign - a service for applying a qualified digital signature using a smartphone and the application \"Дія\". <br/> To be able to use \"Diia.Sign\" in this system, you need to contact your provider. <br/> Please include the following information in your request: <br/> <ul> <li> Link: ",
55
57
  "XadesError": "The verification of a qualified digital signature, which is formed as a separate file with the extension .xml, is performed under the conditions of the file with the data on which the qualified digital signature is affixed. The name of such a file is usually identical to the filename of the .xml file. Select this file along with the qualified digital signature file.",
56
- "KSPSignFormatError": "Cloud services only supports CAdES signatures",
58
+ "KSPSignFormatError": "Cloud services only supports CAdES or PAdES signatures",
59
+ "KSPSignPAdESError": "PAdES signatures are supported only by SignServer",
57
60
  "BadSignatureType": "Invalid signature type",
58
61
  "DownloadingRootCertificatesError": "Error occured while downloading root CA certificates or CA list. Check for CA setting in function \"Tools and settings → Electronic signature → CA settings\" and execution of task scheduler UPDATECASCERTIFICATES.",
59
62
  "BadParameter": "Invalid parameter",
@@ -12484,6 +12484,10 @@ EndUserKSP.prototype._CtxReadPrivateKeyWithServer = function(
12484
12484
  return;
12485
12485
  }
12486
12486
 
12487
+ if (authData && typeof authData.val != 'string') {
12488
+ authData.val = pThis.m_euSign.Base64Encode(item.val);
12489
+ }
12490
+
12487
12491
  var originatorDescription = caption ?
12488
12492
  caption :
12489
12493
  SS_SERVER_ORIGINATOR_DESCRIPTION.replace("%s",
@@ -13817,23 +13821,35 @@ EndUser.prototype.GetCASettings = function(CACommonName) {
13817
13821
 
13818
13822
  //-------------------------------------------------------------------------------
13819
13823
 
13820
- EndUser.prototype.GetDefaultTSPSettings = function() {
13821
- var pThis = this;
13822
- var CA = null;
13824
+ EndUser.prototype.GetDefaultTSPSettings = function(settings) {
13825
+ var tsp = null;
13823
13826
 
13824
- var CAs = pThis.m_settings.CAs;
13825
- for (var i = 0; i < CAs.length; i++) {
13826
- if (!CAs[i].tspAddress || !CAs[i].tspAddressPort)
13827
- continue;
13827
+ if (settings.TSPServer) {
13828
+ tsp = settings.TSPServer;
13829
+ } else {
13830
+ var CA = null;
13828
13831
 
13829
- if (!CA || CAs[i].tspAddressPort == "80")
13830
- CA = CAs[i];
13832
+ var CAs = settings.CAs;
13833
+ for (var i = 0; i < CAs.length; i++) {
13834
+ if (!CAs[i].tspAddress || !CAs[i].tspAddressPort)
13835
+ continue;
13831
13836
 
13832
- if (CA.tspAddressPort == "80")
13833
- break;
13837
+ if (!CA || CAs[i].tspAddressPort == "80")
13838
+ CA = CAs[i];
13839
+
13840
+ if (CA.tspAddressPort == "80")
13841
+ break;
13842
+ }
13843
+
13844
+ if (CA) {
13845
+ tsp = {
13846
+ "address": CA.tspAddress,
13847
+ "port": CA.tspAddressPort
13848
+ };
13849
+ }
13834
13850
  }
13835
13851
 
13836
- return CA;
13852
+ return tsp;
13837
13853
  };
13838
13854
 
13839
13855
  //-------------------------------------------------------------------------------
@@ -13857,7 +13873,8 @@ EndUser.prototype.SetCMPSettings = function(CACommonName) {
13857
13873
  var euSign = pThis.m_euSign;
13858
13874
  var CA = pThis.GetCASettings(CACommonName);
13859
13875
 
13860
- if (CACommonName && (CA == null)) {
13876
+ if (CACommonName && (CA == null) &&
13877
+ !pThis.m_settings.allowForeignCAs) {
13861
13878
  euSign.RaiseError(EU_ERROR_WRITE_SETTINGS);
13862
13879
  return;
13863
13880
  }
@@ -14533,7 +14550,7 @@ EndUser.prototype.Initialize = function(settings, onSuccess, onError) {
14533
14550
 
14534
14551
  var CAs = settings.CAs;
14535
14552
  var offline = true;
14536
- var tspSettings = pThis.GetDefaultTSPSettings();
14553
+ var tspSettings = pThis.GetDefaultTSPSettings(settings);
14537
14554
  var useOCSP = false;
14538
14555
 
14539
14556
  for (var i = 0; i < CAs.length; i++) {
@@ -14553,8 +14570,8 @@ EndUser.prototype.Initialize = function(settings, onSuccess, onError) {
14553
14570
  var tsp = euSign.CreateTSPSettings();
14554
14571
  tsp.SetGetStamps(!!tspSettings);
14555
14572
  if (tspSettings) {
14556
- tsp.SetAddress(tspSettings.tspAddress);
14557
- tsp.SetPort(tspSettings.tspAddressPort);
14573
+ tsp.SetAddress(tspSettings.address);
14574
+ tsp.SetPort(tspSettings.port);
14558
14575
  }
14559
14576
  euSign.SetTSPSettings(tsp);
14560
14577
 
@@ -17024,11 +17041,19 @@ EndUserKSP.prototype._CtxSignHashesWithServer = (function(_super) {
17024
17041
  hashesValues.push(item.val);
17025
17042
  }
17026
17043
 
17027
- pThis._SignServerSendRequest(basePath + "/Sign/HashArray", JSON.stringify({
17028
- keyName: kspSettings.systemId,
17029
- keyPassword: "##" + keyContext.userId + "##" + keyContext.keyId,
17030
- hashes: hashesValues
17031
- }), onSuccess, onError);
17044
+ if (signContainerType == EndUserKSP.EU_KSP_SIGN_CONTAINER_PADES) {
17045
+ pThis._SignServerSendRequest(basePath + "/Sign/HashPDF", JSON.stringify({
17046
+ keyName: kspSettings.systemId,
17047
+ keyPassword: "##" + keyContext.userId + "##" + keyContext.keyId,
17048
+ hashes: hashesValues
17049
+ }), onSuccess, onError);
17050
+ } else {
17051
+ pThis._SignServerSendRequest(basePath + "/Sign/HashArray", JSON.stringify({
17052
+ keyName: kspSettings.systemId,
17053
+ keyPassword: "##" + keyContext.userId + "##" + keyContext.keyId,
17054
+ hashes: hashesValues
17055
+ }), onSuccess, onError);
17056
+ }
17032
17057
  return;
17033
17058
 
17034
17059
  } else if (kspSettings.ksp == EndUserKSP.EU_KSP_VTOKEN) {
@@ -12484,6 +12484,10 @@ EndUserKSP.prototype._CtxReadPrivateKeyWithServer = function(
12484
12484
  return;
12485
12485
  }
12486
12486
 
12487
+ if (authData && typeof authData.val != 'string') {
12488
+ authData.val = pThis.m_euSign.Base64Encode(item.val);
12489
+ }
12490
+
12487
12491
  var originatorDescription = caption ?
12488
12492
  caption :
12489
12493
  SS_SERVER_ORIGINATOR_DESCRIPTION.replace("%s",
@@ -13817,23 +13821,35 @@ EndUser.prototype.GetCASettings = function(CACommonName) {
13817
13821
 
13818
13822
  //-------------------------------------------------------------------------------
13819
13823
 
13820
- EndUser.prototype.GetDefaultTSPSettings = function() {
13821
- var pThis = this;
13822
- var CA = null;
13824
+ EndUser.prototype.GetDefaultTSPSettings = function(settings) {
13825
+ var tsp = null;
13823
13826
 
13824
- var CAs = pThis.m_settings.CAs;
13825
- for (var i = 0; i < CAs.length; i++) {
13826
- if (!CAs[i].tspAddress || !CAs[i].tspAddressPort)
13827
- continue;
13827
+ if (settings.TSPServer) {
13828
+ tsp = settings.TSPServer;
13829
+ } else {
13830
+ var CA = null;
13828
13831
 
13829
- if (!CA || CAs[i].tspAddressPort == "80")
13830
- CA = CAs[i];
13832
+ var CAs = settings.CAs;
13833
+ for (var i = 0; i < CAs.length; i++) {
13834
+ if (!CAs[i].tspAddress || !CAs[i].tspAddressPort)
13835
+ continue;
13831
13836
 
13832
- if (CA.tspAddressPort == "80")
13833
- break;
13837
+ if (!CA || CAs[i].tspAddressPort == "80")
13838
+ CA = CAs[i];
13839
+
13840
+ if (CA.tspAddressPort == "80")
13841
+ break;
13842
+ }
13843
+
13844
+ if (CA) {
13845
+ tsp = {
13846
+ "address": CA.tspAddress,
13847
+ "port": CA.tspAddressPort
13848
+ };
13849
+ }
13834
13850
  }
13835
13851
 
13836
- return CA;
13852
+ return tsp;
13837
13853
  };
13838
13854
 
13839
13855
  //-------------------------------------------------------------------------------
@@ -13857,7 +13873,8 @@ EndUser.prototype.SetCMPSettings = function(CACommonName) {
13857
13873
  var euSign = pThis.m_euSign;
13858
13874
  var CA = pThis.GetCASettings(CACommonName);
13859
13875
 
13860
- if (CACommonName && (CA == null)) {
13876
+ if (CACommonName && (CA == null) &&
13877
+ !pThis.m_settings.allowForeignCAs) {
13861
13878
  euSign.RaiseError(EU_ERROR_WRITE_SETTINGS);
13862
13879
  return;
13863
13880
  }
@@ -14533,7 +14550,7 @@ EndUser.prototype.Initialize = function(settings, onSuccess, onError) {
14533
14550
 
14534
14551
  var CAs = settings.CAs;
14535
14552
  var offline = true;
14536
- var tspSettings = pThis.GetDefaultTSPSettings();
14553
+ var tspSettings = pThis.GetDefaultTSPSettings(settings);
14537
14554
  var useOCSP = false;
14538
14555
 
14539
14556
  for (var i = 0; i < CAs.length; i++) {
@@ -14553,8 +14570,8 @@ EndUser.prototype.Initialize = function(settings, onSuccess, onError) {
14553
14570
  var tsp = euSign.CreateTSPSettings();
14554
14571
  tsp.SetGetStamps(!!tspSettings);
14555
14572
  if (tspSettings) {
14556
- tsp.SetAddress(tspSettings.tspAddress);
14557
- tsp.SetPort(tspSettings.tspAddressPort);
14573
+ tsp.SetAddress(tspSettings.address);
14574
+ tsp.SetPort(tspSettings.port);
14558
14575
  }
14559
14576
  euSign.SetTSPSettings(tsp);
14560
14577
 
@@ -433,11 +433,19 @@ EndUserKSP.prototype._CtxSignHashesWithServer = (function(_super) {
433
433
  hashesValues.push(item.val);
434
434
  }
435
435
 
436
- pThis._SignServerSendRequest(basePath + "/Sign/HashArray", JSON.stringify({
437
- keyName: kspSettings.systemId,
438
- keyPassword: "##" + keyContext.userId + "##" + keyContext.keyId,
439
- hashes: hashesValues
440
- }), onSuccess, onError);
436
+ if (signContainerType == EndUserKSP.EU_KSP_SIGN_CONTAINER_PADES) {
437
+ pThis._SignServerSendRequest(basePath + "/Sign/HashPDF", JSON.stringify({
438
+ keyName: kspSettings.systemId,
439
+ keyPassword: "##" + keyContext.userId + "##" + keyContext.keyId,
440
+ hashes: hashesValues
441
+ }), onSuccess, onError);
442
+ } else {
443
+ pThis._SignServerSendRequest(basePath + "/Sign/HashArray", JSON.stringify({
444
+ keyName: kspSettings.systemId,
445
+ keyPassword: "##" + keyContext.userId + "##" + keyContext.keyId,
446
+ hashes: hashesValues
447
+ }), onSuccess, onError);
448
+ }
441
449
  return;
442
450
 
443
451
  } else if (kspSettings.ksp == EndUserKSP.EU_KSP_VTOKEN) {