mirror of
				https://github.com/crypto-pro-web/crypto-pro-js.git
				synced 2025-10-30 22:03:21 +03:00 
			
		
		
		
	2.1.0
This commit is contained in:
		
							parent
							
								
									4739fe3b9f
								
							
						
					
					
						commit
						29c27119de
					
				
							
								
								
									
										98
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										98
									
								
								CHANGELOG.md
									
									
									
									
									
								
							| @ -1,98 +0,0 @@ | ||||
| 2.0.5 / 2020-07-04 | ||||
| ================== | ||||
| 
 | ||||
|   * Улучшение: Дополнены словари для расшифровки данных о сертификате | ||||
| 
 | ||||
| 2.0.4 / 2020-04-05 | ||||
| ================== | ||||
| 
 | ||||
|   * Улучшение: Исправлены ссылки в README.md | ||||
|   * Улучшение: Добавлен файл с лицензией | ||||
|   * Улучшение: Обновлены версии пакета в примерах | ||||
| 
 | ||||
| 2.0.3 / 2020-03-29 | ||||
| ================== | ||||
| 
 | ||||
|   * Улучшение: Дополнен README.md | ||||
| 
 | ||||
| 2.0.2 / 2020-03-29 | ||||
| ================== | ||||
| 
 | ||||
|   * Фикс: Исправлены ссылки в README.md с учетом разницы форматов Markdown между Github и NPM | ||||
| 
 | ||||
| 2.0.1 / 2020-03-28 | ||||
| ================== | ||||
| 
 | ||||
|   * Фикс: Ссылки на якоря в README.md с учетом особенностей Markdown на Github | ||||
| 
 | ||||
| 2.0.0 / 2020-03-28 | ||||
| ================== | ||||
| 
 | ||||
