mirror of
https://github.com/crypto-pro-web/crypto-pro-js.git
synced 2024-11-24 00:55:00 +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).
|
- [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+).
|
- [Internet Explorer](http://windows.microsoft.com/ru-ru/internet-explorer/download-ie) (v8+).
|
||||||
|
|
||||||
Полифиллы необходимо подключать самостоятельно.
|
Полифилл для Promise необходимо подключать самостоятельно.
|
||||||
|
|
||||||
## Установка и настройка
|
## Установка и настройка
|
||||||
```bash
|
```bash
|
||||||
|
332
dist/1.crypto-pro.js
vendored
332
dist/1.crypto-pro.js
vendored
@ -1,169 +1,177 @@
|
|||||||
webpackJsonpCryptoPro([1],[
|
webpackJsonpCryptoPro([1],[
|
||||||
/* 0 */,
|
/* 0 */,
|
||||||
/* 1 */,
|
/* 1 */,
|
||||||
/* 2 */
|
/* 2 */,
|
||||||
|
/* 3 */,
|
||||||
|
/* 4 */
|
||||||
/***/ function(module, exports, __webpack_require__) {
|
/***/ function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
var cryptoCommon = __webpack_require__(3),
|
var cryptoCommon = __webpack_require__(5),
|
||||||
cryptoConstants = __webpack_require__(7),
|
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;
|
_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) {
|
while (count) {
|
||||||
item = yield certs.Item(count);
|
item = yield certs.Item(count);
|
||||||
|
|
||||||
result.push(Object.assign(Object.create(_certProto), {
|
result.push(new Certificate({
|
||||||
_cert: yield item,
|
_cert: yield item,
|
||||||
thumbprint: yield item.Thumbprint,
|
thumbprint: yield item.Thumbprint,
|
||||||
subjectName: yield item.SubjectName,
|
subjectName: yield item.SubjectName,
|
||||||
@ -553,10 +561,10 @@ webpackJsonpCryptoPro([1],[
|
|||||||
};
|
};
|
||||||
|
|
||||||
/***/ },
|
/***/ },
|
||||||
/* 3 */
|
/* 5 */
|
||||||
/***/ function(module, exports, __webpack_require__) {
|
/***/ function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
var bowser = __webpack_require__(4);
|
var bowser = __webpack_require__(1);
|
||||||
var oids = __webpack_require__(6);
|
var oids = __webpack_require__(6);
|
||||||
|
|
||||||
var subjectNameTagsTranslations = [
|
var subjectNameTagsTranslations = [
|
||||||
@ -836,8 +844,6 @@ webpackJsonpCryptoPro([1],[
|
|||||||
};
|
};
|
||||||
|
|
||||||
/***/ },
|
/***/ },
|
||||||
/* 4 */,
|
|
||||||
/* 5 */,
|
|
||||||
/* 6 */
|
/* 6 */
|
||||||
/***/ function(module, exports) {
|
/***/ 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 */,
|
/* 0 */,
|
||||||
/* 1 */,
|
/* 1 */,
|
||||||
/* 2 */,
|
/* 2 */,
|
||||||
/* 3 */
|
/* 3 */,
|
||||||
|
/* 4 */,
|
||||||
|
/* 5 */
|
||||||
/***/ function(module, exports, __webpack_require__) {
|
/***/ function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
var bowser = __webpack_require__(4);
|
var bowser = __webpack_require__(1);
|
||||||
var oids = __webpack_require__(6);
|
var oids = __webpack_require__(6);
|
||||||
|
|
||||||
var subjectNameTagsTranslations = [
|
var subjectNameTagsTranslations = [
|
||||||
@ -285,8 +287,6 @@ webpackJsonpCryptoPro([2],[
|
|||||||
};
|
};
|
||||||
|
|
||||||
/***/ },
|
/***/ },
|
||||||
/* 4 */,
|
|
||||||
/* 5 */,
|
|
||||||
/* 6 */
|
/* 6 */
|
||||||
/***/ function(module, exports) {
|
/***/ function(module, exports) {
|
||||||
|
|
||||||
@ -483,155 +483,161 @@ webpackJsonpCryptoPro([2],[
|
|||||||
/* 8 */
|
/* 8 */
|
||||||
/***/ function(module, exports, __webpack_require__) {
|
/***/ function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
var cryptoCommon = __webpack_require__(3),
|
var cryptoCommon = __webpack_require__(5),
|
||||||
cryptoConstants = __webpack_require__(7),
|
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;
|
_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) {
|
while (count) {
|
||||||
item = certs.Item(count);
|
item = certs.Item(count);
|
||||||
|
|
||||||
result.push(Object.assign(Object.create(_certProto), {
|
result.push(new Certificate({
|
||||||
_cert: item,
|
_cert: item,
|
||||||
thumbprint: item.Thumbprint,
|
thumbprint: item.Thumbprint,
|
||||||
subjectName: item.SubjectName,
|
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 */
|
/* 0 */
|
||||||
/***/ function(module, exports, __webpack_require__) {
|
/***/ function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
var bowser = __webpack_require__(4),
|
var bowser = __webpack_require__(1),
|
||||||
browserInfo = bowser._detect(navigator.userAgent),
|
browserInfo = bowser._detect(navigator.userAgent),
|
||||||
global = Function('return this')(),
|
global = Function('return this')(),
|
||||||
canPromise = Boolean(global.Promise),
|
canPromise = Boolean(global.Promise),
|
||||||
@ -110,7 +110,7 @@ var CryptoPro =
|
|||||||
|
|
||||||
global.allow_firefox_cadesplugin_async = browserInfo.firefox && browserInfo.version >= 52;
|
global.allow_firefox_cadesplugin_async = browserInfo.firefox && browserInfo.version >= 52;
|
||||||
|
|
||||||
__webpack_require__(10);
|
__webpack_require__(3);
|
||||||
|
|
||||||
cadesplugin = global.cadesplugin;
|
cadesplugin = global.cadesplugin;
|
||||||
|
|
||||||
@ -179,7 +179,7 @@ var CryptoPro =
|
|||||||
function () {
|
function () {
|
||||||
if (canAsync) {
|
if (canAsync) {
|
||||||
__webpack_require__.e/* nsure */(1, function () {
|
__webpack_require__.e/* nsure */(1, function () {
|
||||||
cryptoService = __webpack_require__(2);
|
cryptoService = __webpack_require__(4);
|
||||||
finishLoading();
|
finishLoading();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -207,10 +207,7 @@ var CryptoPro =
|
|||||||
};
|
};
|
||||||
|
|
||||||
/***/ },
|
/***/ },
|
||||||
/* 1 */,
|
/* 1 */
|
||||||
/* 2 */,
|
|
||||||
/* 3 */,
|
|
||||||
/* 4 */
|
|
||||||
/***/ function(module, exports, __webpack_require__) {
|
/***/ function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -221,7 +218,7 @@ var CryptoPro =
|
|||||||
|
|
||||||
!function (name, definition) {
|
!function (name, definition) {
|
||||||
if (typeof module != 'undefined' && module.exports) module.exports = 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()
|
else this[name] = definition()
|
||||||
}('bowser', function () {
|
}('bowser', function () {
|
||||||
/**
|
/**
|
||||||
@ -796,18 +793,14 @@ var CryptoPro =
|
|||||||
|
|
||||||
|
|
||||||
/***/ },
|
/***/ },
|
||||||
/* 5 */
|
/* 2 */
|
||||||
/***/ function(module, exports) {
|
/***/ function(module, exports) {
|
||||||
|
|
||||||
module.exports = function() { throw new Error("define cannot be used indirect"); };
|
module.exports = function() { throw new Error("define cannot be used indirect"); };
|
||||||
|
|
||||||
|
|
||||||
/***/ },
|
/***/ },
|
||||||
/* 6 */,
|
/* 3 */
|
||||||
/* 7 */,
|
|
||||||
/* 8 */,
|
|
||||||
/* 9 */,
|
|
||||||
/* 10 */
|
|
||||||
/***/ function(module, exports) {
|
/***/ function(module, exports) {
|
||||||
|
|
||||||
;(function () {
|
;(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'),
|
var cryptoCommon = require('./common'),
|
||||||
cryptoConstants = require('./constants'),
|
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;
|
_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) {
|
while (count) {
|
||||||
item = yield certs.Item(count);
|
item = yield certs.Item(count);
|
||||||
|
|
||||||
result.push(Object.assign(Object.create(_certProto), {
|
result.push(new Certificate({
|
||||||
_cert: yield item,
|
_cert: yield item,
|
||||||
thumbprint: yield item.Thumbprint,
|
thumbprint: yield item.Thumbprint,
|
||||||
subjectName: yield item.SubjectName,
|
subjectName: yield item.SubjectName,
|
||||||
|
298
src/apiSync.js
298
src/apiSync.js
@ -1,152 +1,158 @@
|
|||||||
var cryptoCommon = require('./common'),
|
var cryptoCommon = require('./common'),
|
||||||
cryptoConstants = require('./constants'),
|
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;
|
_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) {
|
while (count) {
|
||||||
item = certs.Item(count);
|
item = certs.Item(count);
|
||||||
|
|
||||||
result.push(Object.assign(Object.create(_certProto), {
|
result.push(new Certificate({
|
||||||
_cert: item,
|
_cert: item,
|
||||||
thumbprint: item.Thumbprint,
|
thumbprint: item.Thumbprint,
|
||||||
subjectName: item.SubjectName,
|
subjectName: item.SubjectName,
|
||||||
|
Loading…
Reference in New Issue
Block a user