добавлена обработка ошибок при попытке доступа к хранилищу и инициализации подписи

This commit is contained in:
vgoma 2019-12-07 12:41:47 +03:00
parent 68178565b7
commit bdee17ab35
4 changed files with 90 additions and 19 deletions

View File

@ -1,3 +1,8 @@
1.1.2 / 2019-12-07
==================
* Фикс: Дополнена [обработка ошибок](https://github.com/vgoma/crypto-pro/issues/8)
1.1.1 / 2019-12-05
==================

51
dist/crypto-pro.js vendored
View File

@ -1056,11 +1056,19 @@ var CryptoPro =
function getCadesCert(hash) {
return new Promise(function (resolve, reject) {
eval(cryptoCommon.generateAsyncFn(function getCadesCert() {
var oStore = 'yield' + cryptoCommon.createObj('CAdESCOM.Store'),
var oStore,
certs,
certCnt,
cert;
// Получаем доступ к хранилищу
try {
oStore = 'yield' + cryptoCommon.createObj('CAdESCOM.Store');
} catch (err) {
reject('Ошибка при попытке доступа к хранилищу: ' + err.message);
return;
}
if (!oStore) {
reject('Не удалось получить доступ к хранилищу сертификатов');
return;
@ -1149,12 +1157,20 @@ var CryptoPro =
}
eval(cryptoCommon.generateAsyncFn(function getCertsList() {
var oStore = 'yield' + cryptoCommon.createObj('CAdESCOM.Store'),
result = [],
var result = [],
oStore,
certs,
count,
item;
// Получаем доступ к хранилищу
try {
oStore = 'yield' + cryptoCommon.createObj('CAdESCOM.Store');
} catch (err) {
reject('Ошибка при попытке доступа к хранилищу: ' + err.message);
return;
}
// Открываем хранилище
try {
void('yield' + oStore.Open(
@ -1267,12 +1283,21 @@ var CryptoPro =
getCadesCert(hash).then(function (cert) {
eval(cryptoCommon.generateAsyncFn(function signData() {
var clientTime = new Date(),
oAttrs = 'yield' + cryptoCommon.createObj('CADESCOM.CPAttribute'),
oSignedData = 'yield' + cryptoCommon.createObj('CAdESCOM.CadesSignedData'),
oSigner = 'yield' + cryptoCommon.createObj('CAdESCOM.CPSigner'),
oAttrs,
oSignedData,
oSigner,
attrs,
signature;
try {
oAttrs = 'yield' + cryptoCommon.createObj('CADESCOM.CPAttribute');
oSignedData = 'yield' + cryptoCommon.createObj('CAdESCOM.CadesSignedData');
oSigner = 'yield' + cryptoCommon.createObj('CAdESCOM.CPSigner');
} catch (error) {
reject('Ошибка при инициализации подписи: ' + err.message);
return;
}
clientTime = cryptoCommon.getDateObj(clientTime);
try {
@ -1324,11 +1349,19 @@ var CryptoPro =
return new Promise(function (resolve, reject) {
getCadesCert(hash).then(function (cert) {
eval(cryptoCommon.generateAsyncFn(function signDataXML() {
var oSigner = 'yield' + cryptoCommon.createObj('CAdESCOM.CPSigner'),
signerXML = 'yield' + cryptoCommon.createObj('CAdESCOM.SignedXML'),
cnts = cryptoConstants,
var cnts = cryptoConstants,
oSigner,
signerXML,
signature;
try {
oSigner = 'yield' + cryptoCommon.createObj('CAdESCOM.CPSigner');
signerXML = 'yield' + cryptoCommon.createObj('CAdESCOM.SignedXML');
} catch (err) {
reject('Ошибка при инициализации подписи: ' + err.message);
return;
}
// Задаем настройки для подписи
try {
void('yield' + oSigner.propset_Certificate(cert));

File diff suppressed because one or more lines are too long

View File

@ -189,11 +189,19 @@ function isValidEDSSettings() {
function getCadesCert(hash) {
return new Promise(function (resolve, reject) {
eval(cryptoCommon.generateAsyncFn(function getCadesCert() {
var oStore = 'yield' + cryptoCommon.createObj('CAdESCOM.Store'),
var oStore,
certs,
certCnt,
cert;
// Получаем доступ к хранилищу
try {
oStore = 'yield' + cryptoCommon.createObj('CAdESCOM.Store');
} catch (err) {
reject('Ошибка при попытке доступа к хранилищу: ' + err.message);
return;
}
if (!oStore) {
reject('Не удалось получить доступ к хранилищу сертификатов');
return;
@ -282,12 +290,20 @@ function getCertsList(resetCache) {
}
eval(cryptoCommon.generateAsyncFn(function getCertsList() {
var oStore = 'yield' + cryptoCommon.createObj('CAdESCOM.Store'),
result = [],
var result = [],
oStore,
certs,
count,
item;
// Получаем доступ к хранилищу
try {
oStore = 'yield' + cryptoCommon.createObj('CAdESCOM.Store');
} catch (err) {
reject('Ошибка при попытке доступа к хранилищу: ' + err.message);
return;
}
// Открываем хранилище
try {
void('yield' + oStore.Open(
@ -400,12 +416,21 @@ function signData(hash, dataBase64, signType) {
getCadesCert(hash).then(function (cert) {
eval(cryptoCommon.generateAsyncFn(function signData() {
var clientTime = new Date(),
oAttrs = 'yield' + cryptoCommon.createObj('CADESCOM.CPAttribute'),
oSignedData = 'yield' + cryptoCommon.createObj('CAdESCOM.CadesSignedData'),
oSigner = 'yield' + cryptoCommon.createObj('CAdESCOM.CPSigner'),
oAttrs,
oSignedData,
oSigner,
attrs,
signature;
try {
oAttrs = 'yield' + cryptoCommon.createObj('CADESCOM.CPAttribute');
oSignedData = 'yield' + cryptoCommon.createObj('CAdESCOM.CadesSignedData');
oSigner = 'yield' + cryptoCommon.createObj('CAdESCOM.CPSigner');
} catch (error) {
reject('Ошибка при инициализации подписи: ' + err.message);
return;
}
clientTime = cryptoCommon.getDateObj(clientTime);
try {
@ -457,11 +482,19 @@ function signDataXML(hash, dataXML) {
return new Promise(function (resolve, reject) {
getCadesCert(hash).then(function (cert) {
eval(cryptoCommon.generateAsyncFn(function signDataXML() {
var oSigner = 'yield' + cryptoCommon.createObj('CAdESCOM.CPSigner'),
signerXML = 'yield' + cryptoCommon.createObj('CAdESCOM.SignedXML'),
cnts = cryptoConstants,
var cnts = cryptoConstants,
oSigner,
signerXML,
signature;
try {
oSigner = 'yield' + cryptoCommon.createObj('CAdESCOM.CPSigner');
signerXML = 'yield' + cryptoCommon.createObj('CAdESCOM.SignedXML');
} catch (err) {
reject('Ошибка при инициализации подписи: ' + err.message);
return;
}
// Задаем настройки для подписи
try {
void('yield' + oSigner.propset_Certificate(cert));