mirror of
				https://github.com/crypto-pro-web/crypto-pro-js.git
				synced 2025-10-31 06:13:22 +03:00 
			
		
		
		
	добавлена обработка ошибок при попытке доступа к хранилищу и инициализации подписи
This commit is contained in:
		
							parent
							
								
									68178565b7
								
							
						
					
					
						commit
						bdee17ab35
					
				| @ -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
									
									
								
							
							
						
						
									
										51
									
								
								dist/crypto-pro.js
									
									
									
									
										vendored
									
									
								
							| @ -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)); | ||||
|  | ||||
							
								
								
									
										2
									
								
								dist/crypto-pro.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/crypto-pro.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										51
									
								
								src/api.js
									
									
									
									
									
								
							
							
						
						
									
										51
									
								
								src/api.js
									
									
									
									
									
								
							| @ -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)); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 vgoma
						vgoma