mirror of
				https://github.com/crypto-pro-web/crypto-pro-js.git
				synced 2025-10-31 06:13:22 +03:00 
			
		
		
		
	Убрана зависимость от Object.keys и Object.assign
This commit is contained in:
		
							parent
							
								
									4abcae1e2f
								
							
						
					
					
						commit
						0c407f2e2b
					
				| @ -7,7 +7,7 @@ | ||||
| - [Mozilla Firefox](https://www.mozilla.org/ru/firefox/new/) (v43+). Начиная с версии 52, с [расширением](https://www.cryptopro.ru/sites/default/files/products/cades/extensions/cryptopro_extension_for_cades_browser_plug_in-1.1.1-an+fx-windows.xpi). | ||||
| - [Internet Explorer](http://windows.microsoft.com/ru-ru/internet-explorer/download-ie) (v8+). | ||||
| 
 | ||||
| Полифиллы необходимо подключать самостоятельно. | ||||
| Полифилл для Promise необходимо подключать самостоятельно. | ||||
| 
 | ||||
| ## Установка и настройка | ||||
| ```bash | ||||
|  | ||||
							
								
								
									
										332
									
								
								dist/1.crypto-pro.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										332
									
								
								dist/1.crypto-pro.js
									
									
									
									
										vendored
									
									
								
							| @ -1,169 +1,177 @@ | ||||
| webpackJsonpCryptoPro([1],[ | ||||
| /* 0 */, | ||||
| /* 1 */, | ||||
| /* 2 */ | ||||
| /* 2 */, | ||||
| /* 3 */, | ||||
| /* 4 */ | ||||
| /***/ function(module, exports, __webpack_require__) { | ||||
| 
 | ||||
| 	var cryptoCommon = __webpack_require__(3), | ||||
| 	var cryptoCommon = __webpack_require__(5), | ||||
| 	    cryptoConstants = __webpack_require__(7), | ||||
| 	 | ||||
| 	    _certProto = { | ||||
| 	        /** | ||||
| 	         * Проверяет, валиден ли сертификат | ||||
| 	         * */ | ||||
| 	        isValid: function isValid() { | ||||
| 	            var cert = this._cert; | ||||
| 	 | ||||
| 	            return new Promise(function (resolve, reject) { | ||||
| 	                cadesplugin.async_spawn(function* () { | ||||
| 	                    var result; | ||||
| 	 | ||||
| 	                    try { | ||||
| 	                        result = yield cert.IsValid(); | ||||
| 	                        result = yield result.Result; | ||||
| 	                    } catch (err) { | ||||
| 	                        reject('Ошибка при проверке сертификата: ', err.message); | ||||
| 	                        return; | ||||
| 	                    } | ||||
| 	 | ||||
| 	                    resolve(result); | ||||
| 	                }); | ||||
| 	            }); | ||||
| 	        }, | ||||
| 	 | ||||
| 	        /** | ||||
| 	         * Достает указанное свойство у сертификата | ||||
| 	         * */ | ||||
| 	        getProp: function (propName) { | ||||
| 	            var cert = this._cert; | ||||
| 	 | ||||
| 	            return new Promise(function (resolve, reject) { | ||||
| 	                cadesplugin.async_spawn(function* () { | ||||
| 	                    var result; | ||||
| 	 | ||||
| 	                    try { | ||||
| 	                        result = yield cert[propName]; | ||||
| 	                    } catch (err) { | ||||
| 	                        reject('Ошибка при обращении к свойству сертификата: ', err.message); | ||||
| 	                        return; | ||||
| 	                    } | ||||
| 	 | ||||
| 	                    resolve(result); | ||||
| 	                }); | ||||
| 	            }); | ||||
| 	        }, | ||||
| 	 | ||||
| 	        /** | ||||
| 	         * Экспорт base64 представления сертификата пользователя | ||||
| 	         * */ | ||||
| 	        exportBase64: function exportBase64() { | ||||
| 	            var cert = this._cert; | ||||
| 	 | ||||
| 	            return new Promise(function (resolve, reject) { | ||||
| 	                cadesplugin.async_spawn(function* () { | ||||
| 	                    var base64; | ||||
| 	 | ||||
| 	                    try { | ||||
| 	                        base64 = yield cert.Export(0); | ||||
| 	                    } catch (err) { | ||||
| 	                        reject('Ошибка при экспорте сертификата: ', err.message); | ||||
| 	                        return; | ||||
| 	                    } | ||||
| 	 | ||||
| 	                    resolve(base64); | ||||
| 	                }); | ||||
| 	            }); | ||||
| 	        }, | ||||
| 	 | ||||
| 	        /** | ||||
| 	         * Возвращает информацию об алгоритме | ||||
| 	         * */ | ||||
| 	        getAlgorithm: function getAlgorithm() { | ||||
| 	            var cert = this._cert; | ||||
| 	 | ||||
| 	            return new Promise(function (resolve, reject) { | ||||
| 	                cadesplugin.async_spawn(function* () { | ||||
| 	                    var result = {}, | ||||
| 	                        algorithm; | ||||
| 	 | ||||
| 	                    try { | ||||
| 	                        algorithm = yield cert.PublicKey(); | ||||
| 	                        algorithm = yield algorithm.Algorithm; | ||||
| 	 | ||||
| 	                        result.algorithm = yield algorithm.FriendlyName; | ||||
| 	                        result.oid = yield algorithm.Value; | ||||
| 	                    } catch (err) { | ||||
| 	                        reject('Ошибка при получении алгоритма: ', err.message); | ||||
| 	                        return; | ||||
| 	                    } | ||||
| 	 | ||||
| 	                    resolve(result); | ||||
| 	                }); | ||||
| 	            }); | ||||
| 	        }, | ||||
| 	 | ||||
| 	        /** | ||||
| 	         * Разбирает SubjectName сертификата по тэгам | ||||
| 	         * */ | ||||
| 	        getOwnerInfo: function getOwnerInfo() { | ||||
| 	            return getCertInfo.call(this, cryptoCommon.subjectNameTagsTranslations, 'SubjectName'); | ||||
| 	        }, | ||||
| 	 | ||||
| 	        /** | ||||
| 	         * Разбирает IssuerName сертификата по тэгам | ||||
| 	         * */ | ||||
| 	        getIssuerInfo: function getIssuerInfo() { | ||||
| 	            return getCertInfo.call(this, cryptoCommon.issuerNameTagsTranslations, 'IssuerName'); | ||||
| 	        }, | ||||
| 	 | ||||
| 	        /** | ||||
| 	         * Получение OID сертификата | ||||
| 	         * | ||||
| 	         * @returns {Array} Возвращает массив OID (улучшенного ключа) | ||||
| 	         * */ | ||||
| 	        getExtendedKeyUsage: function getExtendedKeyUsage() { | ||||
| 	            var cert = this._cert; | ||||
| 	 | ||||
| 	            return new Promise(function (resolve, reject) { | ||||
| 	                cadesplugin.async_spawn(function* () { | ||||
| 	                    var OIDS = [], | ||||
| 	                        count, | ||||
| 	                        item; | ||||
| 	 | ||||
| 	                    try { | ||||
| 	                        count = yield cert.ExtendedKeyUsage(); | ||||
| 	                        count = yield count.EKUs; | ||||
| 	                        count = yield count.Count; | ||||
| 	 | ||||
| 	                        if (count > 0) { | ||||
| 	                            while (count > 0) { | ||||
| 	                                item = yield cert.ExtendedKeyUsage(); | ||||
| 	                                item = yield item.EKUs; | ||||
| 	                                item = yield item.Item(count); | ||||
| 	                                item = yield item.OID; | ||||
| 	 | ||||
| 	                                OIDS.push(item); | ||||
| 	 | ||||
| 	                                count--; | ||||
| 	                            } | ||||
| 	                        } | ||||
| 	                    } catch (err) { | ||||
| 	                        reject('Ошибка при получении ОИД\'ов: ', err.message); | ||||
| 	                        return; | ||||
| 	                    } | ||||
| 	 | ||||
| 	                    resolve(OIDS); | ||||
| 	                }); | ||||
| 	            }); | ||||
| 	        }, | ||||
| 	 | ||||
| 	        getDecodedExtendedKeyUsage: cryptoCommon.getDecodedExtendedKeyUsage, | ||||
| 	 | ||||
| 	        hasExtendedKeyUsage: cryptoCommon.hasExtendedKeyUsage | ||||
| 	    }, | ||||
| 	 | ||||
| 	    _certListCache; | ||||
| 	 | ||||
| 	function Certificate(item) { | ||||
| 	    this._cert = item._cert; | ||||
| 	    this.thumbprint = item.thumbprint; | ||||
| 	    this.subjectName = item.subjectName; | ||||
| 	    this.issuerName = item.issuerName; | ||||
| 	    this.validFrom = item.validFrom; | ||||
| 	    this.validTo = item.validTo; | ||||
| 	} | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Проверяет, валиден ли сертификат | ||||
| 	 * */ | ||||
| 	Certificate.prototype.isValid = function isValid() { | ||||
| 	    var cert = this._cert; | ||||
| 	 | ||||
| 	    return new Promise(function (resolve, reject) { | ||||
| 	        cadesplugin.async_spawn(function* () { | ||||
| 	            var result; | ||||
| 	 | ||||
| 	            try { | ||||
| 	                result = yield cert.IsValid(); | ||||
| 	                result = yield result.Result; | ||||
| 	            } catch (err) { | ||||
| 	                reject('Ошибка при проверке сертификата: ', err.message); | ||||
| 	                return; | ||||
| 	            } | ||||
| 	 | ||||
| 	            resolve(result); | ||||
| 	        }); | ||||
| 	    }); | ||||
| 	}; | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Достает указанное свойство у сертификата | ||||
| 	 * */ | ||||
| 	Certificate.prototype.getProp = function (propName) { | ||||
| 	    var cert = this._cert; | ||||
| 	 | ||||
| 	    return new Promise(function (resolve, reject) { | ||||
| 	        cadesplugin.async_spawn(function* () { | ||||
| 	            var result; | ||||
| 	 | ||||
| 	            try { | ||||
| 	                result = yield cert[propName]; | ||||
| 	            } catch (err) { | ||||
| 	                reject('Ошибка при обращении к свойству сертификата: ', err.message); | ||||
| 	                return; | ||||
| 	            } | ||||
| 	 | ||||
| 	            resolve(result); | ||||
| 	        }); | ||||
| 	    }); | ||||
| 	}; | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Экспорт base64 представления сертификата пользователя | ||||
| 	 * */ | ||||
| 	Certificate.prototype.exportBase64 = function exportBase64() { | ||||
| 	    var cert = this._cert; | ||||
| 	 | ||||
| 	    return new Promise(function (resolve, reject) { | ||||
| 	        cadesplugin.async_spawn(function* () { | ||||
| 	            var base64; | ||||
| 	 | ||||
| 	            try { | ||||
| 	                base64 = yield cert.Export(0); | ||||
| 	            } catch (err) { | ||||
| 	                reject('Ошибка при экспорте сертификата: ', err.message); | ||||
| 	                return; | ||||
| 	            } | ||||
| 	 | ||||
| 	            resolve(base64); | ||||
| 	        }); | ||||
| 	    }); | ||||
| 	}; | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Возвращает информацию об алгоритме | ||||
| 	 * */ | ||||
| 	Certificate.prototype.getAlgorithm = function getAlgorithm() { | ||||
| 	    var cert = this._cert; | ||||
| 	 | ||||
| 	    return new Promise(function (resolve, reject) { | ||||
| 	        cadesplugin.async_spawn(function* () { | ||||
| 	            var result = {}, | ||||
| 	                algorithm; | ||||
| 	 | ||||
| 	            try { | ||||
| 	                algorithm = yield cert.PublicKey(); | ||||
| 	                algorithm = yield algorithm.Algorithm; | ||||
| 	 | ||||
| 	                result.algorithm = yield algorithm.FriendlyName; | ||||
| 	                result.oid = yield algorithm.Value; | ||||
| 	            } catch (err) { | ||||
| 	                reject('Ошибка при получении алгоритма: ', err.message); | ||||
| 	                return; | ||||
| 	            } | ||||
| 	 | ||||
| 	            resolve(result); | ||||
| 	        }); | ||||
| 	    }); | ||||
| 	}; | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Разбирает SubjectName сертификата по тэгам | ||||
| 	 * */ | ||||
| 	Certificate.prototype.getOwnerInfo = function getOwnerInfo() { | ||||
| 	    return getCertInfo.call(this, cryptoCommon.subjectNameTagsTranslations, 'SubjectName'); | ||||
| 	}; | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Разбирает IssuerName сертификата по тэгам | ||||
| 	 * */ | ||||
| 	Certificate.prototype.getIssuerInfo = function getIssuerInfo() { | ||||
| 	    return getCertInfo.call(this, cryptoCommon.issuerNameTagsTranslations, 'IssuerName'); | ||||
| 	}; | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Получение OID сертификата | ||||
| 	 * | ||||
| 	 * @returns {Array} Возвращает массив OID (улучшенного ключа) | ||||
| 	 * */ | ||||
| 	Certificate.prototype.getExtendedKeyUsage = function getExtendedKeyUsage() { | ||||
| 	    var cert = this._cert; | ||||
| 	 | ||||
| 	    return new Promise(function (resolve, reject) { | ||||
| 	        cadesplugin.async_spawn(function* () { | ||||
| 	            var OIDS = [], | ||||
| 	                count, | ||||
| 	                item; | ||||
| 	 | ||||
| 	            try { | ||||
| 	                count = yield cert.ExtendedKeyUsage(); | ||||
| 	                count = yield count.EKUs; | ||||
| 	                count = yield count.Count; | ||||
| 	 | ||||
| 	                if (count > 0) { | ||||
| 	                    while (count > 0) { | ||||
| 	                        item = yield cert.ExtendedKeyUsage(); | ||||
| 	                        item = yield item.EKUs; | ||||
| 	                        item = yield item.Item(count); | ||||
| 	                        item = yield item.OID; | ||||
| 	 | ||||
| 	                        OIDS.push(item); | ||||
| 	 | ||||
| 	                        count--; | ||||
| 	                    } | ||||
| 	                } | ||||
| 	            } catch (err) { | ||||
| 	                reject('Ошибка при получении ОИД\'ов: ', err.message); | ||||
| 	                return; | ||||
| 	            } | ||||
| 	 | ||||
| 	            resolve(OIDS); | ||||
| 	        }); | ||||
| 	    }); | ||||
| 	}; | ||||
| 	 | ||||
| 	Certificate.prototype.getDecodedExtendedKeyUsage = cryptoCommon.getDecodedExtendedKeyUsage; | ||||
| 	 | ||||
| 	Certificate.prototype.hasExtendedKeyUsage = cryptoCommon.hasExtendedKeyUsage; | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Проверяет корректность настроек ЭП на машине | ||||
| 	 * */ | ||||
| @ -331,7 +339,7 @@ webpackJsonpCryptoPro([1],[ | ||||
| 	                while (count) { | ||||
| 	                    item = yield certs.Item(count); | ||||
| 	 | ||||
| 	                    result.push(Object.assign(Object.create(_certProto), { | ||||
| 	                    result.push(new Certificate({ | ||||
| 	                        _cert: yield item, | ||||
| 	                        thumbprint: yield item.Thumbprint, | ||||
| 	                        subjectName: yield item.SubjectName, | ||||
| @ -553,10 +561,10 @@ webpackJsonpCryptoPro([1],[ | ||||
| 	}; | ||||
| 
 | ||||
| /***/ }, | ||||
| /* 3 */ | ||||
| /* 5 */ | ||||
| /***/ function(module, exports, __webpack_require__) { | ||||
| 
 | ||||
| 	var bowser = __webpack_require__(4); | ||||
| 	var bowser = __webpack_require__(1); | ||||
| 	var oids = __webpack_require__(6); | ||||
| 	 | ||||
| 	var subjectNameTagsTranslations = [ | ||||
| @ -836,8 +844,6 @@ webpackJsonpCryptoPro([1],[ | ||||
| 	}; | ||||
| 
 | ||||
| /***/ }, | ||||
| /* 4 */, | ||||
| /* 5 */, | ||||
| /* 6 */ | ||||
| /***/ function(module, exports) { | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										2
									
								
								dist/1.crypto-pro.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/1.crypto-pro.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										308
									
								
								dist/2.crypto-pro.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										308
									
								
								dist/2.crypto-pro.js
									
									
									
									
										vendored
									
									
								
							| @ -2,10 +2,12 @@ webpackJsonpCryptoPro([2],[ | ||||
| /* 0 */, | ||||
| /* 1 */, | ||||
| /* 2 */, | ||||
| /* 3 */ | ||||
| /* 3 */, | ||||
| /* 4 */, | ||||
| /* 5 */ | ||||
| /***/ function(module, exports, __webpack_require__) { | ||||
| 
 | ||||
| 	var bowser = __webpack_require__(4); | ||||
| 	var bowser = __webpack_require__(1); | ||||
| 	var oids = __webpack_require__(6); | ||||
| 	 | ||||
| 	var subjectNameTagsTranslations = [ | ||||
| @ -285,8 +287,6 @@ webpackJsonpCryptoPro([2],[ | ||||
| 	}; | ||||
| 
 | ||||
| /***/ }, | ||||
| /* 4 */, | ||||
| /* 5 */, | ||||
| /* 6 */ | ||||
| /***/ function(module, exports) { | ||||
| 
 | ||||
| @ -483,155 +483,161 @@ webpackJsonpCryptoPro([2],[ | ||||
| /* 8 */ | ||||
| /***/ function(module, exports, __webpack_require__) { | ||||
| 
 | ||||
| 	var cryptoCommon = __webpack_require__(3), | ||||
| 	var cryptoCommon = __webpack_require__(5), | ||||
| 	    cryptoConstants = __webpack_require__(7), | ||||
| 	 | ||||
| 	    _certProto = { | ||||
| 	        /** | ||||
| 	         * Проверяет, валиден ли сертификат | ||||
| 	         * */ | ||||
| 	        isValid: function isValid() { | ||||
| 	            var cert = this._cert; | ||||
| 	 | ||||
| 	            return new Promise(function (resolve, reject) { | ||||
| 	                var result; | ||||
| 	 | ||||
| 	                try { | ||||
| 	                    result = cert.IsValid(); | ||||
| 	                    result = result.Result; | ||||
| 	                } catch (err) { | ||||
| 	                    reject('Ошибка при проверке сертификата: ', err.message); | ||||
| 	                    return; | ||||
| 	                } | ||||
| 	 | ||||
| 	                resolve(result); | ||||
| 	            }); | ||||
| 	        }, | ||||
| 	 | ||||
| 	        /** | ||||
| 	         * Достает указанное свойство у сертификата | ||||
| 	         * */ | ||||
| 	        getProp: function (propName) { | ||||
| 	            var cert = this._cert; | ||||
| 	 | ||||
| 	            return new Promise(function (resolve, reject) { | ||||
| 	                var result; | ||||
| 	 | ||||
| 	                try { | ||||
| 	                    result = cert[propName]; | ||||
| 	                } catch (err) { | ||||
| 	                    reject('Ошибка при обращении к свойству сертификата: ', err.message); | ||||
| 	                    return; | ||||
| 	                } | ||||
| 	 | ||||
| 	                resolve(result); | ||||
| 	            }); | ||||
| 	        }, | ||||
| 	 | ||||
| 	        /** | ||||
| 	         * Экспорт base64 представления сертификата пользователя | ||||
| 	         * */ | ||||
| 	        exportBase64: function exportBase64() { | ||||
| 	            var cert = this._cert; | ||||
| 	 | ||||
| 	            return new Promise(function (resolve, reject) { | ||||
| 	                var base64; | ||||
| 	 | ||||
| 	                try { | ||||
| 	                    base64 = cert.Export(0); | ||||
| 	                } catch (err) { | ||||
| 	                    reject('Ошибка при экспорте сертификата: ', err.message); | ||||
| 	                    return; | ||||
| 	                } | ||||
| 	 | ||||
| 	                resolve(base64); | ||||
| 	            }); | ||||
| 	        }, | ||||
| 	 | ||||
| 	        /** | ||||
| 	         * Возвращает информацию об алгоритме | ||||
| 	         * */ | ||||
| 	        getAlgorithm: function getAlgorithm() { | ||||
| 	            var cert = this._cert; | ||||
| 	 | ||||
| 	            return new Promise(function (resolve, reject) { | ||||
| 	                var result = {}, | ||||
| 	                    algorithm; | ||||
| 	 | ||||
| 	                try { | ||||
| 	                    algorithm = cert.PublicKey(); | ||||
| 	                    algorithm = algorithm.Algorithm; | ||||
| 	 | ||||
| 	                    result.algorithm = algorithm.FriendlyName; | ||||
| 	                    result.oid = algorithm.Value; | ||||
| 	                } catch (err) { | ||||
| 	                    reject('Ошибка при получении алгоритма: ', err.message); | ||||
| 	                    return; | ||||
| 	                } | ||||
| 	 | ||||
| 	                resolve(result); | ||||
| 	            }); | ||||
| 	        }, | ||||
| 	 | ||||
| 	        /** | ||||
| 	         * Разбирает SubjectName сертификата по тэгам | ||||
| 	         * */ | ||||
| 	        getOwnerInfo: function getOwnerInfo() { | ||||
| 	            return getCertInfo.call(this, cryptoCommon.subjectNameTagsTranslations, 'SubjectName'); | ||||
| 	        }, | ||||
| 	 | ||||
| 	        /** | ||||
| 	         * Разбирает IssuerName сертификата по тэгам | ||||
| 	         * */ | ||||
| 	        getIssuerInfo: function getIssuerInfo() { | ||||
| 	            return getCertInfo.call(this, cryptoCommon.issuerNameTagsTranslations, 'IssuerName'); | ||||
| 	        }, | ||||
| 	 | ||||
| 	        /** | ||||
| 	         * Получение OID сертификата | ||||
| 	         * Возвращает массив OID (улучшенного ключа) | ||||
| 	         * */ | ||||
| 	        getExtendedKeyUsage: function getExtendedKeyUsage() { | ||||
| 	            var cert = this._cert; | ||||
| 	 | ||||
| 	            return new Promise(function (resolve, reject) { | ||||
| 	                var OIDS = [], | ||||
| 	                    count, | ||||
| 	                    item; | ||||
| 	 | ||||
| 	                try { | ||||
| 	                    count = cert.ExtendedKeyUsage(); | ||||
| 	                    count = count.EKUs; | ||||
| 	                    count = count.Count; | ||||
| 	 | ||||
| 	                    if (count > 0) { | ||||
| 	                        while (count > 0) { | ||||
| 	                            item = cert.ExtendedKeyUsage(); | ||||
| 	                            item = item.EKUs; | ||||
| 	                            item = item.Item(count); | ||||
| 	                            item = item.OID; | ||||
| 	 | ||||
| 	                            OIDS.push(item); | ||||
| 	 | ||||
| 	                            count--; | ||||
| 	                        } | ||||
| 	                    } | ||||
| 	                } catch (err) { | ||||
| 	                    reject('Ошибка при получении ОИД\'ов: ', err.message); | ||||
| 	                    return; | ||||
| 	                } | ||||
| 	 | ||||
| 	                resolve(OIDS); | ||||
| 	            }); | ||||
| 	        }, | ||||
| 	 | ||||
| 	        getDecodedExtendedKeyUsage: cryptoCommon.getDecodedExtendedKeyUsage, | ||||
| 	 | ||||
| 	        hasExtendedKeyUsage: cryptoCommon.hasExtendedKeyUsage | ||||
| 	    }, | ||||
| 	 | ||||
| 	    _certListCache; | ||||
| 	 | ||||
| 	function Certificate(item) { | ||||
| 	    this._cert = item._cert; | ||||
| 	    this.thumbprint = item.thumbprint; | ||||
| 	    this.subjectName = item.subjectName; | ||||
| 	    this.issuerName = item.issuerName; | ||||
| 	    this.validFrom = item.validFrom; | ||||
| 	    this.validTo = item.validTo; | ||||
| 	} | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Проверяет, валиден ли сертификат | ||||
| 	 * */ | ||||
| 	Certificate.prototype.isValid = function isValid() { | ||||
| 	    var cert = this._cert; | ||||
| 	 | ||||
| 	    return new Promise(function (resolve, reject) { | ||||
| 	        var result; | ||||
| 	 | ||||
| 	        try { | ||||
| 	            result = cert.IsValid(); | ||||
| 	            result = result.Result; | ||||
| 	        } catch (err) { | ||||
| 	            reject('Ошибка при проверке сертификата: ', err.message); | ||||
| 	            return; | ||||
| 	        } | ||||
| 	 | ||||
| 	        resolve(result); | ||||
| 	    }); | ||||
| 	}; | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Достает указанное свойство у сертификата | ||||
| 	 * */ | ||||
| 	Certificate.prototype.getProp = function (propName) { | ||||
| 	    var cert = this._cert; | ||||
| 	 | ||||
| 	    return new Promise(function (resolve, reject) { | ||||
| 	        var result; | ||||
| 	 | ||||
| 	        try { | ||||
| 	            result = cert[propName]; | ||||
| 	        } catch (err) { | ||||
| 	            reject('Ошибка при обращении к свойству сертификата: ', err.message); | ||||
| 	            return; | ||||
| 	        } | ||||
| 	 | ||||
| 	        resolve(result); | ||||
| 	    }); | ||||
| 	}; | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Экспорт base64 представления сертификата пользователя | ||||
| 	 * */ | ||||
| 	Certificate.prototype.exportBase64 = function exportBase64() { | ||||
| 	    var cert = this._cert; | ||||
| 	 | ||||
| 	    return new Promise(function (resolve, reject) { | ||||
| 	        var base64; | ||||
| 	 | ||||
| 	        try { | ||||
| 	            base64 = cert.Export(0); | ||||
| 	        } catch (err) { | ||||
| 	            reject('Ошибка при экспорте сертификата: ', err.message); | ||||
| 	            return; | ||||
| 	        } | ||||
| 	 | ||||
| 	        resolve(base64); | ||||
| 	    }); | ||||
| 	}; | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Возвращает информацию об алгоритме | ||||
| 	 * */ | ||||
| 	Certificate.prototype.getAlgorithm = function getAlgorithm() { | ||||
| 	    var cert = this._cert; | ||||
| 	 | ||||
| 	    return new Promise(function (resolve, reject) { | ||||
| 	        var result = {}, | ||||
| 	            algorithm; | ||||
| 	 | ||||
| 	        try { | ||||
| 	            algorithm = cert.PublicKey(); | ||||
| 	            algorithm = algorithm.Algorithm; | ||||
| 	 | ||||
| 	            result.algorithm = algorithm.FriendlyName; | ||||
| 	            result.oid = algorithm.Value; | ||||
| 	        } catch (err) { | ||||
| 	            reject('Ошибка при получении алгоритма: ', err.message); | ||||
| 	            return; | ||||
| 	        } | ||||
| 	 | ||||
| 	        resolve(result); | ||||
| 	    }); | ||||
| 	}; | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Разбирает SubjectName сертификата по тэгам | ||||
| 	 * */ | ||||
| 	Certificate.prototype.getOwnerInfo = function getOwnerInfo() { | ||||
| 	    return getCertInfo.call(this, cryptoCommon.subjectNameTagsTranslations, 'SubjectName'); | ||||
| 	}; | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Разбирает IssuerName сертификата по тэгам | ||||
| 	 * */ | ||||
| 	Certificate.prototype.getIssuerInfo = function getIssuerInfo() { | ||||
| 	    return getCertInfo.call(this, cryptoCommon.issuerNameTagsTranslations, 'IssuerName'); | ||||
| 	}; | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Получение OID сертификата | ||||
| 	 * Возвращает массив OID (улучшенного ключа) | ||||
| 	 * */ | ||||
| 	Certificate.prototype.getExtendedKeyUsage = function getExtendedKeyUsage() { | ||||
| 	    var cert = this._cert; | ||||
| 	 | ||||
| 	    return new Promise(function (resolve, reject) { | ||||
| 	        var OIDS = [], | ||||
| 	            count, | ||||
| 	            item; | ||||
| 	 | ||||
| 	        try { | ||||
| 	            count = cert.ExtendedKeyUsage(); | ||||
| 	            count = count.EKUs; | ||||
| 	            count = count.Count; | ||||
| 	 | ||||
| 	            if (count > 0) { | ||||
| 	                while (count > 0) { | ||||
| 	                    item = cert.ExtendedKeyUsage(); | ||||
| 	                    item = item.EKUs; | ||||
| 	                    item = item.Item(count); | ||||
| 	                    item = item.OID; | ||||
| 	 | ||||
| 	                    OIDS.push(item); | ||||
| 	 | ||||
| 	                    count--; | ||||
| 	                } | ||||
| 	            } | ||||
| 	        } catch (err) { | ||||
| 	            reject('Ошибка при получении ОИД\'ов: ', err.message); | ||||
| 	            return; | ||||
| 	        } | ||||
| 	 | ||||
| 	        resolve(OIDS); | ||||
| 	    }); | ||||
| 	}; | ||||
| 	 | ||||
| 	Certificate.prototype.getDecodedExtendedKeyUsage = cryptoCommon.getDecodedExtendedKeyUsage; | ||||
| 	 | ||||
| 	Certificate.prototype.hasExtendedKeyUsage = cryptoCommon.hasExtendedKeyUsage; | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Проверяет корректность настроек ЭП на машине | ||||
| 	 * */ | ||||
| @ -792,7 +798,7 @@ webpackJsonpCryptoPro([2],[ | ||||
| 	            while (count) { | ||||
| 	                item = certs.Item(count); | ||||
| 	 | ||||
| 	                result.push(Object.assign(Object.create(_certProto), { | ||||
| 	                result.push(new Certificate({ | ||||
| 	                    _cert: item, | ||||
| 	                    thumbprint: item.Thumbprint, | ||||
| 	                    subjectName: item.SubjectName, | ||||
|  | ||||
							
								
								
									
										2
									
								
								dist/2.crypto-pro.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/2.crypto-pro.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										21
									
								
								dist/crypto-pro.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								dist/crypto-pro.js
									
									
									
									
										vendored
									
									
								
							| @ -96,7 +96,7 @@ var CryptoPro = | ||||
| /* 0 */ | ||||
| /***/ function(module, exports, __webpack_require__) { | ||||
| 
 | ||||
| 	var bowser = __webpack_require__(4), | ||||
| 	var bowser = __webpack_require__(1), | ||||
| 	    browserInfo = bowser._detect(navigator.userAgent), | ||||
| 	    global = Function('return this')(), | ||||
| 	    canPromise = Boolean(global.Promise), | ||||
| @ -110,7 +110,7 @@ var CryptoPro = | ||||
| 	 | ||||
| 	global.allow_firefox_cadesplugin_async = browserInfo.firefox && browserInfo.version >= 52; | ||||
| 	 | ||||
| 	__webpack_require__(10); | ||||
| 	__webpack_require__(3); | ||||
| 	 | ||||
| 	cadesplugin = global.cadesplugin; | ||||
| 	 | ||||
| @ -179,7 +179,7 @@ var CryptoPro = | ||||
| 	            function () { | ||||
| 	                if (canAsync) { | ||||
| 	                    __webpack_require__.e/* nsure */(1, function () { | ||||
| 	                        cryptoService = __webpack_require__(2); | ||||
| 	                        cryptoService = __webpack_require__(4); | ||||
| 	                        finishLoading(); | ||||
| 	                    }); | ||||
| 	                } else { | ||||
| @ -207,10 +207,7 @@ var CryptoPro = | ||||
| 	}; | ||||
| 
 | ||||
| /***/ }, | ||||
| /* 1 */, | ||||
| /* 2 */, | ||||
| /* 3 */, | ||||
| /* 4 */ | ||||
| /* 1 */ | ||||
| /***/ function(module, exports, __webpack_require__) { | ||||
| 
 | ||||
| 	/*! | ||||
| @ -221,7 +218,7 @@ var CryptoPro = | ||||
| 	 | ||||
| 	!function (name, definition) { | ||||
| 	  if (typeof module != 'undefined' && module.exports) module.exports = definition() | ||||
| 	  else if (true) __webpack_require__(5)(name, definition) | ||||
| 	  else if (true) __webpack_require__(2)(name, definition) | ||||
| 	  else this[name] = definition() | ||||
| 	}('bowser', function () { | ||||
| 	  /** | ||||
| @ -796,18 +793,14 @@ var CryptoPro = | ||||
| 
 | ||||
| 
 | ||||
| /***/ }, | ||||
| /* 5 */ | ||||
| /* 2 */ | ||||
| /***/ function(module, exports) { | ||||
| 
 | ||||
| 	module.exports = function() { throw new Error("define cannot be used indirect"); }; | ||||
| 
 | ||||
| 
 | ||||
| /***/ }, | ||||
| /* 6 */, | ||||
| /* 7 */, | ||||
| /* 8 */, | ||||
| /* 9 */, | ||||
| /* 10 */ | ||||
| /* 3 */ | ||||
| /***/ function(module, exports) { | ||||
| 
 | ||||
| 	;(function () { | ||||
|  | ||||
							
								
								
									
										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
											
										
									
								
							
							
								
								
									
										320
									
								
								src/apiAsync.js
									
									
									
									
									
								
							
							
						
						
									
										320
									
								
								src/apiAsync.js
									
									
									
									
									
								
							| @ -1,163 +1,169 @@ | ||||
| var cryptoCommon = require('./common'), | ||||
|     cryptoConstants = require('./constants'), | ||||
| 
 | ||||
|     _certProto = { | ||||
|         /** | ||||
|          * Проверяет, валиден ли сертификат | ||||
|          * */ | ||||
|         isValid: function isValid() { | ||||
|             var cert = this._cert; | ||||
| 
 | ||||
|             return new Promise(function (resolve, reject) { | ||||
|                 cadesplugin.async_spawn(function* () { | ||||
|                     var result; | ||||
| 
 | ||||
|                     try { | ||||
|                         result = yield cert.IsValid(); | ||||
|                         result = yield result.Result; | ||||
|                     } catch (err) { | ||||
|                         reject('Ошибка при проверке сертификата: ', err.message); | ||||
|                         return; | ||||
|                     } | ||||
| 
 | ||||
|                     resolve(result); | ||||
|                 }); | ||||
|             }); | ||||
|         }, | ||||
| 
 | ||||
|         /** | ||||
|          * Достает указанное свойство у сертификата | ||||
|          * */ | ||||
|         getProp: function (propName) { | ||||
|             var cert = this._cert; | ||||
| 
 | ||||
|             return new Promise(function (resolve, reject) { | ||||
|                 cadesplugin.async_spawn(function* () { | ||||
|                     var result; | ||||
| 
 | ||||
|                     try { | ||||
|                         result = yield cert[propName]; | ||||
|                     } catch (err) { | ||||
|                         reject('Ошибка при обращении к свойству сертификата: ', err.message); | ||||
|                         return; | ||||
|                     } | ||||
| 
 | ||||
|                     resolve(result); | ||||
|                 }); | ||||
|             }); | ||||
|         }, | ||||
| 
 | ||||
|         /** | ||||
|          * Экспорт base64 представления сертификата пользователя | ||||
|          * */ | ||||
|         exportBase64: function exportBase64() { | ||||
|             var cert = this._cert; | ||||
| 
 | ||||
|             return new Promise(function (resolve, reject) { | ||||
|                 cadesplugin.async_spawn(function* () { | ||||
|                     var base64; | ||||
| 
 | ||||
|                     try { | ||||
|                         base64 = yield cert.Export(0); | ||||
|                     } catch (err) { | ||||
|                         reject('Ошибка при экспорте сертификата: ', err.message); | ||||
|                         return; | ||||
|                     } | ||||
| 
 | ||||
|                     resolve(base64); | ||||
|                 }); | ||||
|             }); | ||||
|         }, | ||||
| 
 | ||||
|         /** | ||||
|          * Возвращает информацию об алгоритме | ||||
|          * */ | ||||
|         getAlgorithm: function getAlgorithm() { | ||||
|             var cert = this._cert; | ||||
| 
 | ||||
|             return new Promise(function (resolve, reject) { | ||||
|                 cadesplugin.async_spawn(function* () { | ||||
|                     var result = {}, | ||||
|                         algorithm; | ||||
| 
 | ||||
|                     try { | ||||
|                         algorithm = yield cert.PublicKey(); | ||||
|                         algorithm = yield algorithm.Algorithm; | ||||
| 
 | ||||
|                         result.algorithm = yield algorithm.FriendlyName; | ||||
|                         result.oid = yield algorithm.Value; | ||||
|                     } catch (err) { | ||||
|                         reject('Ошибка при получении алгоритма: ', err.message); | ||||
|                         return; | ||||
|                     } | ||||
| 
 | ||||
|                     resolve(result); | ||||
|                 }); | ||||
|             }); | ||||
|         }, | ||||
| 
 | ||||
|         /** | ||||
|          * Разбирает SubjectName сертификата по тэгам | ||||
|          * */ | ||||
|         getOwnerInfo: function getOwnerInfo() { | ||||
|             return getCertInfo.call(this, cryptoCommon.subjectNameTagsTranslations, 'SubjectName'); | ||||
|         }, | ||||
| 
 | ||||
|         /** | ||||
|          * Разбирает IssuerName сертификата по тэгам | ||||
|          * */ | ||||
|         getIssuerInfo: function getIssuerInfo() { | ||||
|             return getCertInfo.call(this, cryptoCommon.issuerNameTagsTranslations, 'IssuerName'); | ||||
|         }, | ||||
| 
 | ||||
|         /** | ||||
|          * Получение OID сертификата | ||||
|          * | ||||
|          * @returns {Array} Возвращает массив OID (улучшенного ключа) | ||||
|          * */ | ||||
|         getExtendedKeyUsage: function getExtendedKeyUsage() { | ||||
|             var cert = this._cert; | ||||
| 
 | ||||
|             return new Promise(function (resolve, reject) { | ||||
|                 cadesplugin.async_spawn(function* () { | ||||
|                     var OIDS = [], | ||||
|                         count, | ||||
|                         item; | ||||
| 
 | ||||
|                     try { | ||||
|                         count = yield cert.ExtendedKeyUsage(); | ||||
|                         count = yield count.EKUs; | ||||
|                         count = yield count.Count; | ||||
| 
 | ||||
|                         if (count > 0) { | ||||
|                             while (count > 0) { | ||||
|                                 item = yield cert.ExtendedKeyUsage(); | ||||
|                                 item = yield item.EKUs; | ||||
|                                 item = yield item.Item(count); | ||||
|                                 item = yield item.OID; | ||||
| 
 | ||||
|                                 OIDS.push(item); | ||||
| 
 | ||||
|                                 count--; | ||||
|                             } | ||||
|                         } | ||||
|                     } catch (err) { | ||||
|                         reject('Ошибка при получении ОИД\'ов: ', err.message); | ||||
|                         return; | ||||
|                     } | ||||
| 
 | ||||
|                     resolve(OIDS); | ||||
|                 }); | ||||
|             }); | ||||
|         }, | ||||
| 
 | ||||
|         getDecodedExtendedKeyUsage: cryptoCommon.getDecodedExtendedKeyUsage, | ||||
| 
 | ||||
|         hasExtendedKeyUsage: cryptoCommon.hasExtendedKeyUsage | ||||
|     }, | ||||
| 
 | ||||
|     _certListCache; | ||||
| 
 | ||||
| function Certificate(item) { | ||||
|     this._cert = item._cert; | ||||
|     this.thumbprint = item.thumbprint; | ||||
|     this.subjectName = item.subjectName; | ||||
|     this.issuerName = item.issuerName; | ||||
|     this.validFrom = item.validFrom; | ||||
|     this.validTo = item.validTo; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Проверяет, валиден ли сертификат | ||||
|  * */ | ||||
| Certificate.prototype.isValid = function isValid() { | ||||
|     var cert = this._cert; | ||||
| 
 | ||||
|     return new Promise(function (resolve, reject) { | ||||
|         cadesplugin.async_spawn(function* () { | ||||
|             var result; | ||||
| 
 | ||||
|             try { | ||||
|                 result = yield cert.IsValid(); | ||||
|                 result = yield result.Result; | ||||
|             } catch (err) { | ||||
|                 reject('Ошибка при проверке сертификата: ', err.message); | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             resolve(result); | ||||
|         }); | ||||
|     }); | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Достает указанное свойство у сертификата | ||||
|  * */ | ||||
| Certificate.prototype.getProp = function (propName) { | ||||
|     var cert = this._cert; | ||||
| 
 | ||||
|     return new Promise(function (resolve, reject) { | ||||
|         cadesplugin.async_spawn(function* () { | ||||
|             var result; | ||||
| 
 | ||||
|             try { | ||||
|                 result = yield cert[propName]; | ||||
|             } catch (err) { | ||||
|                 reject('Ошибка при обращении к свойству сертификата: ', err.message); | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             resolve(result); | ||||
|         }); | ||||
|     }); | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Экспорт base64 представления сертификата пользователя | ||||
|  * */ | ||||
| Certificate.prototype.exportBase64 = function exportBase64() { | ||||
|     var cert = this._cert; | ||||
| 
 | ||||
|     return new Promise(function (resolve, reject) { | ||||
|         cadesplugin.async_spawn(function* () { | ||||
|             var base64; | ||||
| 
 | ||||
|             try { | ||||
|                 base64 = yield cert.Export(0); | ||||
|             } catch (err) { | ||||
|                 reject('Ошибка при экспорте сертификата: ', err.message); | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             resolve(base64); | ||||
|         }); | ||||
|     }); | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Возвращает информацию об алгоритме | ||||
|  * */ | ||||
| Certificate.prototype.getAlgorithm = function getAlgorithm() { | ||||
|     var cert = this._cert; | ||||
| 
 | ||||
|     return new Promise(function (resolve, reject) { | ||||
|         cadesplugin.async_spawn(function* () { | ||||
|             var result = {}, | ||||
|                 algorithm; | ||||
| 
 | ||||
|             try { | ||||
|                 algorithm = yield cert.PublicKey(); | ||||
|                 algorithm = yield algorithm.Algorithm; | ||||
| 
 | ||||
|                 result.algorithm = yield algorithm.FriendlyName; | ||||
|                 result.oid = yield algorithm.Value; | ||||
|             } catch (err) { | ||||
|                 reject('Ошибка при получении алгоритма: ', err.message); | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             resolve(result); | ||||
|         }); | ||||
|     }); | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Разбирает SubjectName сертификата по тэгам | ||||
|  * */ | ||||
| Certificate.prototype.getOwnerInfo = function getOwnerInfo() { | ||||
|     return getCertInfo.call(this, cryptoCommon.subjectNameTagsTranslations, 'SubjectName'); | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Разбирает IssuerName сертификата по тэгам | ||||
|  * */ | ||||
| Certificate.prototype.getIssuerInfo = function getIssuerInfo() { | ||||
|     return getCertInfo.call(this, cryptoCommon.issuerNameTagsTranslations, 'IssuerName'); | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Получение OID сертификата | ||||
|  * | ||||
|  * @returns {Array} Возвращает массив OID (улучшенного ключа) | ||||
|  * */ | ||||
| Certificate.prototype.getExtendedKeyUsage = function getExtendedKeyUsage() { | ||||
|     var cert = this._cert; | ||||
| 
 | ||||
|     return new Promise(function (resolve, reject) { | ||||
|         cadesplugin.async_spawn(function* () { | ||||
|             var OIDS = [], | ||||
|                 count, | ||||
|                 item; | ||||
| 
 | ||||
|             try { | ||||
|                 count = yield cert.ExtendedKeyUsage(); | ||||
|                 count = yield count.EKUs; | ||||
|                 count = yield count.Count; | ||||
| 
 | ||||
|                 if (count > 0) { | ||||
|                     while (count > 0) { | ||||
|                         item = yield cert.ExtendedKeyUsage(); | ||||
|                         item = yield item.EKUs; | ||||
|                         item = yield item.Item(count); | ||||
|                         item = yield item.OID; | ||||
| 
 | ||||
|                         OIDS.push(item); | ||||
| 
 | ||||
|                         count--; | ||||
|                     } | ||||
|                 } | ||||
|             } catch (err) { | ||||
|                 reject('Ошибка при получении ОИД\'ов: ', err.message); | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             resolve(OIDS); | ||||
|         }); | ||||
|     }); | ||||
| }; | ||||
| 
 | ||||
| Certificate.prototype.getDecodedExtendedKeyUsage = cryptoCommon.getDecodedExtendedKeyUsage; | ||||
| 
 | ||||
| Certificate.prototype.hasExtendedKeyUsage = cryptoCommon.hasExtendedKeyUsage; | ||||
| 
 | ||||
| /** | ||||
|  * Проверяет корректность настроек ЭП на машине | ||||
|  * */ | ||||
| @ -325,7 +331,7 @@ function getCertsList(resetCache) { | ||||
|                 while (count) { | ||||
|                     item = yield certs.Item(count); | ||||
| 
 | ||||
|                     result.push(Object.assign(Object.create(_certProto), { | ||||
|                     result.push(new Certificate({ | ||||
|                         _cert: yield item, | ||||
|                         thumbprint: yield item.Thumbprint, | ||||
|                         subjectName: yield item.SubjectName, | ||||
|  | ||||
							
								
								
									
										298
									
								
								src/apiSync.js
									
									
									
									
									
								
							
							
						
						
									
										298
									
								
								src/apiSync.js
									
									
									
									
									
								
							| @ -1,152 +1,158 @@ | ||||
| var cryptoCommon = require('./common'), | ||||
|     cryptoConstants = require('./constants'), | ||||
| 
 | ||||
|     _certProto = { | ||||
|         /** | ||||
|          * Проверяет, валиден ли сертификат | ||||
|          * */ | ||||
|         isValid: function isValid() { | ||||
|             var cert = this._cert; | ||||
| 
 | ||||
|             return new Promise(function (resolve, reject) { | ||||
|                 var result; | ||||
| 
 | ||||
|                 try { | ||||
|                     result = cert.IsValid(); | ||||
|                     result = result.Result; | ||||
|                 } catch (err) { | ||||
|                     reject('Ошибка при проверке сертификата: ', err.message); | ||||
|                     return; | ||||
|                 } | ||||
| 
 | ||||
|                 resolve(result); | ||||
|             }); | ||||
|         }, | ||||
| 
 | ||||
|         /** | ||||
|          * Достает указанное свойство у сертификата | ||||
|          * */ | ||||
|         getProp: function (propName) { | ||||
|             var cert = this._cert; | ||||
| 
 | ||||
|             return new Promise(function (resolve, reject) { | ||||
|                 var result; | ||||
| 
 | ||||
|                 try { | ||||
|                     result = cert[propName]; | ||||
|                 } catch (err) { | ||||
|                     reject('Ошибка при обращении к свойству сертификата: ', err.message); | ||||
|                     return; | ||||
|                 } | ||||
| 
 | ||||
|                 resolve(result); | ||||
|             }); | ||||
|         }, | ||||
| 
 | ||||
|         /** | ||||
|          * Экспорт base64 представления сертификата пользователя | ||||
|          * */ | ||||
|         exportBase64: function exportBase64() { | ||||
|             var cert = this._cert; | ||||
| 
 | ||||
|             return new Promise(function (resolve, reject) { | ||||
|                 var base64; | ||||
| 
 | ||||
|                 try { | ||||
|                     base64 = cert.Export(0); | ||||
|                 } catch (err) { | ||||
|                     reject('Ошибка при экспорте сертификата: ', err.message); | ||||
|                     return; | ||||
|                 } | ||||
| 
 | ||||
|                 resolve(base64); | ||||
|             }); | ||||
|         }, | ||||
| 
 | ||||
|         /** | ||||
|          * Возвращает информацию об алгоритме | ||||
|          * */ | ||||
|         getAlgorithm: function getAlgorithm() { | ||||
|             var cert = this._cert; | ||||
| 
 | ||||
|             return new Promise(function (resolve, reject) { | ||||
|                 var result = {}, | ||||
|                     algorithm; | ||||
| 
 | ||||
|                 try { | ||||
|                     algorithm = cert.PublicKey(); | ||||
|                     algorithm = algorithm.Algorithm; | ||||
| 
 | ||||
|                     result.algorithm = algorithm.FriendlyName; | ||||
|                     result.oid = algorithm.Value; | ||||
|                 } catch (err) { | ||||
|                     reject('Ошибка при получении алгоритма: ', err.message); | ||||
|                     return; | ||||
|                 } | ||||
| 
 | ||||
|                 resolve(result); | ||||
|             }); | ||||
|         }, | ||||
| 
 | ||||
|         /** | ||||
|          * Разбирает SubjectName сертификата по тэгам | ||||
|          * */ | ||||
|         getOwnerInfo: function getOwnerInfo() { | ||||
|             return getCertInfo.call(this, cryptoCommon.subjectNameTagsTranslations, 'SubjectName'); | ||||
|         }, | ||||
| 
 | ||||
|         /** | ||||
|          * Разбирает IssuerName сертификата по тэгам | ||||
|          * */ | ||||
|         getIssuerInfo: function getIssuerInfo() { | ||||
|             return getCertInfo.call(this, cryptoCommon.issuerNameTagsTranslations, 'IssuerName'); | ||||
|         }, | ||||
| 
 | ||||
|         /** | ||||
|          * Получение OID сертификата | ||||
|          * Возвращает массив OID (улучшенного ключа) | ||||
|          * */ | ||||
|         getExtendedKeyUsage: function getExtendedKeyUsage() { | ||||
|             var cert = this._cert; | ||||
| 
 | ||||
|             return new Promise(function (resolve, reject) { | ||||
|                 var OIDS = [], | ||||
|                     count, | ||||
|                     item; | ||||
| 
 | ||||
|                 try { | ||||
|                     count = cert.ExtendedKeyUsage(); | ||||
|                     count = count.EKUs; | ||||
|                     count = count.Count; | ||||
| 
 | ||||
|                     if (count > 0) { | ||||
|                         while (count > 0) { | ||||
|                             item = cert.ExtendedKeyUsage(); | ||||
|                             item = item.EKUs; | ||||
|                             item = item.Item(count); | ||||
|                             item = item.OID; | ||||
| 
 | ||||
|                             OIDS.push(item); | ||||
| 
 | ||||
|                             count--; | ||||
|                         } | ||||
|                     } | ||||
|                 } catch (err) { | ||||
|                     reject('Ошибка при получении ОИД\'ов: ', err.message); | ||||
|                     return; | ||||
|                 } | ||||
| 
 | ||||
|                 resolve(OIDS); | ||||
|             }); | ||||
|         }, | ||||
| 
 | ||||
|         getDecodedExtendedKeyUsage: cryptoCommon.getDecodedExtendedKeyUsage, | ||||
| 
 | ||||
|         hasExtendedKeyUsage: cryptoCommon.hasExtendedKeyUsage | ||||
|     }, | ||||
| 
 | ||||
|     _certListCache; | ||||
| 
 | ||||
| function Certificate(item) { | ||||
|     this._cert = item._cert; | ||||
|     this.thumbprint = item.thumbprint; | ||||
|     this.subjectName = item.subjectName; | ||||
|     this.issuerName = item.issuerName; | ||||
|     this.validFrom = item.validFrom; | ||||
|     this.validTo = item.validTo; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Проверяет, валиден ли сертификат | ||||
|  * */ | ||||
| Certificate.prototype.isValid = function isValid() { | ||||
|     var cert = this._cert; | ||||
| 
 | ||||
|     return new Promise(function (resolve, reject) { | ||||
|         var result; | ||||
| 
 | ||||
|         try { | ||||
|             result = cert.IsValid(); | ||||
|             result = result.Result; | ||||
|         } catch (err) { | ||||
|             reject('Ошибка при проверке сертификата: ', err.message); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         resolve(result); | ||||
|     }); | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Достает указанное свойство у сертификата | ||||
|  * */ | ||||
| Certificate.prototype.getProp = function (propName) { | ||||
|     var cert = this._cert; | ||||
| 
 | ||||
|     return new Promise(function (resolve, reject) { | ||||
|         var result; | ||||
| 
 | ||||
|         try { | ||||
|             result = cert[propName]; | ||||
|         } catch (err) { | ||||
|             reject('Ошибка при обращении к свойству сертификата: ', err.message); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         resolve(result); | ||||
|     }); | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Экспорт base64 представления сертификата пользователя | ||||
|  * */ | ||||
| Certificate.prototype.exportBase64 = function exportBase64() { | ||||
|     var cert = this._cert; | ||||
| 
 | ||||
|     return new Promise(function (resolve, reject) { | ||||
|         var base64; | ||||
| 
 | ||||
|         try { | ||||
|             base64 = cert.Export(0); | ||||
|         } catch (err) { | ||||
|             reject('Ошибка при экспорте сертификата: ', err.message); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         resolve(base64); | ||||
|     }); | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Возвращает информацию об алгоритме | ||||
|  * */ | ||||
| Certificate.prototype.getAlgorithm = function getAlgorithm() { | ||||
|     var cert = this._cert; | ||||
| 
 | ||||
|     return new Promise(function (resolve, reject) { | ||||
|         var result = {}, | ||||
|             algorithm; | ||||
| 
 | ||||
|         try { | ||||
|             algorithm = cert.PublicKey(); | ||||
|             algorithm = algorithm.Algorithm; | ||||
| 
 | ||||
|             result.algorithm = algorithm.FriendlyName; | ||||
|             result.oid = algorithm.Value; | ||||
|         } catch (err) { | ||||
|             reject('Ошибка при получении алгоритма: ', err.message); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         resolve(result); | ||||
|     }); | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Разбирает SubjectName сертификата по тэгам | ||||
|  * */ | ||||
| Certificate.prototype.getOwnerInfo = function getOwnerInfo() { | ||||
|     return getCertInfo.call(this, cryptoCommon.subjectNameTagsTranslations, 'SubjectName'); | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Разбирает IssuerName сертификата по тэгам | ||||
|  * */ | ||||
| Certificate.prototype.getIssuerInfo = function getIssuerInfo() { | ||||
|     return getCertInfo.call(this, cryptoCommon.issuerNameTagsTranslations, 'IssuerName'); | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Получение OID сертификата | ||||
|  * Возвращает массив OID (улучшенного ключа) | ||||
|  * */ | ||||
| Certificate.prototype.getExtendedKeyUsage = function getExtendedKeyUsage() { | ||||
|     var cert = this._cert; | ||||
| 
 | ||||
|     return new Promise(function (resolve, reject) { | ||||
|         var OIDS = [], | ||||
|             count, | ||||
|             item; | ||||
| 
 | ||||
|         try { | ||||
|             count = cert.ExtendedKeyUsage(); | ||||
|             count = count.EKUs; | ||||
|             count = count.Count; | ||||
| 
 | ||||
|             if (count > 0) { | ||||
|                 while (count > 0) { | ||||
|                     item = cert.ExtendedKeyUsage(); | ||||
|                     item = item.EKUs; | ||||
|                     item = item.Item(count); | ||||
|                     item = item.OID; | ||||
| 
 | ||||
|                     OIDS.push(item); | ||||
| 
 | ||||
|                     count--; | ||||
|                 } | ||||
|             } | ||||
|         } catch (err) { | ||||
|             reject('Ошибка при получении ОИД\'ов: ', err.message); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         resolve(OIDS); | ||||
|     }); | ||||
| }; | ||||
| 
 | ||||
| Certificate.prototype.getDecodedExtendedKeyUsage = cryptoCommon.getDecodedExtendedKeyUsage; | ||||
| 
 | ||||
| Certificate.prototype.hasExtendedKeyUsage = cryptoCommon.hasExtendedKeyUsage; | ||||
| 
 | ||||
| /** | ||||
|  * Проверяет корректность настроек ЭП на машине | ||||
|  * */ | ||||
| @ -307,7 +313,7 @@ function getCertsList(resetCache) { | ||||
|             while (count) { | ||||
|                 item = certs.Item(count); | ||||
| 
 | ||||
|                 result.push(Object.assign(Object.create(_certProto), { | ||||
|                 result.push(new Certificate({ | ||||
|                     _cert: item, | ||||
|                     thumbprint: item.Thumbprint, | ||||
|                     subjectName: item.SubjectName, | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Vitalii Goma
						Vitalii Goma