|   * Улучшение: Проект переписан с использованием Typescript | ||||
|   * Улучшение: В Readme обновлены примеры, документация и добавлен [список изменений](README.md#Миграция-с-версии-1-на-2) для миграции с 1 на 2 версию | ||||
| 
 | ||||
| 1.1.2 / 2019-12-07 | ||||
| ================== | ||||
| 
 | ||||
|   * Фикс: Дополнена [обработка ошибок](https://github.com/vgoma/crypto-pro/issues/8) | ||||
| 
 | ||||
| 1.1.1 / 2019-12-05 | ||||
| ================== | ||||
| 
 | ||||
|   * Улучшение: Добавлены изменения из оригинального js модуля Крипто ПРО "2.1.2" [ссылка на оригинальный файл](https://www.cryptopro.ru/sites/default/files/products/cades/cadesplugin_api.js) | ||||
| 
 | ||||
| 1.1.0 / 2017-12-20 | ||||
| ================== | ||||
| 
 | ||||
|   * Улучшение: объединена кодовая база по работе с синхронной и асинхронной версии API Крипто ПРО | ||||
| 
 | ||||
| 1.0.11 / 2017-06-08 | ||||
| ================== | ||||
| 
 | ||||
|   * Улучшение: Убрана зависимость от Object.keys и Object.assign | ||||
| 
 | ||||
| 1.0.10 / 2017-04-26 | ||||
| ================== | ||||
| 
 | ||||
|   * Фикс: уточнения в README | ||||
|    | ||||
| 1.0.9 / 2017-04-26 | ||||
| ================== | ||||
| 
 | ||||
|   * Фикс: оформление README | ||||
| 
 | ||||
| 1.0.8 / 2017-04-26 | ||||
| ================== | ||||
| 
 | ||||
|   * Улучшение: Добавлена поддержка Firefox >= 52 | ||||
|   * Улучшение: Более подробный README | ||||
| 
 | ||||
| 1.0.7 / 2017-01-30 | ||||
| ================== | ||||
| 
 | ||||
|   * Улучшение: Указание отпечатка сертификата при ошибке доступа к нему | ||||
| 
 | ||||
| 1.0.6 / 2017-01-30 | ||||
| ================== | ||||
| 
 | ||||
|   * Фикс: Проброс ошибки метода получения сертификатов по цепочке промисов | ||||
| 
 | ||||
| 1.0.5 / 2017-01-24 | ||||
| ================== | ||||
| 
 | ||||
|   * Улучшение: Фиксация версий всех зависимостей | ||||
| 
 | ||||
| 1.0.4 / 2017-01-20 | ||||
| ================== | ||||
| 
 | ||||
|   * Улучшение: Добавлены изменения из оригинального js модуля Крипто ПРО "2.0.3" [ссылка на оригинальный файл](https://www.cryptopro.ru/sites/default/files/products/cades/cadesplugin_api.js) | ||||
| 
 | ||||
| 1.0.3 / 2017-01-20 | ||||
| ================== | ||||
| 
 | ||||
|   * Улучшение: Убрана попытка загрузки сразу двух расширений (для Opera и для Chrome)  | ||||
| 
 | ||||
| 1.0.2 / 2017-01-16 | ||||
| ================== | ||||
| 
 | ||||
|   * Улучшение: Добавлена возможность подключать модуль напрямую из папки src/ для приложений, собираемых webpack'ом | ||||
| @ -108,7 +108,12 @@ import { getUserCertificates, Certificate } from 'crypto-pro'; | ||||
| ### Методы объекта cryptoPro | ||||
| - [getUserCertificates](src/api/getUserCertificates.ts) - возвращает список [сертификатов](#api-certificate), доступных пользователю в системе | ||||
| - [getCertificate](src/api/getCertificate.ts) - возвращает [сертификат](#api-certificate) по отпечатку | ||||
| - [createSignature](src/api/createSignature.ts) - создает подпись данных | ||||
| - [createAttachedSignature](src/api/createAttachedSignature.ts) - создает совмещенную (присоединенную) подпись сообщения | ||||
| - [createDetachedSignature](src/api/createDetachedSignature.ts) - создает отсоединенную (открепленную) подпись сообщения | ||||
| - [createHash](src/api/createHash.ts) - создает хеш сообщения по ГОСТ Р 34.11-2012 256 бит | ||||
| - [createSignature](src/api/createSignature.ts) - создает подпись сообщения | ||||
|     > Является устаревшим и будет убран из будущих версий. | ||||
|     Используйте "createAttachedSignature" и "createDetachedSignature". | ||||
| - [getSystemInfo](src/api/getSystemInfo.ts) - возвращает информацию о CSP и плагине | ||||
| - [isValidSystemSetup](src/api/isValidSystemSetup.ts) - возвращает флаг корректности настроек ЭП на машине | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										4
									
								
								dist/api/createHash.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								dist/api/createHash.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -1,9 +1,9 @@ | ||||
| /** | ||||
|  * Создает хэш сообщения по ГОСТ Р 34.11-2012 256 бит | ||||
|  * Создает хеш сообщения по ГОСТ Р 34.11-2012 256 бит | ||||
|  * https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B8%D0%B1%D0%BE%D0%B3_(%D1%85%D0%B5%D1%88-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F)
 | ||||
|  * | ||||
|  * @param unencryptedMessage - сообщение для хеширования | ||||
|  * | ||||
|  * @returns хэш | ||||
|  * @returns хеш | ||||
|  */ | ||||
| export declare const createHash: (unencryptedMessage: string | ArrayBuffer) => Promise<string>; | ||||
|  | ||||
							
								
								
									
										2
									
								
								dist/api/createSignature.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/api/createSignature.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -2,7 +2,7 @@ | ||||
|  * Создает подпись base64 строки по отпечатку сертификата | ||||
|  * | ||||
|  * @param thumbprint - отпечаток сертификата | ||||
|  * @param messageHash - хэш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11 | ||||
|  * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11 | ||||
|  * @param detachedSignature = true - тип подписи открепленная (true) / присоединенная (false) | ||||
|  * @returns подпись | ||||
|  */ | ||||
|  | ||||
							
								
								
									
										8
									
								
								dist/api/signHash.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								dist/api/signHash.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -1,8 +0,0 @@ | ||||
| /** | ||||
|  * Создает подпись хеша по отпечатку сертификата | ||||
|  * | ||||
|  * @param thumbprint - отпечаток сертификата | ||||
|  * @param messageHash - хэш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11 | ||||
|  * @returns подпись | ||||
|  */ | ||||
| export declare const signHash: (thumbprint: string, messageHash: string) => Promise<string>; | ||||
							
								
								
									
										6
									
								
								dist/crypto-pro.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								dist/crypto-pro.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -1 +1,7 @@ | ||||
| // Type definitions for crypto-pro 2.1.0
 | ||||
| // Project: crypto-pro
 | ||||
| // Definitions by: Vitalii Goma https://github.com/vgoma
 | ||||
| 
 | ||||
| export as namespace cryptoPro; | ||||
| 
 | ||||
| export * from './api'; | ||||
|  | ||||
							
								
								
									
										22
									
								
								dist/crypto-pro.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								dist/crypto-pro.js
									
									
									
									
										vendored
									
									
								
							| @ -2904,10 +2904,12 @@ var __generator = (this && this.__generator) || function (thisArg, body) { | ||||
|     } | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| var constants_1 = __webpack_require__(/*! ../constants */ "./constants/index.ts"); | ||||
| var _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts"); | ||||
| var _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts"); | ||||
| var _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts"); | ||||
| var _getCadesCert_1 = __webpack_require__(/*! ../helpers/_getCadesCert */ "./helpers/_getCadesCert.ts"); | ||||
| var _getDateObj_1 = __webpack_require__(/*! ../helpers/_getDateObj */ "./helpers/_getDateObj.ts"); | ||||
| /** | ||||
|  * Создает отсоединенную подпись хеша по отпечатку сертификата | ||||
|  * | ||||
| @ -2925,10 +2927,12 @@ exports.createDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded(func | ||||
|             case 1: | ||||
|                 cadesCertificate = _a.sent(); | ||||
|                 return [2 /*return*/, eval(_generateCadesFn_1._generateCadesFn(function createDetachedSignature() { | ||||
|                         var cadesAttrs; | ||||
|                         var cadesHashedData; | ||||
|                         var cadesSignedData; | ||||
|                         var cadesSigner; | ||||
|                         try { | ||||
|                             cadesAttrs = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CADESCOM.CPAttribute'); | ||||
|                             cadesHashedData = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.HashedData'); | ||||
|                             cadesSignedData = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.CadesSignedData'); | ||||
|                             cadesSigner = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.CPSigner'); | ||||
| @ -2937,8 +2941,20 @@ exports.createDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded(func | ||||
|                             console.error(error); | ||||
|                             throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи'); | ||||
|                         } | ||||
|                         var currentTime = _getDateObj_1._getDateObj(new Date()); | ||||
|                         try { | ||||
|                             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAttrs.propset_Name(constants_1.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME)); | ||||
|                             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime)); | ||||
|                         } | ||||
|                         catch (error) { | ||||
|                             console.error(error); | ||||
|                             throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи'); | ||||
|                         } | ||||
|                         var cadesAuthAttrs; | ||||
|                         try { | ||||
|                             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate)); | ||||
|                             cadesAuthAttrs = _generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2; | ||||
|                             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs)); | ||||
|                             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN)); | ||||
|                         } | ||||
|                         catch (error) { | ||||
| @ -3023,12 +3039,12 @@ var _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoad | ||||
| var _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts"); | ||||
| var _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts"); | ||||
| /** | ||||
|  * Создает хэш сообщения по ГОСТ Р 34.11-2012 256 бит | ||||
|  * Создает хеш сообщения по ГОСТ Р 34.11-2012 256 бит | ||||
|  * https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B8%D0%B1%D0%BE%D0%B3_(%D1%85%D0%B5%D1%88-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F)
 | ||||
|  * | ||||
|  * @param unencryptedMessage - сообщение для хеширования | ||||
|  * | ||||
|  * @returns хэш | ||||
|  * @returns хеш | ||||
|  */ | ||||
| exports.createHash = _afterPluginsLoaded_1._afterPluginsLoaded(function (unencryptedMessage) { return __awaiter(void 0, void 0, void 0, function () { | ||||
|     var cadesplugin; | ||||
| @ -3127,7 +3143,7 @@ var _getDateObj_1 = __webpack_require__(/*! ../helpers/_getDateObj */ "./helpers | ||||
|  * Создает подпись base64 строки по отпечатку сертификата | ||||
|  * | ||||
|  * @param thumbprint - отпечаток сертификата | ||||
|  * @param messageHash - хэш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11 | ||||
|  * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11 | ||||
|  * @param detachedSignature = true - тип подписи открепленная (true) / присоединенная (false) | ||||
|  * @returns подпись | ||||
|  */ | ||||
|  | ||||
							
								
								
									
										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
											
										
									
								
							
							
								
								
									
										6
									
								
								dist/crypto-pro.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								dist/crypto-pro.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/crypto-pro.min.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/crypto-pro.min.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										6
									
								
								examples/angular/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								examples/angular/package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -3308,9 +3308,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "crypto-pro": { | ||||
|       "version": "2.0.5", | ||||
|       "resolved": "https://registry.npmjs.org/crypto-pro/-/crypto-pro-2.0.5.tgz", | ||||
|       "integrity": "sha512-YZbVNt9ZmE75H97gdqS2ZGW8xnuHxdvQxLH/SmMQIizIBLmMIylOhY3HvgEUxnrIkL64/m6vrG5H2w7pGTb17Q==" | ||||
|       "version": "2.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/crypto-pro/-/crypto-pro-2.1.0.tgz", | ||||
|       "integrity": "sha512-zLPX/m51fiMS6aWXZ8e8e/Lcw/8VkeIlMo0nvsdvMik6koec+UbNP+syRp07eWJEmRDb8IZLjzLGjrb0oGT64g==" | ||||
|     }, | ||||
|     "css": { | ||||
|       "version": "2.2.4", | ||||
|  | ||||
| @ -21,7 +21,7 @@ | ||||
|     "@angular/platform-browser": "~9.0.7", | ||||
|     "@angular/platform-browser-dynamic": "~9.0.7", | ||||
|     "@angular/router": "~9.0.7", | ||||
|     "crypto-pro": "2.0.5", | ||||
|     "crypto-pro": "2.1.0", | ||||
|     "rxjs": "~6.5.4", | ||||
|     "tslib": "^1.10.0", | ||||
|     "zone.js": "~0.10.2" | ||||
|  | ||||
							
								
								
									
										6
									
								
								examples/react/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								examples/react/package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -3712,9 +3712,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "crypto-pro": { | ||||
|       "version": "2.0.5", | ||||
|       "resolved": "https://registry.npmjs.org/crypto-pro/-/crypto-pro-2.0.5.tgz", | ||||
|       "integrity": "sha512-YZbVNt9ZmE75H97gdqS2ZGW8xnuHxdvQxLH/SmMQIizIBLmMIylOhY3HvgEUxnrIkL64/m6vrG5H2w7pGTb17Q==" | ||||
|       "version": "2.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/crypto-pro/-/crypto-pro-2.1.0.tgz", | ||||
|       "integrity": "sha512-zLPX/m51fiMS6aWXZ8e8e/Lcw/8VkeIlMo0nvsdvMik6koec+UbNP+syRp07eWJEmRDb8IZLjzLGjrb0oGT64g==" | ||||
|     }, | ||||
|     "css": { | ||||
|       "version": "2.2.4", | ||||
|  | ||||
| @ -7,7 +7,7 @@ | ||||
|     "@testing-library/jest-dom": "4.2.4", | ||||
|     "@testing-library/react": "9.5.0", | ||||
|     "@testing-library/user-event": "7.2.1", | ||||
|     "crypto-pro": "2.0.5", | ||||
|     "crypto-pro": "2.1.0", | ||||
|     "react": "^16.13.1", | ||||
|     "react-app-polyfill": "1.0.6", | ||||
|     "react-dom": "^16.13.1", | ||||
|  | ||||
							
								
								
									
										6
									
								
								examples/script-tag/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								examples/script-tag/package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -42,9 +42,9 @@ | ||||
|       "dev": true | ||||
|     }, | ||||
|     "crypto-pro": { | ||||
|       "version": "2.0.5", | ||||
|       "resolved": "https://registry.npmjs.org/crypto-pro/-/crypto-pro-2.0.5.tgz", | ||||
|       "integrity": "sha512-YZbVNt9ZmE75H97gdqS2ZGW8xnuHxdvQxLH/SmMQIizIBLmMIylOhY3HvgEUxnrIkL64/m6vrG5H2w7pGTb17Q==" | ||||
|       "version": "2.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/crypto-pro/-/crypto-pro-2.1.0.tgz", | ||||
|       "integrity": "sha512-zLPX/m51fiMS6aWXZ8e8e/Lcw/8VkeIlMo0nvsdvMik6koec+UbNP+syRp07eWJEmRDb8IZLjzLGjrb0oGT64g==" | ||||
|     }, | ||||
|     "fs.realpath": { | ||||
|       "version": "1.0.0", | ||||
|  | ||||
| @ -13,6 +13,6 @@ | ||||
|     "symlink-dir": "3.1.2" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "crypto-pro": "2.0.5" | ||||
|     "crypto-pro": "2.1.0" | ||||
|   } | ||||
| } | ||||
|  | ||||
							
								
								
									
										8
									
								
								lib/api/createAttachedSignature.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								lib/api/createAttachedSignature.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | ||||
| /** | ||||
|  * Создает присоединенную подпись сообщения по отпечатку сертификата | ||||
|  * | ||||
|  * @param thumbprint - отпечаток сертификата | ||||
|  * @param message - подписываемое сообщение | ||||
|  * @returns подпись в формате PKCS#7 | ||||
|  */ | ||||
| export declare const createAttachedSignature: (thumbprint: string, unencryptedMessage: string | ArrayBuffer) => Promise<string>; | ||||
							
								
								
									
										8
									
								
								lib/api/createDetachedSignature.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								lib/api/createDetachedSignature.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | ||||
| /** | ||||
|  * Создает отсоединенную подпись хеша по отпечатку сертификата | ||||
|  * | ||||
|  * @param thumbprint - отпечаток сертификата | ||||
|  * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит | ||||
|  * @returns подпись в формате PKCS#7 | ||||
|  */ | ||||
| export declare const createDetachedSignature: (thumbprint: string, messageHash: string) => Promise<string>; | ||||
							
								
								
									
										15
									
								
								lib/api/createHash.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								lib/api/createHash.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -1,18 +1,9 @@ | ||||
| declare type Algorithm = 'GOST_3411' | 'GOST_3411_2012_256' | 'GOST_3411_2012_512' | 'GOST_3411_HMAC' | 'GOST_3411_2012_256_HMAC' | 'GOST_3411_2012_512_HMAC'; | ||||
| /** | ||||
|  * Создает хэш сообщения по ГОСТ Р 34.11 | ||||
|  * Создает хеш сообщения по ГОСТ Р 34.11-2012 256 бит | ||||
|  * https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B8%D0%B1%D0%BE%D0%B3_(%D1%85%D0%B5%D1%88-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F)
 | ||||
|  * | ||||
|  * @param unencryptedMessage - сообщение для хеширования | ||||
|  * @param algorithm - один из алгоритмов хеширования: | ||||
|  * GOST_3411 | ||||
|  * GOST_3411_2012_256 | ||||
|  * GOST_3411_2012_512 - по умолчанию | ||||
|  * GOST_3411_HMAC | ||||
|  * GOST_3411_2012_256_HMAC | ||||
|  * GOST_3411_2012_512_HMAC | ||||
|  * | ||||
|  * @returns хэш | ||||
|  * @returns хеш | ||||
|  */ | ||||
| export declare const createHash: (unencryptedMessage: string | ArrayBuffer, algorithm?: Algorithm) => Promise<string>; | ||||
| export {}; | ||||
| export declare const createHash: (unencryptedMessage: string | ArrayBuffer) => Promise<string>; | ||||
|  | ||||
							
								
								
									
										2
									
								
								lib/api/createSignature.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								lib/api/createSignature.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -2,7 +2,7 @@ | ||||
|  * Создает подпись base64 строки по отпечатку сертификата | ||||
|  * | ||||
|  * @param thumbprint - отпечаток сертификата | ||||
|  * @param messageHash - хэш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11 | ||||
|  * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11 | ||||
|  * @param detachedSignature = true - тип подписи открепленная (true) / присоединенная (false) | ||||
|  * @returns подпись | ||||
|  */ | ||||
|  | ||||
							
								
								
									
										2
									
								
								lib/api/index.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								lib/api/index.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -3,5 +3,7 @@ export * from './getUserCertificates'; | ||||
| export * from './getSystemInfo'; | ||||
| export * from './isValidSystemSetup'; | ||||
| export * from './createSignature'; | ||||
| export * from './createDetachedSignature'; | ||||
| export * from './createAttachedSignature'; | ||||
| export * from './createHash'; | ||||
| export * from './certificate'; | ||||
|  | ||||
							
								
								
									
										2
									
								
								lib/crypto-pro.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								lib/crypto-pro.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -1,4 +1,4 @@ | ||||
| // Type definitions for crypto-pro 2.0.5
 | ||||
| // Type definitions for crypto-pro 2.1.0
 | ||||
| // Project: crypto-pro
 | ||||
| // Definitions by: Vitalii Goma https://github.com/vgoma
 | ||||
| 
 | ||||
|  | ||||
| @ -2611,6 +2611,196 @@ exports.isValid = _afterPluginsLoaded_1._afterPluginsLoaded(function () { | ||||
| }); | ||||
| 
 | ||||
| 
 | ||||
| /***/ }), | ||||
| 
 | ||||
| /***/ "./api/createAttachedSignature.ts": | ||||
| /*!****************************************!*\ | ||||
|   !*** ./api/createAttachedSignature.ts ***! | ||||
|   \****************************************/ | ||||
| /*! no static exports found */ | ||||
| /***/ (function(module, exports, __webpack_require__) { | ||||
| 
 | ||||
| "use strict"; | ||||
| /* WEBPACK VAR INJECTION */(function(Buffer) { | ||||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||||
|     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||||
|     return new (P || (P = Promise))(function (resolve, reject) { | ||||
|         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||||
|         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||||
|         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||||
|         step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||||
|     }); | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| const constants_1 = __webpack_require__(/*! ../constants */ "./constants/index.ts"); | ||||
| const _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts"); | ||||
| const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts"); | ||||
| const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts"); | ||||
| const _getCadesCert_1 = __webpack_require__(/*! ../helpers/_getCadesCert */ "./helpers/_getCadesCert.ts"); | ||||
| const _getDateObj_1 = __webpack_require__(/*! ../helpers/_getDateObj */ "./helpers/_getDateObj.ts"); | ||||
| /** | ||||
|  * Создает присоединенную подпись сообщения по отпечатку сертификата | ||||
|  * | ||||
|  * @param thumbprint - отпечаток сертификата | ||||
|  * @param message - подписываемое сообщение | ||||
|  * @returns подпись в формате PKCS#7 | ||||
|  */ | ||||
| exports.createAttachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thumbprint, unencryptedMessage) => __awaiter(void 0, void 0, void 0, function* () { | ||||
|     const { cadesplugin } = window; | ||||
|     const cadesCertificate = yield _getCadesCert_1._getCadesCert(thumbprint); | ||||
|     return eval(_generateCadesFn_1._generateCadesFn(function createAttachedSignature() { | ||||
|         let cadesAttrs; | ||||
|         let cadesSignedData; | ||||
|         let cadesSigner; | ||||
|         try { | ||||
|             cadesAttrs = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CADESCOM.CPAttribute'); | ||||
|             cadesSignedData = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.CadesSignedData'); | ||||
|             cadesSigner = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.CPSigner'); | ||||
|         } | ||||
|         catch (error) { | ||||
|             console.error(error); | ||||
|             throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи'); | ||||
|         } | ||||
|         const currentTime = _getDateObj_1._getDateObj(new Date()); | ||||
|         try { | ||||
|             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAttrs.propset_Name(constants_1.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME)); | ||||
|             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime)); | ||||
|         } | ||||
|         catch (error) { | ||||
|             console.error(error); | ||||
|             throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи'); | ||||
|         } | ||||
|         let messageBase64; | ||||
|         try { | ||||
|             messageBase64 = Buffer.from(unencryptedMessage).toString('base64'); | ||||
|         } | ||||
|         catch (error) { | ||||
|             console.error(error); | ||||
|             throw new Error('Ошибка при преобразовании сообщения в Base64'); | ||||
|         } | ||||
|         let cadesAuthAttrs; | ||||
|         try { | ||||
|             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate)); | ||||
|             cadesAuthAttrs = _generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2; | ||||
|             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs)); | ||||
|             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY)); | ||||
|             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.propset_Content(messageBase64)); | ||||
|             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN)); | ||||
|         } | ||||
|         catch (error) { | ||||
|             console.error(error); | ||||
|             throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи'); | ||||
|         } | ||||
|         let signature; | ||||
|         try { | ||||
|             signature = _generateCadesFn_1.__cadesAsyncToken__ + cadesSignedData.SignCades(cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE); | ||||
|         } | ||||
|         catch (error) { | ||||
|             console.error(error); | ||||
|             throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных'); | ||||
|         } | ||||
|         return signature; | ||||
|     })); | ||||
| })); | ||||
| 
 | ||||
