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

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 1.1.1 / 2019-12-05
================== ==================

51
dist/crypto-pro.js vendored
View File

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