mirror of
				https://github.com/crypto-pro-web/crypto-pro-js.git
				synced 2025-10-30 22:03:21 +03:00 
			
		
		
		
	
						commit
						d8f2ba6c23
					
				
							
								
								
									
										249
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										249
									
								
								README.md
									
									
									
									
									
								
							| @ -2,21 +2,19 @@ | ||||
| [![NPM downloads][npm-downloads-image]][downloads-url] | ||||
| [![Build Status][travis-image]][travis-url] | ||||
| [![Coverage Status][coveralls-image]][coveralls-url] | ||||
| [![Examples][examples-image]][examples-url] | ||||
| [![Donate][donate-image]][donate-url] | ||||
| <a href="https://www.jetbrains.com/?from=crypto-pro" title="При поддержке Jetbrains"><img src="resources/logo-webstorm.svg" height="20"></a> | ||||
| 
 | ||||
| <a name="cryptopro"></a> | ||||
| # cryptoPro | ||||
| Единое, асинхронное API для взаимодействия с КриптоПРО ЭЦП Browser Plug-In | ||||
| 
 | ||||
| > :warning: **Это форк проекта [vgoma/crypto-pro](https://github.com/vgoma/crypto-pro)** | ||||
| > | ||||
| > :warning: **API форка отличается от оригинала**: внимательно читайте README | ||||
| 
 | ||||
| | [](https://www.chromium.org/getting-involved/download-chromium#TOC-Downloading-old-builds-of-Chrome-Chromium)       | [](https://ftp.mozilla.org/pub/firefox/releases/)                                     | [](https://www.microsoft.com/ru-ru/download/details.aspx?id=43374)     | [](http://get.opera.com/ftp/pub/opera/desktop/)                      | | ||||
| | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||||
| | __v45+__ с расширением [CryptoPro Extension for CAdES Browser Plug-in](https://chrome.google.com/webstore/detail/cryptopro-extension-for-c/iifchhfnnmpdbibifmljnfjhpififfog?utm_source=chrome-app-launcher-info-dialog) | __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) | __v9+__ с установленным [КриптоПро ЭЦП Browser plug-in](https://www.cryptopro.ru/products/cades/plugin)                                                                                                        | __v40+__ с расширением [CryptoPro Extension for CAdES Browser Plug-in](https://addons.opera.com/en/extensions/details/cryptopro-extension-for-cades-browser-plug-in/) | | ||||
| 
 | ||||
| [](#example-script-tag) | ||||
| [](#example-script-tag) | ||||
| [](#example-script-tag) | ||||
| 
 | ||||
| - [cryptoPro](#cryptopro) | ||||
|     - [Зачем мне этот пакет?](#why) | ||||
| @ -29,17 +27,11 @@ | ||||
|         - [Тэг script (UMD)](#example-script-tag) | ||||
|         - [Angular (ES Modules + Typescript)](#example-angular) | ||||
|         - [React (ES Modules + JavaScript)](#example-react) | ||||
|     - [Миграция с версии 1 на 2](#upgrade-from-1-to-2) | ||||
| - [Тем, кто хочет помочь](#developers) | ||||
|     - [Запуск режима разработки](#dev-mode) | ||||
|     - [Запуск тестов](#tests-execution) | ||||
|     - [Проверка работы примеров с React и Angular](#examples-testing) | ||||
|     - [Проверка пакета перед публикацией в NPM](#final-check) | ||||
| - [Полезная информация](#helpful) | ||||
|     - [Установка КриптоПРО CSP в Linux / OSX](#csp-install-linux-osx) | ||||
|     - [Установка КриптоПРО ЭЦП browser plug-in в Linux](#plugin-install-linux) | ||||
|         - [Настройка плагина для Firefox (до версии 52)](#plugin-install-old-firefox) | ||||
|     - [Установка сертификатов в Linux](#certificates-install-linux) | ||||
| - [Лицензия](#lisense) | ||||
| 
 | ||||
| <a name="why"></a> | ||||
| @ -47,15 +39,6 @@ | ||||
| КриптоПРО ЭЦП Browser Plug-In доступен в разных браузерах в двух версиях. | ||||
| Асинхронной (в современных браузерах) и синхронной (в браузерах постарше). | ||||
| С помощью этого пакета можно не писать реализацию под каждую версию плагина дважды. | ||||
| И вместо [этого](http://cpdn.cryptopro.ru/content/cades/plugin-samples-sign.html) | ||||
| и [этого](http://cpdn.cryptopro.ru/content/cades/plugin-samples-sign-cades-bes-async.html) | ||||
| написать это (UMD): | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| или это (ES Modules + Typescript): | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| <a name="install"></a> | ||||
| ## Установка | ||||
| @ -116,11 +99,10 @@ import { getUserCertificates, Certificate } from 'crypto-pro'; | ||||
| - [getCertificate](src/api/getCertificate.ts) - возвращает [сертификат](#api-certificate) по отпечатку | ||||
| - [createAttachedSignature](src/api/createAttachedSignature.ts) - создает совмещенную (присоединенную) подпись сообщения | ||||
| - [createDetachedSignature](src/api/createDetachedSignature.ts) - создает отсоединенную (открепленную) подпись сообщения | ||||
| - [addAttachedSignature](src/api/addAttachedSignature.ts) - добавляет совмещенную (присоединенную) подпись к раннее подписанному документу (реализует метод coSign) | ||||
| - [addDetachedSignature](src/api/addDetachedSignature.ts) - добавляет отсоединенную (открепленную) подпись к раннее подписанному документу (реализует метод coSign) | ||||
| - [createXMLSignature](src/api/createXMLSignature.ts) - создает XML подпись для документа в формате XML | ||||
| - [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) - возвращает флаг корректности настроек ЭП на машине | ||||
| 
 | ||||
| @ -139,15 +121,7 @@ import { getUserCertificates, Certificate } from 'crypto-pro'; | ||||
| 
 | ||||
| <a name="supported-cist"></a> | ||||
| ## Поддерживаемые СКЗИ | ||||
| [КриптоПРО CSP](https://www.cryptopro.ru/products/csp/downloads) (v4.0+) *рекомендуется использование только сертифицированных версий*. Инструкция по установке: | ||||
| - [Linux / OSX](#csp-install-linux-osx) | ||||
| - (в Windows следуйте указаниям программы-установщика) | ||||
| 
 | ||||
| [КриптоПРО ЭЦП browser plug-in](https://www.cryptopro.ru/products/cades/plugin) (v2.0.12438+). | ||||
| 
 | ||||
| [Инструкция](#plugin-install-linux) по установке плагина в Linux. В Windows и OSX следуйте указаниям программы-установщика. | ||||
| 
 | ||||
| [Инструкция](#certificates-install-linux) по установке сертификатов в систему для Linux / OSX. | ||||
| [КриптоПРО CSP](https://www.cryptopro.ru/products/csp/downloads) (v4.0+) | ||||
| 
 | ||||
| <a name="examples"></a> | ||||
| ## Примеры | ||||
| @ -197,50 +171,6 @@ npm run build | ||||
| npm run serve | ||||
| ``` | ||||
| 
 | ||||
| <a name="upgrade-from-1-to-2"></a> | ||||
| ## Миграция с версии 1 на 2 | ||||
| Внесены следующие изменения: | ||||
| - Пакет собран в форматах: | ||||
|     - UMD, в папке `dist/`, для подключения через тэг script. Объект `window.cryptoPro` доступен глобально. | ||||
|     - ES Modules, в папке `lib/`, для использования с разными системами сборки. | ||||
|     Методы API импортируются напрямую из npm пакета. | ||||
| - В UMD версии переименован глобальный объект с `window.CryptoPro` на `window.cryptoPro` | ||||
| - Переименованы общие методы: | ||||
|     - `getCertsList` -> `getUserCertificates` | ||||
|     - `getCert` -> `getCertificate` | ||||
|     - `signData` -> `createSignature` | ||||
|     - `isValidEDSSettings`, `isValidCSPVersion`, `isValidCadesVersion` -> `isValidSystemSetup` | ||||
| - Убран метод `signDataXML` | ||||
| - Переименованы методы сертификата: | ||||
|     - `getProp` -> `getCadesProp` | ||||
| - Результат методов сертификата `getOwnerInfo` и `getIssuerInfo` | ||||
| изменился с `{ descr, title, translated }` на `{ description, title, isTranslated }` | ||||
| - Принципиальная реализация методов, обращающихся к Крипто ПРО не изменилась. | ||||
| Получение сертификатов, создание подписи, проверка корректности настроек работают по-прежнему. | ||||
| - Убрана поддержка IE8 (Крипто ПРО его больше не поддерживает) | ||||
| - Убрана поддержка КриптоПРО CSP версий ниже 4.0 | ||||
| - Убрана поддержка КриптоПРО ЭЦП browser plug-in версий ниже 2.0 | ||||
| - Доработана обработка ошибок, выбрасываемых из Крипто ПРО | ||||
| - При написании кода будут работать автодополнения и подсказки | ||||
| - Исправлена [проблема](https://github.com/vgoma/crypto-pro/issues/11) работы библиотеки с UglifyJs | ||||
| - Методы API доступны напрямую: | ||||
| 
 | ||||
| В версии 1: | ||||
| ```javascript | ||||
| window.CryptoPro.call('getSystemInfo'); | ||||
| ``` | ||||
| 
 | ||||
| В версии 2 (UMD): | ||||
| ```javascript | ||||
| window.cryptoPro.getSystemInfo(); | ||||
| ``` | ||||
| 
 | ||||
| В версии 2 (ES Modules): | ||||
| ```javascript | ||||
| import { getSystemInfo } from 'crypto-pro'; | ||||
| 
 | ||||
| getSystemInfo(); | ||||
| ``` | ||||
| 
 | ||||
| <a name="developers"></a> | ||||
| # Тем, кто хочет помочь | ||||
| @ -330,162 +260,15 @@ cd ../../../package | ||||
| npm unlink | ||||
| ``` | ||||
| 
 | ||||
| <a name="helpful"></a> | ||||
| # Полезная информация | ||||
| 
 | ||||
| <a name="csp-install-linux-osx"></a> | ||||
| ## Установка КриптоПРО CSP в Linux / OSX  | ||||
| > Процесс установки в OSX незначительно отличается от Linux, поэтому описание приведено на примере дистрибутива семейства Debian (x64).   | ||||
| 
 | ||||
| Некоторые команды могут потребовать запуска с `sudo`. | ||||
| Названия файлов и директорий могут отличаться из-за различий в версиях. | ||||
| 
 | ||||
| После загрузки [КриптоПРО CSP](https://www.cryptopro.ru/products/csp/downloads) для нужной платформы, распакуйте архив: | ||||
| ```bash | ||||
| tar -xzvf linux-amd64_deb.tgz | ||||
| chmod 777 -R linux-amd64_deb/ | ||||
| ``` | ||||
| 
 | ||||
| Запустите скрипт установки: | ||||
| ```bash | ||||
| linux-amd64_deb/install.sh | ||||
| ``` | ||||
| 
 | ||||
| Проверьте **отсутствие** `cprocsp-rdr-gui`: | ||||
| ```bash | ||||
| dpkg -l | grep cprocsp-rdr | ||||
| ``` | ||||
| 
 | ||||
| Установите дополнительно `cprocsp-rdr-gui-gtk`: | ||||
| ```bash | ||||
| dpkg -i linux-amd64_deb/cprocsp-rdr-gui-gtk-64_4.0.0-4_amd64.deb | ||||
| ``` | ||||
| 
 | ||||
| [Дополнительная информация по установке](https://www.cryptopro.ru/faq/gde-vzyat-dokumentatsiyu-po-ustanovke-kakie-pakety-stavit) | ||||
| 
 | ||||
| <a name="plugin-install-linux"></a> | ||||
| ## Установка КриптоПРО ЭЦП browser plugin в Linux | ||||
| Загрузите [КриптоПРО ЭЦП browser plug-in](https://www.cryptopro.ru/products/cades/plugin) и распакуйте его: | ||||
| ```bash | ||||
| mkdir cades_linux_amd64 | ||||
| tar -xzvf cades_linux_amd64.tar.gz -C cades_linux_amd64 | ||||
| ``` | ||||
| 
 | ||||
| Сконвертируйте `rpm` в `deb` пакеты при помощи утилиты `alien`: | ||||
| ```bash | ||||
| apt-get update && apt-get install alien | ||||
| cd cades_linux_amd64 | ||||
| alien * | ||||
| ``` | ||||
| 
 | ||||
| Установите пакеты: | ||||
| ```bash | ||||
| dpkg -i cprocsp-pki-cades_2.0.0-2_amd64.deb | ||||
| dpkg -i cprocsp-pki-plugin_2.0.0-2_amd64.deb | ||||
| ``` | ||||
| 
 | ||||
| Проверьте наличие файлов плагина: | ||||
| ```bash | ||||
| ls -la /opt/cprocsp/lib/amd64 | grep libnpcades | ||||
| 
 | ||||
|     lrwxrwxrwx 1 root root      19 Окт 21 12:33 libnpcades.so -> libnpcades.so.2.0.0 | ||||
|     lrwxrwxrwx 1 root root      19 Окт 21 12:33 libnpcades.so.2 -> libnpcades.so.2.0.0 | ||||
|     -rwxr-xr-x 1 root root 2727236 Июн  8 14:33 libnpcades.so.2.0.0 | ||||
| ``` | ||||
| 
 | ||||
| <a name="plugin-install-old-firefox"></a> | ||||
| ### Настройка плагина для Firefox (до версии 52) | ||||
| > После настройки плагина на страницах, запрашивающих работу с ЭП в панели навигации, рядом с url будет кнопка, | ||||
|   позволяющая "разрешить и запомнить" использование установленного плагина. | ||||
| 
 | ||||
| ```bash | ||||
| cd /usr/lib/mozilla/plugins | ||||
| 
 | ||||
| cp /opt/cprocsp/lib/amd64/libnpcades.so.2.0.0 ./ | ||||
| ldd libnpcades.so.2.0.0 | ||||
| 
 | ||||
| cp /opt/cprocsp/lib/amd64/libnpcades.so.2.0.0 ./libnpcades.so | ||||
| ldd libnpcades.so | ||||
| ``` | ||||
| Перезапустите Firefox, и убедитесь в наличии CryptoPRO Cades plugin (см. Menu -> Addons). | ||||
| 
 | ||||
| <a name="certificates-install-linux"></a> | ||||
| ## Установка сертификатов в Linux | ||||
| > В OSX процесс схож с Linux. | ||||
| 
 | ||||
| Подключите USB носитель с ключевыми контейнерами и проверьте результат команды: | ||||
| ```bash | ||||
| /opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -fqcn -verifyc | ||||
| 
 | ||||
|     CSP (Type:80) v4.0.9009 KC1 Release Ver:4.0.9797 OS:Linux CPU:AMD64 FastCode:READY:AVX. | ||||
|         AcquireContext: OK. HCRYPTPROV: 16188003 | ||||
|         \\.\FLASH\ivanov | ||||
|         \\.\FLASH\petrov | ||||
|         \\.\FLASH\sidorov | ||||
|         \\.\FLASH\vasiliev | ||||
|         \\.\FLASH\smirnov | ||||
|         OK. | ||||
|         Total: SYS: 0,020 sec USR: 0,060 sec UTC: 0,180 sec | ||||
| ``` | ||||
| 
 | ||||
| Скопируйте ключевой контейнер `\\.\FLASH\.\sidorov` на жесткий диск: | ||||
| ```bash | ||||
| /opt/cprocsp/bin/amd64/csptest -keycopy -contsrc '\\.\FLASH\sidorov' -contdest '\\.\HDIMAGE\sidor' | ||||
| 
 | ||||
|     CSP (Type:80) v4.0.9009 KC1 Release Ver:4.0.9797 OS:Linux CPU:AMD64 FastCode:READY:AVX. | ||||
|     CryptAcquireContext succeeded.HCRYPTPROV: 38556259 | ||||
|     CryptAcquireContext succeeded.HCRYPTPROV: 38770755 | ||||
|     Total: SYS: 0,000 sec USR: 0,100 sec UTC: 14,920 sec | ||||
|     [ErrorCode: 0x00000000] | ||||
| ``` | ||||
| > Наличие [ErrorCode: 0x00000000] в завершении каждой команды КриптоПРО говорит о ее успешном выполнении. | ||||
| 
 | ||||
| Проверьте наличие нового контейнера `\\.\HDIMAGE\sidor`: | ||||
| ```bash | ||||
| /opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -fqcn -verifyc | ||||
| 
 | ||||
|     CSP (Type:80) v4.0.9009 KC1 Release Ver:4.0.9797 OS:Linux CPU:AMD64 FastCode:READY:AVX. | ||||
|     AcquireContext: OK. HCRYPTPROV: 34554467 | ||||
|     \\.\FLASH\ivanov | ||||
|     \\.\FLASH\petrov | ||||
|     \\.\FLASH\sidorov | ||||
|     \\.\FLASH\vasiliev | ||||
|     \\.\FLASH\smirnov | ||||
|     \\.\HDIMAGE\sidor | ||||
|     OK. | ||||
|     Total: SYS: 0,010 sec USR: 0,050 sec UTC: 0,130 sec | ||||
|     [ErrorCode: 0x00000000] | ||||
| ``` | ||||
| 
 | ||||
| Установите личный сертификат: | ||||
| ```bash | ||||
| /opt/cprocsp/bin/amd64/certmgr -inst -cont '\\.\HDIMAGE\sidor' | ||||
| ``` | ||||
| > Возможно в выводе вы ссылку на сертификат УЦ | ||||
| 
 | ||||
| При необходимости загрузите сертификат удостоверяющего центра и установите его командой: | ||||
| ```bash | ||||
| /opt/cprocsp/bin/amd64/certmgr -inst -store uroot -file <файл сертификата>.crt | ||||
| ``` | ||||
| 
 | ||||
| После чего, при проверке установленного личного сертификата вы увидите `PrivateKey Link: Yes`: | ||||
| ```bash | ||||
| /opt/cprocsp/bin/amd64/certmgr -list -store uMy | ||||
| ``` | ||||
| 
 | ||||
| <a name="lisense"></a> | ||||
| # Лицензия | ||||
| MIT | ||||
| [MIT](/LICENSE) | ||||
| 
 | ||||
| [npm-url]: https://npmjs.org/package/crypto-pro | ||||
| [npm-version-image]: http://img.shields.io/npm/v/crypto-pro.svg?style=flat | ||||
| [npm-downloads-image]: http://img.shields.io/npm/dm/crypto-pro.svg?style=flat | ||||
| [downloads-url]: https://npmcharts.com/compare/crypto-pro?minimal=true | ||||
| [travis-url]: https://travis-ci.org/vgoma/crypto-pro | ||||
| [travis-image]: http://img.shields.io/travis/vgoma/crypto-pro/master.svg?style=flat | ||||
| [coveralls-image]: https://coveralls.io/repos/github/vgoma/crypto-pro/badge.svg?branch=master | ||||
| [coveralls-url]: https://coveralls.io/github/vgoma/crypto-pro?branch=master | ||||
| [donate-image]: https://img.shields.io/badge/%D1%81%D0%BF%D0%B0%D1%81%D0%B8%D0%B1%D0%BE-%E2%82%BD-yellow | ||||
| [donate-url]: https://money.yandex.ru/to/410011609769902 | ||||
| [examples-image]: https://img.shields.io/badge/examples-folder-pink | ||||
| [examples-url]: examples | ||||
| [npm-url]: https://npmjs.org/package/crypto-pro-js | ||||
| [npm-version-image]: https://img.shields.io/npm/v/crypto-pro-js.svg?style=flat | ||||
| [npm-downloads-image]: http://img.shields.io/npm/dm/crypto-pro-js.svg?style=flat | ||||
| [downloads-url]: https://npmcharts.com/compare/crypto-pro-js?minimal=true | ||||
| [travis-url]: https://www.travis-ci.com/kernusr/crypto-pro-js | ||||
| [travis-image]: http://img.shields.io/travis/kernusr/crypto-pro-js/master.svg?style=flat | ||||
| [coveralls-image]: https://coveralls.io/repos/github/kernusr/crypto-pro-js/badge.svg?branch=master | ||||
| [coveralls-url]: https://coveralls.io/github/kernusr/crypto-pro-js?branch=master | ||||
|  | ||||
							
								
								
									
										9
									
								
								dist/api/createSignature.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								dist/api/createSignature.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -1,9 +0,0 @@ | ||||
| /** | ||||
|  * Создает подпись base64 строки по отпечатку сертификата | ||||
|  * | ||||
|  * @param thumbprint - отпечаток сертификата | ||||
|  * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11 | ||||
|  * @param detachedSignature = true - тип подписи открепленная (true) / присоединенная (false) | ||||
|  * @returns подпись | ||||
|  */ | ||||
| export declare const createSignature: (thumbprint: string, messageHash: string, detachedSignature?: boolean) => Promise<string>; | ||||
							
								
								
									
										8
									
								
								dist/api/getAllUserCertificates.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								dist/api/getAllUserCertificates.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | ||||
| import { Certificate } from './certificate'; | ||||
| /** | ||||
|  * Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа | ||||
|  * | ||||
|  * @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов | ||||
|  * @returns список сертификатов | ||||
|  */ | ||||
| export declare const getAllUserCertificates: (resetCache?: boolean) => Promise<Certificate[]>; | ||||
							
								
								
									
										6
									
								
								dist/api/getCspVersion.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								dist/api/getCspVersion.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | ||||
| /** | ||||
|  * Предоставляет информацию о системе | ||||
|  * | ||||
|  * @returns информацию о CSP | ||||
|  */ | ||||
| export declare const getCspVersion: () => Promise<string>; | ||||
							
								
								
									
										6
									
								
								dist/api/getPluginVersion.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								dist/api/getPluginVersion.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | ||||
| /** | ||||
|  * Предоставляет информацию о системе | ||||
|  * | ||||
|  * @returns информацию о плагине | ||||
|  */ | ||||
| export declare const getPluginVersion: () => Promise<string>; | ||||
							
								
								
									
										1
									
								
								dist/api/index.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								dist/api/index.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -3,7 +3,6 @@ export * from './getUserCertificates'; | ||||
| export * from './getAllUserCertificates'; | ||||
| export * from './getSystemInfo'; | ||||
| export * from './isValidSystemSetup'; | ||||
| export * from './createSignature'; | ||||
| export * from './createXMLSignature'; | ||||
| export * from './createDetachedSignature'; | ||||
| export * from './addDetachedSignature'; | ||||
|  | ||||
							
								
								
									
										7
									
								
								dist/crypto-pro-js.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								dist/crypto-pro-js.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | ||||
| // Type definitions for crypto-pro-js 2.3.0
 | ||||
| // Project: crypto-pro-js
 | ||||
| // Definitions by: Artem Vasilev https://github.com/kernusr
 | ||||
| 
 | ||||
| export as namespace cryptoPro; | ||||
| 
 | ||||
| export * from './api'; | ||||
							
								
								
									
										5408
									
								
								dist/crypto-pro-js.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5408
									
								
								dist/crypto-pro-js.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1
									
								
								dist/crypto-pro-js.js.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								dist/crypto-pro-js.js.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										11
									
								
								dist/crypto-pro-js.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								dist/crypto-pro-js.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1
									
								
								dist/crypto-pro-js.min.js.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								dist/crypto-pro-js.min.js.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										13378
									
								
								examples/angular/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										13378
									
								
								examples/angular/package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -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.2.0", | ||||
|     "crypto-pro-js": "^2.3.0", | ||||
|     "rxjs": "~6.5.4", | ||||
|     "tslib": "^1.10.0", | ||||
|     "zone.js": "~0.10.2" | ||||
| @ -31,9 +31,9 @@ | ||||
|     "@angular/cli": "~9.0.7", | ||||
|     "@angular/compiler-cli": "~9.0.7", | ||||
|     "@angular/language-service": "~9.0.7", | ||||
|     "@types/node": "^12.11.1", | ||||
|     "@types/jasmine": "~3.5.0", | ||||
|     "@types/jasminewd2": "~2.0.3", | ||||
|     "@types/node": "^12.11.1", | ||||
|     "codelyzer": "^5.1.2", | ||||
|     "jasmine-core": "~3.5.0", | ||||
|     "jasmine-spec-reporter": "~4.2.1", | ||||
|  | ||||
							
								
								
									
										18482
									
								
								examples/react/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										18482
									
								
								examples/react/package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -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.2.0", | ||||
|     "crypto-pro-js": "^2.3.0", | ||||
|     "react": "^16.13.1", | ||||
|     "react-app-polyfill": "1.0.6", | ||||
|     "react-dom": "^16.13.1", | ||||
|  | ||||
							
								
								
									
										279
									
								
								examples/script-tag/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										279
									
								
								examples/script-tag/package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -1,8 +1,277 @@ | ||||
| { | ||||
|   "name": "crypto-pro-example-es5-script-tag", | ||||
|   "version": "0.0.0", | ||||
|   "lockfileVersion": 1, | ||||
|   "lockfileVersion": 2, | ||||
|   "requires": true, | ||||
|   "packages": { | ||||
|     "": { | ||||
|       "name": "crypto-pro-example-es5-script-tag", | ||||
|       "version": "0.0.0", | ||||
|       "dependencies": { | ||||
|         "crypto-pro-js": "^2.3.0" | ||||
|       }, | ||||
|       "devDependencies": { | ||||
|         "node-static": "0.7.11", | ||||
|         "symlink-dir": "3.1.2" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/balanced-match": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", | ||||
|       "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/better-path-resolve": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz", | ||||
|       "integrity": "sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "is-windows": "^1.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/brace-expansion": { | ||||
|       "version": "1.1.11", | ||||
|       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", | ||||
|       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "balanced-match": "^1.0.0", | ||||
|         "concat-map": "0.0.1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/colors": { | ||||
|       "version": "1.4.0", | ||||
|       "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", | ||||
|       "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", | ||||
|       "dev": true, | ||||
|       "engines": { | ||||
|         "node": ">=0.1.90" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/concat-map": { | ||||
|       "version": "0.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | ||||
|       "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/crypto-pro-js": { | ||||
|       "version": "2.3.0", | ||||
|       "resolved": "https://registry.npmjs.org/crypto-pro-js/-/crypto-pro-js-2.3.0.tgz", | ||||
|       "integrity": "sha512-pJ9vaQDdInhz2NhIE9NRj3mH6W7PsY+UQCwz7ZHrjgpVlTNWrg2Rk/ooorNfVuQUjOk3tbLYaLnMqkPkRgbmlA==" | ||||
|     }, | ||||
|     "node_modules/fs.realpath": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", | ||||
|       "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/glob": { | ||||
|       "version": "7.1.6", | ||||
|       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", | ||||
|       "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "fs.realpath": "^1.0.0", | ||||
|         "inflight": "^1.0.4", | ||||
|         "inherits": "2", | ||||
|         "minimatch": "^3.0.4", | ||||
|         "once": "^1.3.0", | ||||
|         "path-is-absolute": "^1.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": "*" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/graceful-fs": { | ||||
|       "version": "4.2.3", | ||||
|       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", | ||||
|       "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/inflight": { | ||||
|       "version": "1.0.6", | ||||
|       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", | ||||
|       "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "once": "^1.3.0", | ||||
|         "wrappy": "1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/inherits": { | ||||
|       "version": "2.0.4", | ||||
|       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", | ||||
|       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/is-windows": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", | ||||
|       "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", | ||||
|       "dev": true, | ||||
|       "engines": { | ||||
|         "node": ">=0.10.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/make-dir": { | ||||
|       "version": "3.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", | ||||
|       "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "semver": "^6.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=8" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/mime": { | ||||
|       "version": "1.6.0", | ||||
|       "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", | ||||
|       "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", | ||||
|       "dev": true, | ||||
|       "bin": { | ||||
|         "mime": "cli.js" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/minimatch": { | ||||
|       "version": "3.0.4", | ||||
|       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", | ||||
|       "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "brace-expansion": "^1.1.7" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": "*" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/minimist": { | ||||
|       "version": "0.0.10", | ||||
|       "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", | ||||
|       "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/node-static": { | ||||
|       "version": "0.7.11", | ||||
|       "resolved": "https://registry.npmjs.org/node-static/-/node-static-0.7.11.tgz", | ||||
|       "integrity": "sha512-zfWC/gICcqb74D9ndyvxZWaI1jzcoHmf4UTHWQchBNuNMxdBLJMDiUgZ1tjGLEIe/BMhj2DxKD8HOuc2062pDQ==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "colors": ">=0.6.0", | ||||
|         "mime": "^1.2.9", | ||||
|         "optimist": ">=0.3.4" | ||||
|       }, | ||||
|       "bin": { | ||||
|         "static": "bin/cli.js" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 0.4.1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/once": { | ||||
|       "version": "1.4.0", | ||||
|       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", | ||||
|       "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "wrappy": "1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/optimist": { | ||||
|       "version": "0.6.1", | ||||
|       "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", | ||||
|       "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "minimist": "~0.0.1", | ||||
|         "wordwrap": "~0.0.2" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/path-is-absolute": { | ||||
|       "version": "1.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", | ||||
|       "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", | ||||
|       "dev": true, | ||||
|       "engines": { | ||||
|         "node": ">=0.10.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/rename-overwrite": { | ||||
|       "version": "2.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/rename-overwrite/-/rename-overwrite-2.0.2.tgz", | ||||
|       "integrity": "sha512-XodkUmbg11ZzZoAkYfJYEmj8FscfeRL2KHGALeDSB76ia8A1zqQq0+WkcepXm7QkuzmW0CE3uiFUBr/UJfin+w==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "graceful-fs": "^4.1.11", | ||||
|         "rimraf": "^3.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=8" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/rimraf": { | ||||
|       "version": "3.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", | ||||
|       "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "glob": "^7.1.3" | ||||
|       }, | ||||
|       "bin": { | ||||
|         "rimraf": "bin.js" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semver": { | ||||
|       "version": "6.3.0", | ||||
|       "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", | ||||
|       "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", | ||||
|       "dev": true, | ||||
|       "bin": { | ||||
|         "semver": "bin/semver.js" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/symlink-dir": { | ||||
|       "version": "3.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/symlink-dir/-/symlink-dir-3.1.2.tgz", | ||||
|       "integrity": "sha512-wuqI+beQTU3XQq6bHTg4tcFiXlAN5uWNus+R0/I/R9O/ORpVHdCo2JQp04dCexBIb94VarosKFU+kjVEgzIQpQ==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "better-path-resolve": "^1.0.0", | ||||
|         "graceful-fs": "^4.1.11", | ||||
|         "make-dir": "^3.0.0", | ||||
|         "rename-overwrite": "^2.0.1" | ||||
|       }, | ||||
|       "bin": { | ||||
|         "symlink-dir": "dist/cli.js" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=8.15" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/wordwrap": { | ||||
|       "version": "0.0.3", | ||||
|       "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", | ||||
|       "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", | ||||
|       "dev": true, | ||||
|       "engines": { | ||||
|         "node": ">=0.4.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/wrappy": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", | ||||
|       "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", | ||||
|       "dev": true | ||||
|     } | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "balanced-match": { | ||||
|       "version": "1.0.0", | ||||
| @ -41,10 +310,10 @@ | ||||
|       "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "crypto-pro": { | ||||
|       "version": "2.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/crypto-pro/-/crypto-pro-2.2.0.tgz", | ||||
|       "integrity": "sha512-OUOmAMtzWXO3wuY6WBPv7QdkamI4WABjkRD/8OFoDyx2S9bsbZzukktFlPIgz0nvVUS7UTXACQeO0q56bh+whA==" | ||||
|     "crypto-pro-js": { | ||||
|       "version": "2.3.0", | ||||
|       "resolved": "https://registry.npmjs.org/crypto-pro-js/-/crypto-pro-js-2.3.0.tgz", | ||||
|       "integrity": "sha512-pJ9vaQDdInhz2NhIE9NRj3mH6W7PsY+UQCwz7ZHrjgpVlTNWrg2Rk/ooorNfVuQUjOk3tbLYaLnMqkPkRgbmlA==" | ||||
|     }, | ||||
|     "fs.realpath": { | ||||
|       "version": "1.0.0", | ||||
|  | ||||
| @ -13,6 +13,6 @@ | ||||
|     "symlink-dir": "3.1.2" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "crypto-pro": "2.2.0" | ||||
|     "crypto-pro-js": "^2.3.0" | ||||
|   } | ||||
| } | ||||
|  | ||||
							
								
								
									
										8
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -1,12 +1,12 @@ | ||||
| { | ||||
|   "name": "crypto-pro-custom", | ||||
|   "version": "2.2.2", | ||||
|   "name": "crypto-pro-js", | ||||
|   "version": "2.3.0", | ||||
|   "lockfileVersion": 2, | ||||
|   "requires": true, | ||||
|   "packages": { | ||||
|     "": { | ||||
|       "name": "crypto-pro-custom", | ||||
|       "version": "2.2.2", | ||||
|       "name": "crypto-pro-js", | ||||
|       "version": "2.3.0", | ||||
|       "license": "MIT", | ||||
|       "devDependencies": { | ||||
|         "@types/jest": "25.1.4", | ||||
|  | ||||
							
								
								
									
										18
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								package.json
									
									
									
									
									
								
							| @ -1,9 +1,9 @@ | ||||
| { | ||||
|   "name": "crypto-pro-custom", | ||||
|   "version": "2.2.2", | ||||
|   "description": "Кастомизированный API для взаимодействия с КриптоПро", | ||||
|   "main": "./lib/crypto-pro-custom.js", | ||||
|   "types": "./lib/crypto-pro-custom.d.ts", | ||||
|   "name": "crypto-pro-js", | ||||
|   "version": "2.3.0", | ||||
|   "description": "API для работы с КриптоПро. Forked from https://github.com/vgoma/crypto-pro", | ||||
|   "main": "./lib/crypto-pro-js.js", | ||||
|   "types": "./lib/crypto-pro-js.d.ts", | ||||
|   "files": [ | ||||
|     "lib/**/*", | ||||
|     "dist/**/*", | ||||
| @ -35,7 +35,7 @@ | ||||
|   }, | ||||
|   "repository": { | ||||
|     "type": "git", | ||||
|     "url": "https://github.com/kernusr/crypto-pro" | ||||
|     "url": "https://github.com/kernusr/crypto-pro-js" | ||||
|   }, | ||||
|   "author": { | ||||
|     "name": "Artem Vasilev", | ||||
| @ -47,12 +47,18 @@ | ||||
|       "name": "Vitalii Goma", | ||||
|       "email": "vgoma@yandex.ru", | ||||
|       "url": "https://github.com/vgoma" | ||||
|     }, | ||||
|     { | ||||
|       "name": "German Arutyunov", | ||||
|       "email": "germanarutyunov@gmail.com", | ||||
|       "url": "https://github.com/gaarutyunov" | ||||
|     } | ||||
|   ], | ||||
|   "keywords": [ | ||||
|     "crypto", | ||||
|     "cryptopro", | ||||
|     "crypto-pro", | ||||
|     "crypto-pro-js", | ||||
|     "cades", | ||||
|     "КриптоПро", | ||||
|     "Крипто ПРО" | ||||
|  | ||||
| @ -1,59 +0,0 @@ | ||||
| import 'cadesplugin'; | ||||
| import 'console-mock'; | ||||
| import { rawCertificates, parsedCertificates } from '../__mocks__/certificates'; | ||||
| import { createSignature } from './createSignature'; | ||||
| import { _getCadesCert } from '../helpers/_getCadesCert'; | ||||
| 
 | ||||
| const [rawCertificateMock] = rawCertificates; | ||||
| const [parsedCertificateMock] = parsedCertificates; | ||||
| 
 | ||||
| jest.mock('../helpers/_getCadesCert', () => ({ _getCadesCert: jest.fn(() => rawCertificateMock) })); | ||||
| 
 | ||||
| beforeEach(() => { | ||||
|   (_getCadesCert as jest.Mock).mockClear(); | ||||
| }); | ||||
| 
 | ||||
| const executionSteps = [Symbol('step 0'), Symbol('step 1'), Symbol('step 2'), Symbol('step 3'), Symbol('step 4')]; | ||||
| 
 | ||||
| const executionFlow = { | ||||
|   [executionSteps[0]]: { | ||||
|     propset_Name: jest.fn(), | ||||
|     propset_Value: jest.fn(), | ||||
|   }, | ||||
|   [executionSteps[1]]: { | ||||
|     propset_ContentEncoding: jest.fn(), | ||||
|     propset_Content: jest.fn(), | ||||
|     SignCades: jest.fn(() => executionSteps[4]), | ||||
|   }, | ||||
|   [executionSteps[2]]: { | ||||
|     propset_Certificate: jest.fn(), | ||||
|     AuthenticatedAttributes2: executionSteps[3], | ||||
|     propset_Options: jest.fn(), | ||||
|   }, | ||||
|   [executionSteps[3]]: { | ||||
|     Add: jest.fn(), | ||||
|   }, | ||||
|   [executionSteps[4]]: 'signature', | ||||
| }; | ||||
| 
 | ||||
| window.cadesplugin.__defineExecutionFlow(executionFlow); | ||||
| window.cadesplugin.CreateObjectAsync.mockImplementation((object) => { | ||||
|   switch (object) { | ||||
|     case 'CADESCOM.CPAttribute': | ||||
|       return executionSteps[0]; | ||||
|     case 'CAdESCOM.CadesSignedData': | ||||
|       return executionSteps[1]; | ||||
|     case 'CAdESCOM.CPSigner': | ||||
|       return executionSteps[2]; | ||||
|   } | ||||
| }); | ||||
| 
 | ||||
| describe('createSignature', () => { | ||||
|   test('goes through whole execution flow to create signature', async () => { | ||||
|     const data = btoa('b285056dbf18d7392d7677369524dd14747459ed8143997e163b2986f92fd42c'); | ||||
|     const signature = await createSignature(parsedCertificateMock.thumbprint, data); | ||||
| 
 | ||||
|     expect(_getCadesCert).toHaveBeenCalledTimes(1); | ||||
|     expect(signature).toEqual('signature'); | ||||
|   }); | ||||
| }); | ||||
| @ -1,88 +0,0 @@ | ||||
| import { CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME } from '../constants'; | ||||
| import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded'; | ||||
| import { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage'; | ||||
| import { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn'; | ||||
| import { _getCadesCert } from '../helpers/_getCadesCert'; | ||||
| import { _getDateObj } from '../helpers/_getDateObj'; | ||||
| 
 | ||||
| /** | ||||
|  * Создает подпись base64 строки по отпечатку сертификата | ||||
|  * | ||||
|  * @param thumbprint - отпечаток сертификата | ||||
|  * @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11 | ||||
|  * @param detachedSignature = true - тип подписи открепленная (true) / присоединенная (false) | ||||
|  * @returns подпись | ||||
|  */ | ||||
| export const createSignature = _afterPluginsLoaded( | ||||
|   async (thumbprint: string, messageHash: string, detachedSignature: boolean = true): Promise<string> => { | ||||
|     console.warn( | ||||
|       [ | ||||
|         'cryptoPro: Метод "createSignature" является устаревшим и будет убран из будущих версий.', | ||||
|         'Используйте "createAttachedSignature" и "createDetachedSignature".', | ||||
|       ].join('\n'), | ||||
|     ); | ||||
| 
 | ||||
|     const { cadesplugin } = window; | ||||
|     const cadesCertificate = await _getCadesCert(thumbprint); | ||||
| 
 | ||||
|     return eval( | ||||
|       _generateCadesFn(function createSignature(): string { | ||||
|         let cadesAttrs; | ||||
|         let cadesSignedData; | ||||
|         let cadesSigner; | ||||
| 
 | ||||
|         try { | ||||
|           cadesAttrs = __cadesAsyncToken__ + __createCadesPluginObject__('CADESCOM.CPAttribute'); | ||||
|           cadesSignedData = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CadesSignedData'); | ||||
|           cadesSigner = __cadesAsyncToken__ + __createCadesPluginObject__('CAdESCOM.CPSigner'); | ||||
|         } catch (error) { | ||||
|           console.error(error); | ||||
| 
 | ||||
|           throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при инициализации подписи'); | ||||
|         } | ||||
| 
 | ||||
|         const currentTime = _getDateObj(new Date()); | ||||
| 
 | ||||
|         try { | ||||
|           void (__cadesAsyncToken__ + cadesAttrs.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME)); | ||||
|           void (__cadesAsyncToken__ + cadesAttrs.propset_Value(currentTime)); | ||||
|         } catch (error) { | ||||
|           console.error(error); | ||||
| 
 | ||||
|           throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при установке времени подписи'); | ||||
|         } | ||||
| 
 | ||||
|         let cadesAuthAttrs; | ||||
| 
 | ||||
|         try { | ||||
|           void (__cadesAsyncToken__ + cadesSigner.propset_Certificate(cadesCertificate)); | ||||
|           cadesAuthAttrs = __cadesAsyncToken__ + cadesSigner.AuthenticatedAttributes2; | ||||
|           void (__cadesAsyncToken__ + cadesAuthAttrs.Add(cadesAttrs)); | ||||
|           void (__cadesAsyncToken__ + cadesSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY)); | ||||
|           void (__cadesAsyncToken__ + cadesSignedData.propset_Content(messageHash)); | ||||
|           void ( | ||||
|             __cadesAsyncToken__ + cadesSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY) | ||||
|           ); | ||||
|         } catch (error) { | ||||
|           console.error(error); | ||||
| 
 | ||||
|           throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при указании данных для подписи'); | ||||
|         } | ||||
| 
 | ||||
|         let signature: string; | ||||
| 
 | ||||
|         try { | ||||
|           signature = | ||||
|             __cadesAsyncToken__ + | ||||
|             cadesSignedData.SignCades(cadesSigner, cadesplugin.CADESCOM_CADES_BES, detachedSignature); | ||||
|         } catch (error) { | ||||
|           console.error(error); | ||||
| 
 | ||||
|           throw new Error(_extractMeaningfulErrorMessage(error) || 'Ошибка при подписании данных'); | ||||
|         } | ||||
| 
 | ||||
|         return signature; | ||||
|       }), | ||||
|     ); | ||||
|   }, | ||||
| ); | ||||
| @ -3,7 +3,6 @@ export * from './getUserCertificates'; | ||||
| export * from './getAllUserCertificates'; | ||||
| export * from './getSystemInfo'; | ||||
| export * from './isValidSystemSetup'; | ||||
| export * from './createSignature'; | ||||
| export * from './createXMLSignature'; | ||||
| export * from './createDetachedSignature'; | ||||
| export * from './addDetachedSignature'; | ||||
|  | ||||
| @ -14,7 +14,7 @@ | ||||
|     ] | ||||
|   }, | ||||
|   "include": [ | ||||
|     "./src/crypto-pro-custom.ts" | ||||
|     "./src/crypto-pro-js.ts" | ||||
|   ], | ||||
|   "exclude": [ | ||||
|     "node_modules" | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Artem Vasilev
						Artem Vasilev