| /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/buffer/index.js */ "../node_modules/buffer/index.js").Buffer)) | ||||
| 
 | ||||
| /***/ }), | ||||
| 
 | ||||
| /***/ "./api/createDetachedSignature.ts": | ||||
| /*!****************************************!*\ | ||||
|   !*** ./api/createDetachedSignature.ts ***! | ||||
|   \****************************************/ | ||||
| /*! no static exports found */ | ||||
| /***/ (function(module, exports, __webpack_require__) { | ||||
| 
 | ||||
| "use strict"; | ||||
| 
 | ||||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||||
|     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||||
|     return new (P || (P = Promise))(function (resolve, reject) { | ||||
|         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||||
|         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||||
|         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||||
|         step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||||
|     }); | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| const constants_1 = __webpack_require__(/*! ../constants */ "./constants/index.ts"); | ||||
| const _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLoaded */ "./helpers/_afterPluginsLoaded.ts"); | ||||
| const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts"); | ||||
| const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts"); | ||||
| const _getCadesCert_1 = __webpack_require__(/*! ../helpers/_getCadesCert */ "./helpers/_getCadesCert.ts"); | ||||
| const _getDateObj_1 = __webpack_require__(/*! ../helpers/_getDateObj */ "./helpers/_getDateObj.ts"); | ||||
| /** | ||||
|  * Создает отсоединенную подпись хеша по отпечатку сертификата | ||||
|  * | ||||
|  * @param thumbprint - отпечаток сертификата | ||||
|  * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит | ||||
|  * @returns подпись в формате PKCS#7 | ||||
|  */ | ||||
| exports.createDetachedSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thumbprint, messageHash) => __awaiter(void 0, void 0, void 0, function* () { | ||||
|     const { cadesplugin } = window; | ||||
|     const cadesCertificate = yield _getCadesCert_1._getCadesCert(thumbprint); | ||||
|     return eval(_generateCadesFn_1._generateCadesFn(function createDetachedSignature() { | ||||
|         let cadesAttrs; | ||||
|         let cadesHashedData; | ||||
|         let cadesSignedData; | ||||
|         let cadesSigner; | ||||
|         try { | ||||
|             cadesAttrs = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CADESCOM.CPAttribute'); | ||||
|             cadesHashedData = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.HashedData'); | ||||
|             cadesSignedData = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.CadesSignedData'); | ||||
|             cadesSigner = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.CPSigner'); | ||||
|         } | ||||
|         catch (error) { | ||||
|             console.error(error); | ||||
|             throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи'); | ||||
|         } | ||||
|         const currentTime = _getDateObj_1._getDateObj(new Date()); | ||||
|         try { | ||||
|             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAttrs.propset_Name(constants_1.CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME)); | ||||
|             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime)); | ||||
|         } | ||||
|         catch (error) { | ||||
|             console.error(error); | ||||
|             throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи'); | ||||
|         } | ||||
|         let cadesAuthAttrs; | ||||
|         try { | ||||
|             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate)); | ||||
|             cadesAuthAttrs = _generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2; | ||||
|             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs)); | ||||
|             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN)); | ||||
|         } | ||||
|         catch (error) { | ||||
|             console.error(error); | ||||
|             throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при установке сертификата'); | ||||
|         } | ||||
|         try { | ||||
|             void (_generateCadesFn_1.__cadesAsyncToken__ + | ||||
|                 cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)); | ||||
|             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesHashedData.SetHashValue(messageHash)); | ||||
|         } | ||||
|         catch (error) { | ||||
|             console.error(error); | ||||
|             throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при установке хеша'); | ||||
|         } | ||||
|         let signature; | ||||
|         try { | ||||
|             signature = | ||||
|                 _generateCadesFn_1.__cadesAsyncToken__ + | ||||
|                     cadesSignedData.SignHash(cadesHashedData, cadesSigner, cadesplugin.CADESCOM_PKCS7_TYPE); | ||||
|         } | ||||
|         catch (error) { | ||||
|             console.error(error); | ||||
|             throw new Error(_extractMeaningfulErrorMessage_1._extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных'); | ||||
|         } | ||||
|         return signature; | ||||
|     })); | ||||
| })); | ||||
| 
 | ||||
| 
 | ||||
| /***/ }), | ||||
| 
 | ||||
| /***/ "./api/createHash.ts": | ||||
| @ -2636,21 +2826,14 @@ const _afterPluginsLoaded_1 = __webpack_require__(/*! ../helpers/_afterPluginsLo | ||||
| const _extractMeaningfulErrorMessage_1 = __webpack_require__(/*! ../helpers/_extractMeaningfulErrorMessage */ "./helpers/_extractMeaningfulErrorMessage.ts"); | ||||
| const _generateCadesFn_1 = __webpack_require__(/*! ../helpers/_generateCadesFn */ "./helpers/_generateCadesFn.ts"); | ||||
| /** | ||||
|  * Создает хэш сообщения по ГОСТ Р 34.11 | ||||
|  * Создает хеш сообщения по ГОСТ Р 34.11-2012 256 бит | ||||
|  * https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B8%D0%B1%D0%BE%D0%B3_(%D1%85%D0%B5%D1%88-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F)
 | ||||
|  * | ||||
|  * @param unencryptedMessage - сообщение для хеширования | ||||
|  * @param algorithm - один из алгоритмов хеширования: | ||||
|  * GOST_3411 | ||||
|  * GOST_3411_2012_256 | ||||
|  * GOST_3411_2012_512 - по умолчанию | ||||
|  * GOST_3411_HMAC | ||||
|  * GOST_3411_2012_256_HMAC | ||||
|  * GOST_3411_2012_512_HMAC | ||||
|  * | ||||
|  * @returns хэш | ||||
|  * @returns хеш | ||||
|  */ | ||||
| exports.createHash = _afterPluginsLoaded_1._afterPluginsLoaded((unencryptedMessage, algorithm = 'GOST_3411_2012_512') => __awaiter(void 0, void 0, void 0, function* () { | ||||
| exports.createHash = _afterPluginsLoaded_1._afterPluginsLoaded((unencryptedMessage) => __awaiter(void 0, void 0, void 0, function* () { | ||||
|     const { cadesplugin } = window; | ||||
|     return eval(_generateCadesFn_1._generateCadesFn(function createHash() { | ||||
|         const cadesHashedData = _generateCadesFn_1.__cadesAsyncToken__ + _generateCadesFn_1.__createCadesPluginObject__('CAdESCOM.HashedData'); | ||||
| @ -2665,7 +2848,7 @@ exports.createHash = _afterPluginsLoaded_1._afterPluginsLoaded((unencryptedMessa | ||||
|         } | ||||
|         try { | ||||
|             void (_generateCadesFn_1.__cadesAsyncToken__ + | ||||
|                 cadesHashedData.propset_Algorithm(cadesplugin['CADESCOM_HASH_ALGORITHM_CP_' + algorithm])); | ||||
|                 cadesHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256)); | ||||
|             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesHashedData.propset_DataEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY)); | ||||
|             void (_generateCadesFn_1.__cadesAsyncToken__ + cadesHashedData.Hash(messageBase64)); | ||||
|         } | ||||
| @ -2717,11 +2900,15 @@ const _getDateObj_1 = __webpack_require__(/*! ../helpers/_getDateObj */ "./helpe | ||||
|  * Создает подпись base64 строки по отпечатку сертификата | ||||
|  * | ||||
|  * @param thumbprint - отпечаток сертификата | ||||
|  * @param messageHash - хэш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11 | ||||
|  * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11 | ||||
|  * @param detachedSignature = true - тип подписи открепленная (true) / присоединенная (false) | ||||
|  * @returns подпись | ||||
|  */ | ||||
| exports.createSignature = _afterPluginsLoaded_1._afterPluginsLoaded((thumbprint, messageHash, detachedSignature = true) => __awaiter(void 0, void 0, void 0, function* () { | ||||
|     console.warn([ | ||||
|         'cryptoPro: Метод "createSignature" является устаревшим и будет убран из будущих версий.', | ||||
|         'Используйте "createAttachedSignature" и "createDetachedSignature".', | ||||
|     ].join('\n')); | ||||
|     const { cadesplugin } = window; | ||||
|     const cadesCertificate = yield _getCadesCert_1._getCadesCert(thumbprint); | ||||
|     return eval(_generateCadesFn_1._generateCadesFn(function createSignature() { | ||||
| @ -2972,6 +3159,8 @@ __export(__webpack_require__(/*! ./getUserCertificates */ "./api/getUserCertific | ||||
| __export(__webpack_require__(/*! ./getSystemInfo */ "./api/getSystemInfo.ts")); | ||||
| __export(__webpack_require__(/*! ./isValidSystemSetup */ "./api/isValidSystemSetup.ts")); | ||||
| __export(__webpack_require__(/*! ./createSignature */ "./api/createSignature.ts")); | ||||
| __export(__webpack_require__(/*! ./createDetachedSignature */ "./api/createDetachedSignature.ts")); | ||||
| __export(__webpack_require__(/*! ./createAttachedSignature */ "./api/createAttachedSignature.ts")); | ||||
| __export(__webpack_require__(/*! ./createHash */ "./api/createHash.ts")); | ||||
| __export(__webpack_require__(/*! ./certificate */ "./api/certificate/index.ts")); | ||||
| 
 | ||||
| @ -4438,4 +4627,4 @@ exports._parseCertInfo = (tagsTranslations, rawInfo) => { | ||||
| 
 | ||||
| /******/ }); | ||||
| }); | ||||
| //# sourceMappingURL=crypto-pro.js.map
 | ||||
| //# sourceMappingURL=crypto-pro.js.map
 | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "crypto-pro", | ||||
|   "version": "2.0.5", | ||||
|   "version": "2.1.0", | ||||
|   "lockfileVersion": 1, | ||||
|   "requires": true, | ||||
|   "dependencies": { | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "crypto-pro", | ||||
|   "version": "2.0.5", | ||||
|   "version": "2.1.0", | ||||
|   "description": "API для взаимодействия с КриптоПро", | ||||
|   "main": "./lib/crypto-pro.js", | ||||
|   "types": "./lib/crypto-pro.d.ts", | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 vgoma
						vgoma