mirror of
https://github.com/crypto-pro-web/crypto-pro-js.git
synced 2025-04-21 04:53:08 +03:00
Compare commits
137 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d8622ff6df | ||
![]() |
d4b7a9cb29 | ||
![]() |
f0ae6b76f0 | ||
![]() |
1f59f7e97e | ||
![]() |
e69224b8b9 | ||
![]() |
3f84487ee8 | ||
![]() |
c09fac36c3 | ||
![]() |
35d99909a8 | ||
![]() |
319068ffdd | ||
![]() |
aab6c56ca9 | ||
![]() |
db9b5e0a6b | ||
![]() |
51ed50491a | ||
![]() |
652cc4d23e | ||
![]() |
484c1148ea | ||
![]() |
5ebb1a0200 | ||
![]() |
b5e77486ab | ||
![]() |
7e43d21286 | ||
![]() |
9d60469625 | ||
73dd1c82e1 | |||
![]() |
15a1b84e94 | ||
f21a69bee5 | |||
9f38d4694a | |||
d18436d1d5 | |||
0a315c5a19 | |||
34b4e23404 | |||
a99231bc9a | |||
c9d3f4931d | |||
52f4ba1647 | |||
![]() |
5cf3738e6b | ||
9cda106243 | |||
ca1411d670 | |||
31669dd18f | |||
bbd5434cec | |||
6656c5d09c | |||
![]() |
d8f2ba6c23 | ||
91934ecc9e | |||
edca31abae | |||
![]() |
dcae2f3987 | ||
5a40870cec | |||
![]() |
0938089f8d | ||
![]() |
741fd5cf7c | ||
![]() |
9a8295dc14 | ||
![]() |
47c9083a72 | ||
![]() |
12b62540de | ||
![]() |
4345d56ee1 | ||
![]() |
541648c258 | ||
![]() |
0ee6b79ceb | ||
![]() |
38130ecf82 | ||
![]() |
b4372dcb47 | ||
![]() |
fd657ed409 | ||
![]() |
ca0781bc85 | ||
![]() |
1c5bd5c3e8 | ||
![]() |
a905e541a8 | ||
![]() |
8ad740c7ad | ||
![]() |
119501f967 | ||
![]() |
7256536037 | ||
06e68c92ec | |||
![]() |
f9c521462f | ||
da4763661c | |||
8549f412a7 | |||
![]() |
1d21551fe5 | ||
![]() |
e27a801fdc | ||
![]() |
bccc0c9146 | ||
![]() |
a7a3ea86ec | ||
![]() |
ebe130c9b0 | ||
![]() |
a0d60b0de8 | ||
![]() |
4f29faf3c3 | ||
![]() |
bf3be501a1 | ||
![]() |
fdb8c7c136 | ||
![]() |
67ed9f61ab | ||
![]() |
5225ee99c8 | ||
![]() |
19a9bab9f7 | ||
![]() |
17e248e495 | ||
![]() |
4096e085a1 | ||
![]() |
419afe47e3 | ||
![]() |
a81294a60a | ||
af73897b00 | |||
60a134d8b6 | |||
c0b100ab7f | |||
b0e09742ce | |||
8754d5924e | |||
e70f108675 | |||
70a563ed53 | |||
![]() |
c0566b7654 | ||
![]() |
9958c9884a | ||
![]() |
a82f7b1ebc | ||
![]() |
a5211ba248 | ||
![]() |
f4ece3c0c9 | ||
![]() |
759494898d | ||
![]() |
00e128423d | ||
![]() |
26bf41091e | ||
![]() |
29c27119de | ||
![]() |
4739fe3b9f | ||
![]() |
56e5e2ff17 | ||
![]() |
bdcb3d7542 | ||
![]() |
cfd244df02 | ||
![]() |
e4d93c64dd | ||
![]() |
b090fa4e6c | ||
![]() |
864c05f81c | ||
![]() |
3d71049078 | ||
![]() |
d9797b31a5 | ||
![]() |
b2ca997be6 | ||
![]() |
242794d3bf | ||
![]() |
b400e8c670 | ||
![]() |
019e825895 | ||
![]() |
7eaab650a0 | ||
![]() |
59752af1a8 | ||
![]() |
43501d5639 | ||
![]() |
a5552b5065 | ||
![]() |
733449d20c | ||
![]() |
ebeb4761e6 | ||
![]() |
f4f2e02a53 | ||
![]() |
41069656bb | ||
![]() |
e456be7eda | ||
![]() |
1f452c4ca0 | ||
![]() |
889213670e | ||
![]() |
b70ebd3706 | ||
![]() |
e77bbb46f7 | ||
![]() |
984b9cdf2e | ||
![]() |
9236bc1b3d | ||
![]() |
b0c5d2911b | ||
![]() |
b968d4ec82 | ||
![]() |
ac98504840 | ||
![]() |
adc25fd95e | ||
![]() |
5c3ffffaa2 | ||
![]() |
365fa08369 | ||
![]() |
746d464cb1 | ||
![]() |
2613fb6199 | ||
![]() |
da8723b31b | ||
![]() |
1412bb0be5 | ||
![]() |
66e4e31028 | ||
![]() |
6d96ca5182 | ||
![]() |
a3df6e77a8 | ||
![]() |
39070001a9 | ||
![]() |
2a54ed063c | ||
![]() |
5ad18c54e6 | ||
![]() |
a4c2d294c9 |
10
.editorconfig
Normal file
10
.editorconfig
Normal file
@ -0,0 +1,10 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
|
||||
[*.{js, ts}]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
51
.eslintrc.js
Normal file
51
.eslintrc.js
Normal file
@ -0,0 +1,51 @@
|
||||
module.exports = {
|
||||
env: {
|
||||
browser: true,
|
||||
es6: true
|
||||
},
|
||||
parser: '@typescript-eslint/parser',
|
||||
extends: [
|
||||
'plugin:@typescript-eslint/recommended',
|
||||
'prettier/@typescript-eslint',
|
||||
'plugin:prettier/recommended'
|
||||
],
|
||||
globals: {
|
||||
Atomics: 'readonly',
|
||||
SharedArrayBuffer: 'readonly'
|
||||
},
|
||||
parserOptions: {
|
||||
ecmaVersion: 2018,
|
||||
sourceType: 'module'
|
||||
},
|
||||
plugins: [
|
||||
'@typescript-eslint'
|
||||
],
|
||||
rules: {
|
||||
'@typescript-eslint/no-inferrable-types': 'off',
|
||||
'@typescript-eslint/no-explicit-any': 'off',
|
||||
'@typescript-eslint/ban-ts-ignore': 'off',
|
||||
'@typescript-eslint/camelcase': 'off',
|
||||
'@typescript-eslint/no-unused-vars': 'off'
|
||||
},
|
||||
overrides: [
|
||||
{
|
||||
files: ['*.test.ts'],
|
||||
rules: {
|
||||
'@typescript-eslint/explicit-function-return-type': 'off'
|
||||
}
|
||||
},
|
||||
{
|
||||
files: ['./types/**/*'],
|
||||
rules: {
|
||||
'no-var': 'off'
|
||||
}
|
||||
}
|
||||
],
|
||||
ignorePatterns: [
|
||||
'*.js',
|
||||
'lib/**/*',
|
||||
'dist/**/*',
|
||||
'coverage/**/*',
|
||||
'examples/**/*'
|
||||
]
|
||||
};
|
46
.github/workflows/test.yml
vendored
Executable file
46
.github/workflows/test.yml
vendored
Executable file
@ -0,0 +1,46 @@
|
||||
name: CryptoPRO tests
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
|
||||
jobs:
|
||||
buildAndTest:
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [ 16 ]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
check-latest: true
|
||||
|
||||
- name: Clean install, build, test
|
||||
run: |
|
||||
npm ci
|
||||
npm run build --if-present --openssl-legacy-provider
|
||||
npm test
|
||||
|
||||
lint:
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use Node.js 16
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16
|
||||
check-latest: true
|
||||
|
||||
- name: Clean install, lint
|
||||
run: |
|
||||
npm ci
|
||||
npm run lint
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,2 +1,4 @@
|
||||
.idea
|
||||
node_modules/
|
||||
package/
|
||||
coverage/
|
||||
|
8
.prettierrc.js
Normal file
8
.prettierrc.js
Normal file
@ -0,0 +1,8 @@
|
||||
module.exports = {
|
||||
semi: true,
|
||||
trailingComma: 'all',
|
||||
singleQuote: true,
|
||||
printWidth: 120,
|
||||
tabWidth: 2,
|
||||
arrowParens: 'always',
|
||||
};
|
65
CHANGELOG.md
65
CHANGELOG.md
@ -1,65 +0,0 @@
|
||||
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'ом
|
22
LICENSE
Normal file
22
LICENSE
Normal file
@ -0,0 +1,22 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 Vitalii Goma
|
||||
Copyright (c) 2021 Artem Vasilev
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
384
README.md
Executable file → Normal file
384
README.md
Executable file → Normal file
@ -1,186 +1,216 @@
|
||||
# CryptoPro
|
||||
Единое, асинхронное API для взаимодействия с КриптоПРО ЭЦП Browser Plug-In (IE8+)
|
||||
[![License][license-image]][license-url]
|
||||
[![NPM version][npm-version-image]][npm-url]
|
||||
[![NPM downloads][npm-downloads-image]][downloads-url]
|
||||
[![Build Status][actions-image]][actions-url]
|
||||
|
||||
## Поддерживаемые браузеры
|
||||
- [Google Chrome](https://www.google.ru/chrome/browser/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)
|
||||
- [Opera](https://www.google.ru/chrome/browser/desktop/) (v40+) с расширением [CryptoPro Extension for CAdES Browser Plug-in](https://addons.opera.com/en/extensions/details/cryptopro-extension-for-cades-browser-plug-in/)
|
||||
- [Mozilla Firefox](https://www.mozilla.org/ru/firefox/new/) (v43+). Начиная с версии 52, с [расширением](https://www.cryptopro.ru/sites/default/files/products/cades/extensions/cryptopro_extension_for_cades_browser_plug_in-1.1.1-an+fx-windows.xpi).
|
||||
- [Internet Explorer](http://windows.microsoft.com/ru-ru/internet-explorer/download-ie) (v8+).
|
||||
|
||||
Список необходимых полифиллов (подключаются самостоятельно):
|
||||
<a name="cryptopro"></a>
|
||||
# cryptoPro
|
||||
Асинхронный JavaScript API для работы с КриптоПРО ЭЦП Browser Plug-In
|
||||
|
||||
> **Это форк проекта [vgoma/crypto-pro](https://github.com/vgoma/crypto-pro)**
|
||||
>
|
||||
> **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/) |
|
||||
|
||||
## Ошибка `Параметр задан неверно. (0x80070057)`
|
||||
Если при попытке подписать сообщение с использованием PKCS#7 подписи падает такая ошибка, то читайте [этот issue](https://github.com/webmasterskaya/crypto-pro-js/issues/20)
|
||||
|
||||
- [cryptoPro](#cryptopro)
|
||||
- [Зачем мне этот пакет?](#why)
|
||||
- [Установка](#install)
|
||||
- [API](#api)
|
||||
- [Методы объекта cryptoPro](#api-cryptopro)
|
||||
- [Методы объекта сертификата](#api-certificate)
|
||||
- [Поддерживаемые СКЗИ](#supported-cist)
|
||||
- [Примеры](#examples)
|
||||
- [Тэг script (UMD)](#example-script-tag)
|
||||
- [Тем, кто хочет помочь](#developers)
|
||||
- [Запуск режима разработки](#dev-mode)
|
||||
- [Запуск тестов](#tests-execution)
|
||||
- [Проверка пакета перед публикацией в NPM](#final-check)
|
||||
- [Лицензия](#lisense)
|
||||
|
||||
<a name="why"></a>
|
||||
## Зачем мне этот пакет?
|
||||
КриптоПРО ЭЦП Browser Plug-In доступен в разных браузерах в двух версиях.
|
||||
Асинхронной (в современных браузерах) и синхронной (в браузерах постарше).
|
||||
С помощью этого пакета можно не писать реализацию под каждую версию плагина дважды.
|
||||
|
||||
<a name="install"></a>
|
||||
## Установка
|
||||
Для NPM:
|
||||
```bash
|
||||
npm install crypto-pro-js
|
||||
```
|
||||
|
||||
Для Yarn:
|
||||
```bash
|
||||
yarn add crypto-pro-js
|
||||
```
|
||||
|
||||
Для Bower:
|
||||
```bash
|
||||
bower install webmasterskaya/crypto-pro-js
|
||||
```
|
||||
|
||||
Подключение пакета как UMD модуля через тэг script:
|
||||
```html
|
||||
<script src="crypto-pro-js/dist/crypto-pro.min.js"></script>
|
||||
<script>
|
||||
window.cryptoPro.getUserCertificates()
|
||||
.then(function (certificates) {
|
||||
//...
|
||||
})
|
||||
.catch(function (error) {
|
||||
//...
|
||||
});
|
||||
</script>
|
||||
```
|
||||
|
||||
Подключение пакета как ES модуля с Typescript или JavaScript:
|
||||
```typescript
|
||||
import { getUserCertificates, Certificate } from 'crypto-pro-js';
|
||||
|
||||
(async () => {
|
||||
let certificates: Certificate[];
|
||||
|
||||
try {
|
||||
certificates = await getUserCertificates();
|
||||
} catch(error) {
|
||||
// ...
|
||||
}
|
||||
})();
|
||||
```
|
||||
|
||||
Список требуемых полифиллов (если необходимы, подключаются самостоятельно):
|
||||
- Promise
|
||||
- EventTarget.addEventListener
|
||||
- Array.prototype.forEach
|
||||
- Array.prototype.map
|
||||
|
||||
## Установка и настройка
|
||||
### NPM
|
||||
```bash
|
||||
npm install crypto-pro
|
||||
```
|
||||
|
||||
### Bower
|
||||
```bash
|
||||
bower install crypto-pro
|
||||
```
|
||||
|
||||
Для корректной работы используйте:
|
||||
1. [КриптоПРО CSP](https://www.cryptopro.ru/products/csp/downloads) (v3.6+) *рекомендуется использование только сертифицированных версий*. Инструкция по установке:
|
||||
- [Linux / OSX](#install_csp_linux)
|
||||
- (в Windows следуйте указаниям программы-установщика)
|
||||
1. [КриптоПРО ЭЦП browser plug-in](https://www.cryptopro.ru/products/cades/plugin) (v1.5+). Инструкция по установке:
|
||||
- [Linux](#install_plugin_linux)
|
||||
- (в Windows и OSX следуйте указаниям программы-установщика)
|
||||
|
||||
Затем установите необходимые сертификаты в систему. [Инструкция](#install_cert_linux) для Linux / OSX.
|
||||
|
||||
### <a name="install_csp_linux"></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="install_plugin_linux"></a> Установка КриптоПРО ЭЦП browser plug-in в 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
|
||||
```
|
||||
|
||||
#### Настройка плагина для 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="install_cert_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
|
||||
```
|
||||
- Array.prototype.find
|
||||
|
||||
<a name="api"></a>
|
||||
## API
|
||||
Пример работы с API лежит в папке `example`.
|
||||
|
||||
``` js
|
||||
window.CryptoPro.call('getCertsList').then(function (certList) {
|
||||
console.log(certList);
|
||||
});
|
||||
<a name="api-cryptopro"></a>
|
||||
### Методы объекта cryptoPro
|
||||
- [getUserCertificates](src/api/getUserCertificates.ts) - возвращает список [сертификатов](#api-certificate), доступных пользователю в системе
|
||||
- [getAllUserCertificates](src/api/getAllUserCertificates.ts) - возвращает список [сертификатов](#api-certificate), доступных пользователю в системе, в том числе просроченные и без закрытого ключа
|
||||
- [getContainerCertificates](src/api/getContainerCertificates.ts) - возвращает список [сертификатов](#api-certificate), из закрытых ключей и/или сертификаты не установленные всистеме*
|
||||
- [getAllContainerCertificates](src/api/getAllContainerCertificates.ts) - возвращает список [сертификатов](#api-certificate), из закрытых ключей и/или сертификаты не установленные всистеме*, в том числе просроченные и без закрытого ключа
|
||||
- [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 бит
|
||||
- [getSystemInfo](src/api/getSystemInfo.ts) - возвращает информацию о CSP и плагине
|
||||
- [isValidSystemSetup](src/api/isValidSystemSetup.ts) - возвращает флаг корректности настроек ЭП на машине
|
||||
|
||||
> *Методы `getContainerCertificates` и `getAllContainerCertificates` позволяют получить сертификаты из закрытых ключей, записанных на обыкновенную флэшку
|
||||
|
||||
<a name="api-certificate"></a>
|
||||
### Методы объекта сертификата
|
||||
[Сертификат](src/api/certificate/certificate.ts) предоставляет следущее API:
|
||||
- [isValid](src/api/certificate/isValid.ts) - возвращает флаг действительности сертификата
|
||||
- [getCadesProp](src/api/certificate/getCadesProp.ts) - возвращает указанное внутренее свойство у сертификата в формате Cades
|
||||
- [exportBase64](src/api/certificate/exportBase64.ts) - возвращает сертификат в формате base64
|
||||
- [getAlgorithm](src/api/certificate/getAlgorithm.ts) - возвращает информацию об алгоритме сертификата
|
||||
- [getOwnerInfo](src/api/certificate/getInfo.ts) - возвращает расшифрованную информацию о владельце сертификата
|
||||
- [getIssuerInfo](src/api/certificate/getInfo.ts) - возвращает расшифрованную информацию об издателе сертификата
|
||||
- [getExtendedKeyUsage](src/api/certificate/getExtendedKeyUsage.ts) - возвращает ОИД'ы сертификата
|
||||
- [getDecodedExtendedKeyUsage](src/api/certificate/getDecodedExtendedKeyUsage.ts) - возвращает расшифрованные ОИД'ы
|
||||
- [hasExtendedKeyUsage](src/api/certificate/hasExtendedKeyUsage.ts) - проверяет наличие ОИД'а (ОИД'ов) у сертификата
|
||||
|
||||
<a name="supported-cist"></a>
|
||||
## Поддерживаемые СКЗИ
|
||||
[КриптоПРО CSP](https://www.cryptopro.ru/products/csp/downloads) (v4.0+)
|
||||
|
||||
<a name="examples"></a>
|
||||
## Примеры
|
||||
Для их запуска необходим NodeJS LTS.
|
||||
|
||||
<a name="example-script-tag"></a>
|
||||
### Тэг script (UMD)
|
||||
```bash
|
||||
cd examples/script-tag
|
||||
npm i
|
||||
npm start
|
||||
```
|
||||
|
||||
### Доступные методы
|
||||
Список доступных методов можно посмотреть в файле `src/api.js`.
|
||||
<a name="developers"></a>
|
||||
# Тем, кто хочет помочь
|
||||
Буду благодарен за расширение/улучшение/доработку API.
|
||||
Вам будут полезны [примеры](http://cpdn.cryptopro.ru/?url=/content/cades/plugin-samples-sign.html),
|
||||
предоставляемые Крипто ПРО.
|
||||
|
||||
### License
|
||||
Licensed as MIT. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details.
|
||||
<a name="dev-mode"></a>
|
||||
## Запуск режима разработки
|
||||
Устанавливаем зависимости:
|
||||
```bash
|
||||
npm i
|
||||
```
|
||||
|
||||
Во время работы с кодом необходим запущенный сборщик:
|
||||
```bash
|
||||
npm start
|
||||
```
|
||||
|
||||
И пример, на котором можно тестировать изменения.
|
||||
Удобнее всего тестировать на примере с тэгом script, тк он отвязан от фреймворков
|
||||
и использует сборку в формате UMD из папки `dist/`, постоянно обновляемую пока работает
|
||||
сборщик. Запускаем его таким образом:
|
||||
```bash
|
||||
cd examples/script-tag
|
||||
npm i
|
||||
npm link ../../
|
||||
npm start
|
||||
```
|
||||
> После выполнения `npm link ../../` в директории `examples/script-tag/node_modules` папка `crypto-pro-js` станет ярлыком,
|
||||
> указывающим на папку содержащую локально собранный пакет.
|
||||
|
||||
<a name="tests-execution"></a>
|
||||
## Запуск тестов
|
||||
Тесты написаны с использованием [Jest](https://jestjs.io/docs/en/configuration#testpathignorepatterns-arraystring):
|
||||
```bash
|
||||
npm test
|
||||
```
|
||||
|
||||
<a name="final-check"></a>
|
||||
## Проверка пакета перед публикацией в NPM
|
||||
Необходимо протестировать работу в заявленных браузерах, сделав это на локально запакованной версии пакета.
|
||||
Для этого собираем пакет:
|
||||
```bash
|
||||
npm run package
|
||||
mv package ..
|
||||
```
|
||||
> Важно переместить папку `package` куда-нибудь выше для избежания конфликтов при линковке с текущим `package.json`.
|
||||
|
||||
Переходим в любую директорию с примером и создаем там ссылку на только что собранный пакет:
|
||||
```bash
|
||||
cd examples/script-tag
|
||||
npm link ../../../package
|
||||
```
|
||||
|
||||
Проверяем работу примеров в режимах разработки и продакшн.
|
||||
|
||||
После завершения экспериментов можно удалить глобальную ссылку из директории `../../../package` таким образом:
|
||||
```bash
|
||||
cd ../../../package
|
||||
npm unlink
|
||||
```
|
||||
|
||||
<a name="lisense"></a>
|
||||
# Лицензия
|
||||
[MIT](/LICENSE)
|
||||
|
||||
[license-url]: /LICENSE
|
||||
[license-image]: https://img.shields.io/github/license/webmasterskaya/crypto-pro-js
|
||||
[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]: https://img.shields.io/npm/dm/crypto-pro-js.svg?style=flat
|
||||
[downloads-url]: https://npmcharts.com/compare/crypto-pro-js?minimal=true
|
||||
[actions-url]: https://github.com/webmasterskaya/crypto-pro-js/actions
|
||||
[actions-image]: https://img.shields.io/github/workflow/status/webmasterskaya/crypto-pro-js/test?event=push
|
||||
|
24
bower.json
24
bower.json
@ -1,24 +1,32 @@
|
||||
{
|
||||
"name": "crypto-pro",
|
||||
"description": "API для взаимодействия с КриптоПро",
|
||||
"main": "dist/crypto-pro.js",
|
||||
"name": "crypto-pro-js",
|
||||
"description": "Асинхронный JavaScript API для работы с КриптоПРО ЭЦП Browser Plug-In. Forked from https://github.com/vgoma/crypto-pro",
|
||||
"main": "./lib/crypto-pro-js.js",
|
||||
"authors": [
|
||||
"kern.usr <kern.usr@gmail.com>",
|
||||
"vgoma <vgoma@yandex.ru>"
|
||||
],
|
||||
"license": "ISC",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"crypto",
|
||||
"cryptopro",
|
||||
"crypto-pro",
|
||||
"crypto-pro-js",
|
||||
"cades",
|
||||
"КриптоПро"
|
||||
"КриптоПро",
|
||||
"Крипто ПРО"
|
||||
],
|
||||
"homepage": "https://github.com/vgoma/crypto-pro",
|
||||
"homepage": "https://github.com/webmasterskaya/crypto-pro-js",
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"/*.js",
|
||||
"/*.gif",
|
||||
"/tsconfig*",
|
||||
"node_modules",
|
||||
"bower_components",
|
||||
"test",
|
||||
"tests"
|
||||
"examples",
|
||||
"src",
|
||||
"types",
|
||||
"package"
|
||||
]
|
||||
}
|
||||
|
18
definition-header.js
Normal file
18
definition-header.js
Normal file
@ -0,0 +1,18 @@
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const tsConfig = require(`./${process.env.TS_CONFIG}`);
|
||||
const packageJson = require('./package.json');
|
||||
const typingsPath = path.resolve(__dirname, tsConfig.compilerOptions.outDir, `${packageJson.name}.d.ts`);
|
||||
const typings = fs.readFileSync(typingsPath, 'utf8');
|
||||
|
||||
let header = [
|
||||
`// Type definitions for ${packageJson.name} ${packageJson.version}`,
|
||||
`// Project: ${packageJson.name}`,
|
||||
`// Definitions by: ${packageJson.author.name} ${packageJson.author.url}`
|
||||
].join('\n');
|
||||
|
||||
if (tsConfig.compilerOptions.target === 'es5') {
|
||||
header += '\n\nexport as namespace cryptoPro;';
|
||||
}
|
||||
|
||||
fs.writeFileSync(typingsPath, `${header}\n\n${typings}`);
|
1071
dist/1.crypto-pro.js
vendored
1071
dist/1.crypto-pro.js
vendored
File diff suppressed because it is too large
Load Diff
1
dist/1.crypto-pro.js.map
vendored
1
dist/1.crypto-pro.js.map
vendored
File diff suppressed because one or more lines are too long
1047
dist/2.crypto-pro.js
vendored
1047
dist/2.crypto-pro.js
vendored
File diff suppressed because it is too large
Load Diff
1
dist/2.crypto-pro.js.map
vendored
1
dist/2.crypto-pro.js.map
vendored
File diff suppressed because one or more lines are too long
8
dist/api/addAttachedSignature.d.ts
vendored
Normal file
8
dist/api/addAttachedSignature.d.ts
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
/**
|
||||
* Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата
|
||||
*
|
||||
* @param thumbprint - отпечаток сертификата
|
||||
* @param signedMessage - подписанное сообщение
|
||||
* @returns подпись в формате PKCS#7
|
||||
*/
|
||||
export declare const addAttachedSignature: (thumbprint: string, signedMessage: string | ArrayBuffer) => Promise<string>;
|
9
dist/api/addDetachedSignature.d.ts
vendored
Normal file
9
dist/api/addDetachedSignature.d.ts
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
/**
|
||||
* Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата
|
||||
*
|
||||
* @param thumbprint - отпечаток сертификата
|
||||
* @param signedMessage - подписанное сообщение
|
||||
* @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит
|
||||
* @returns подпись в формате PKCS#7
|
||||
*/
|
||||
export declare const addDetachedSignature: (thumbprint: string, signedMessage: string | ArrayBuffer, messageHash: string) => Promise<string>;
|
22
dist/api/certificate/certificate.d.ts
vendored
Normal file
22
dist/api/certificate/certificate.d.ts
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
import { TagTranslation } from '../../helpers/_parseCertInfo';
|
||||
import { ExtendedKeysTranslations } from './getDecodedExtendedKeyUsage';
|
||||
export declare type CadesCertificate = any;
|
||||
export declare class Certificate {
|
||||
_cadesCertificate: CadesCertificate;
|
||||
name: string;
|
||||
issuerName: string;
|
||||
subjectName: string;
|
||||
thumbprint: string;
|
||||
validFrom: string;
|
||||
validTo: string;
|
||||
constructor(_cadesCertificate: CadesCertificate, name: string, issuerName: string, subjectName: string, thumbprint: string, validFrom: string, validTo: string);
|
||||
getOwnerInfo(): Promise<TagTranslation[]>;
|
||||
getIssuerInfo(): Promise<TagTranslation[]>;
|
||||
getExtendedKeyUsage(): Promise<string[]>;
|
||||
getDecodedExtendedKeyUsage(): Promise<ExtendedKeysTranslations>;
|
||||
getAlgorithm(): Promise<string>;
|
||||
getCadesProp(propName: any): Promise<any>;
|
||||
isValid(): Promise<boolean>;
|
||||
exportBase64(): Promise<string>;
|
||||
hasExtendedKeyUsage(oids: any): Promise<boolean>;
|
||||
}
|
6
dist/api/certificate/exportBase64.d.ts
vendored
Normal file
6
dist/api/certificate/exportBase64.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Экспортирует сертификат в формате base64
|
||||
*
|
||||
* @returns сертификат в формате base64
|
||||
*/
|
||||
export declare const exportBase64: () => Promise<string>;
|
11
dist/api/certificate/getAlgorithm.d.ts
vendored
Normal file
11
dist/api/certificate/getAlgorithm.d.ts
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
interface AlgorithmInfo {
|
||||
algorithm: string;
|
||||
oid: string;
|
||||
}
|
||||
/**
|
||||
* Возвращает информацию об алгоритме сертификата
|
||||
*
|
||||
* @returns информацию об алгоритме и его OID'е
|
||||
*/
|
||||
export declare const getAlgorithm: () => Promise<AlgorithmInfo>;
|
||||
export {};
|
7
dist/api/certificate/getCadesProp.d.ts
vendored
Normal file
7
dist/api/certificate/getCadesProp.d.ts
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Возвращает указанное внутренее свойство у сертификата в формате Cades
|
||||
*
|
||||
* @param propName = наименование свойства
|
||||
* @returns значение запрошенного свойства
|
||||
*/
|
||||
export declare const getCadesProp: (propName: string) => Promise<any>;
|
9
dist/api/certificate/getDecodedExtendedKeyUsage.d.ts
vendored
Normal file
9
dist/api/certificate/getDecodedExtendedKeyUsage.d.ts
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
export interface ExtendedKeysTranslations {
|
||||
[key: string]: string | null;
|
||||
}
|
||||
/**
|
||||
* Возвращает расшифрованные ОИД'ы сертификата
|
||||
*
|
||||
* @returns словарь расшифрованных ОИД'ов
|
||||
*/
|
||||
export declare const getDecodedExtendedKeyUsage: () => Promise<ExtendedKeysTranslations>;
|
6
dist/api/certificate/getExtendedKeyUsage.d.ts
vendored
Normal file
6
dist/api/certificate/getExtendedKeyUsage.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Возвращает ОИД'ы сертификата
|
||||
*
|
||||
* @returns список ОИД'ов
|
||||
*/
|
||||
export declare const getExtendedKeyUsage: () => Promise<string[]>;
|
10
dist/api/certificate/getInfo.d.ts
vendored
Normal file
10
dist/api/certificate/getInfo.d.ts
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
import { TagsTranslations } from '../../constants/tags-translations';
|
||||
import { TagTranslation } from '../../helpers/_parseCertInfo';
|
||||
/**
|
||||
* Возвращает расшифрованную информацию о сертификате из указанного свойства по тэгам
|
||||
*
|
||||
* @param tags = словарь
|
||||
* @param entitiesPath = путь к разбираемой сущности
|
||||
* @returns расшифрованная информация по отдельным тэгам
|
||||
*/
|
||||
export declare const getInfo: (tags: TagsTranslations[], entitiesPath: string) => Promise<TagTranslation[]>;
|
7
dist/api/certificate/hasExtendedKeyUsage.d.ts
vendored
Normal file
7
dist/api/certificate/hasExtendedKeyUsage.d.ts
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Проверяет наличие ОИД'а (ОИД'ов) у сертификата
|
||||
*
|
||||
* @param oids - ОИД'ы для проверки
|
||||
* @returns флаг наличия ОИД'ов у сертификата
|
||||
*/
|
||||
export declare const hasExtendedKeyUsage: (oids: string | string[]) => Promise<boolean>;
|
1
dist/api/certificate/index.d.ts
vendored
Normal file
1
dist/api/certificate/index.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export * from './certificate';
|
6
dist/api/certificate/isValid.d.ts
vendored
Normal file
6
dist/api/certificate/isValid.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Проверяет действительность сертификата
|
||||
*
|
||||
* @returns флаг валидности
|
||||
*/
|
||||
export declare const isValid: () => Promise<boolean>;
|
8
dist/api/createAttachedSignature.d.ts
vendored
Normal file
8
dist/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
dist/api/createDetachedSignature.d.ts
vendored
Normal file
8
dist/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>;
|
9
dist/api/createHash.d.ts
vendored
Normal file
9
dist/api/createHash.d.ts
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
/**
|
||||
* Создает хеш сообщения по ГОСТ Р 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 хеш
|
||||
*/
|
||||
export declare const createHash: (unencryptedMessage: string | ArrayBuffer) => Promise<string>;
|
8
dist/api/createXMLSignature.d.ts
vendored
Normal file
8
dist/api/createXMLSignature.d.ts
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
/**
|
||||
* Создает XML подпись для документа в формате XML
|
||||
*
|
||||
* @param thumbprint - отпечаток сертификата
|
||||
* @param unencryptedMessage - подписываемое сообщение в формате XML
|
||||
* @returns подпись
|
||||
*/
|
||||
export declare const createXMLSignature: (thumbprint: string, unencryptedMessage: string) => Promise<string>;
|
8
dist/api/getAllCertificates.d.ts
vendored
Normal file
8
dist/api/getAllCertificates.d.ts
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
import { Certificate } from './certificate';
|
||||
/**
|
||||
* Возвращает список сертификатов, доступных пользователю из пользовательского хранилища и закрытых ключей, не установленных в системе, без фильтрации по дате и наличию приватного ключа
|
||||
*
|
||||
* @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов
|
||||
* @returns список сертификатов
|
||||
*/
|
||||
export declare const getAllCertificates: (resetCache?: boolean) => Promise<Certificate[]>;
|
9
dist/api/getAllContainerCertificates.d.ts
vendored
Normal file
9
dist/api/getAllContainerCertificates.d.ts
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
import { Certificate } from './certificate';
|
||||
/**
|
||||
* Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей
|
||||
* Возвращает все сертификаты без фильтрации по дате и наличию приватного ключа
|
||||
*
|
||||
* @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов
|
||||
* @returns список сертификатов
|
||||
*/
|
||||
export declare const getAllContainerCertificates: (resetCache?: boolean) => Promise<Certificate[]>;
|
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[]>;
|
9
dist/api/getCertificate.d.ts
vendored
Normal file
9
dist/api/getCertificate.d.ts
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
import { Certificate } from './certificate';
|
||||
/**
|
||||
* Возвращает сертификат по отпечатку
|
||||
*
|
||||
* @param thumbprint - отпечаток сертификата
|
||||
* @param validOnly - проверять сертификаты по дате и наличию приватного ключа
|
||||
* @returns сертификат
|
||||
*/
|
||||
export declare const getCertificate: (thumbprint: string, validOnly?: boolean) => Promise<Certificate>;
|
8
dist/api/getCertificates.d.ts
vendored
Normal file
8
dist/api/getCertificates.d.ts
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
import { Certificate } from './certificate';
|
||||
/**
|
||||
* Возвращает список сертификатов, доступных пользователю из пользовательского хранилища и закрытых ключей, не установленных в системе
|
||||
*
|
||||
* @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов
|
||||
* @returns список сертификатов
|
||||
*/
|
||||
export declare const getCertificates: (resetCache?: boolean) => Promise<Certificate[]>;
|
9
dist/api/getContainerCertificates.d.ts
vendored
Normal file
9
dist/api/getContainerCertificates.d.ts
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
import { Certificate } from './certificate';
|
||||
/**
|
||||
* Начиная с версии плагина 2.0.13292 есть возможность получить сертификаты из закрытых ключей
|
||||
* Возвращает список сертификатов, доступных пользователю в системе
|
||||
*
|
||||
* @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов
|
||||
* @returns список сертификатов
|
||||
*/
|
||||
export declare const getContainerCertificates: (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>;
|
10
dist/api/getSystemInfo.d.ts
vendored
Normal file
10
dist/api/getSystemInfo.d.ts
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
export interface SystemInfo {
|
||||
cadesVersion: string;
|
||||
cspVersion: string;
|
||||
}
|
||||
/**
|
||||
* Предоставляет информацию о системе
|
||||
*
|
||||
* @returns информацию о CSP и плагине
|
||||
*/
|
||||
export declare const getSystemInfo: () => Promise<SystemInfo>;
|
8
dist/api/getUserCertificates.d.ts
vendored
Normal file
8
dist/api/getUserCertificates.d.ts
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
import { Certificate } from './certificate';
|
||||
/**
|
||||
* Возвращает список сертификатов, доступных пользователю в системе
|
||||
*
|
||||
* @param resetCache = false - позволяет сбросить кэш ранее полученных сертификатов
|
||||
* @returns список сертификатов
|
||||
*/
|
||||
export declare const getUserCertificates: (resetCache?: boolean) => Promise<Certificate[]>;
|
18
dist/api/index.d.ts
vendored
Normal file
18
dist/api/index.d.ts
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
export * from './getCertificate';
|
||||
export * from './getUserCertificates';
|
||||
export * from './getAllUserCertificates';
|
||||
export * from './getContainerCertificates';
|
||||
export * from './getAllContainerCertificates';
|
||||
export * from './getCertificates';
|
||||
export * from './getAllCertificates';
|
||||
export * from './getSystemInfo';
|
||||
export * from './isValidSystemSetup';
|
||||
export * from './createXMLSignature';
|
||||
export * from './createDetachedSignature';
|
||||
export * from './addDetachedSignature';
|
||||
export * from './createAttachedSignature';
|
||||
export * from './addAttachedSignature';
|
||||
export * from './createHash';
|
||||
export * from './certificate';
|
||||
export * from './getCspVersion';
|
||||
export * from './getPluginVersion';
|
6
dist/api/isValidSystemSetup.d.ts
vendored
Normal file
6
dist/api/isValidSystemSetup.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Проверяет корректность настроек ЭП на машине
|
||||
*
|
||||
* @returns флаг корректности настроек
|
||||
*/
|
||||
export declare const isValidSystemSetup: () => Promise<boolean>;
|
149
dist/constants/cades-constants.d.ts
vendored
Normal file
149
dist/constants/cades-constants.d.ts
vendored
Normal file
@ -0,0 +1,149 @@
|
||||
export declare const CADESCOM_ATTRIBUTE_OTHER = -1;
|
||||
export declare const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;
|
||||
export declare const CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;
|
||||
export declare const CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;
|
||||
export declare const CADESCOM_AllowNoOutstandingRequest = 1;
|
||||
export declare const CADESCOM_AllowNone = 0;
|
||||
export declare const CADESCOM_AllowUntrustedCertificate = 2;
|
||||
export declare const CADESCOM_AllowUntrustedRoot = 4;
|
||||
export declare const CADESCOM_BASE64_TO_BINARY = 1;
|
||||
export declare const CADESCOM_CADES_BES = 1;
|
||||
export declare const CADESCOM_CADES_DEFAULT = 0;
|
||||
export declare const CADESCOM_CADES_T = 5;
|
||||
export declare const CADESCOM_CADES_X_LONG_TYPE_1 = 93;
|
||||
export declare const CADESCOM_CONTAINER_STORE = 100;
|
||||
export declare const CADESCOM_CURRENT_USER_STORE = 2;
|
||||
export declare const CADESCOM_DISPLAY_DATA_ATTRIBUTE = 2;
|
||||
export declare const CADESCOM_DISPLAY_DATA_CONTENT = 1;
|
||||
export declare const CADESCOM_DISPLAY_DATA_NONE = 0;
|
||||
export declare const CADESCOM_ENCODE_ANY = -1;
|
||||
export declare const CADESCOM_ENCODE_BASE64 = 0;
|
||||
export declare const CADESCOM_ENCODE_BINARY = 1;
|
||||
export declare const CADESCOM_ENCRYPTION_ALGORITHM_3DES = 3;
|
||||
export declare const CADESCOM_ENCRYPTION_ALGORITHM_AES = 4;
|
||||
export declare const CADESCOM_ENCRYPTION_ALGORITHM_DES = 2;
|
||||
export declare const CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89 = 25;
|
||||
export declare const CADESCOM_ENCRYPTION_ALGORITHM_RC2 = 0;
|
||||
export declare const CADESCOM_ENCRYPTION_ALGORITHM_RC4 = 1;
|
||||
export declare const CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;
|
||||
export declare const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;
|
||||
export declare const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111;
|
||||
export declare const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102;
|
||||
export declare const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112;
|
||||
export declare const CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110;
|
||||
export declare const CADESCOM_HASH_ALGORITHM_MD2 = 1;
|
||||
export declare const CADESCOM_HASH_ALGORITHM_MD4 = 2;
|
||||
export declare const CADESCOM_HASH_ALGORITHM_MD5 = 3;
|
||||
export declare const CADESCOM_HASH_ALGORITHM_SHA1 = 0;
|
||||
export declare const CADESCOM_HASH_ALGORITHM_SHA_256 = 4;
|
||||
export declare const CADESCOM_HASH_ALGORITHM_SHA_384 = 5;
|
||||
export declare const CADESCOM_HASH_ALGORITHM_SHA_512 = 6;
|
||||
export declare const CADESCOM_LOCAL_MACHINE_STORE = 1;
|
||||
export declare const CADESCOM_PKCS7_TYPE = 65535;
|
||||
export declare const CADESCOM_STRING_TO_UCS2LE = 0;
|
||||
export declare const CADESCOM_SkipInstallToStore = 268435456;
|
||||
export declare const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;
|
||||
export declare const CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING = 1;
|
||||
export declare const CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE = 2;
|
||||
export declare const CAPICOM_ACTIVE_DIRECTORY_USER_STORE = 3;
|
||||
export declare const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;
|
||||
export declare const CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;
|
||||
export declare const CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;
|
||||
export declare const CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;
|
||||
export declare const CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;
|
||||
export declare const CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;
|
||||
export declare const CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;
|
||||
export declare const CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;
|
||||
export declare const CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;
|
||||
export declare const CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;
|
||||
export declare const CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;
|
||||
export declare const CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;
|
||||
export declare const CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;
|
||||
export declare const CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;
|
||||
export declare const CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;
|
||||
export declare const CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;
|
||||
export declare const CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;
|
||||
export declare const CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;
|
||||
export declare const CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;
|
||||
export declare const CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;
|
||||
export declare const CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;
|
||||
export declare const CAPICOM_CURRENT_USER_STORE = 2;
|
||||
export declare const CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;
|
||||
export declare const CAPICOM_EKU_CLIENT_AUTH = 2;
|
||||
export declare const CAPICOM_EKU_OTHER = 0;
|
||||
export declare const CAPICOM_EKU_SMARTCARD_LOGON = 5;
|
||||
export declare const CAPICOM_LOCAL_MACHINE_STORE = 1;
|
||||
export declare const CAPICOM_MEMORY_STORE = 0;
|
||||
export declare const CAPICOM_MY_STORE = "My";
|
||||
export declare const CAPICOM_OID_KEY_USAGE_EXTENSION = 10;
|
||||
export declare const CAPICOM_OID_OTHER = 0;
|
||||
export declare const CAPICOM_PROPID_ACCESS_STATE = 14;
|
||||
export declare const CAPICOM_PROPID_ARCHIVED = 19;
|
||||
export declare const CAPICOM_PROPID_ARCHIVED_KEY_HASH = 65;
|
||||
export declare const CAPICOM_PROPID_AUTO_ENROLL = 21;
|
||||
export declare const CAPICOM_PROPID_CROSS_CERT_DIST_POINTS = 23;
|
||||
export declare const CAPICOM_PROPID_CTL_USAGE = 9;
|
||||
export declare const CAPICOM_PROPID_DATE_STAMP = 27;
|
||||
export declare const CAPICOM_PROPID_DESCRIPTION = 13;
|
||||
export declare const CAPICOM_PROPID_EFS = 17;
|
||||
export declare const CAPICOM_PROPID_ENHKEY_USAGE = 9;
|
||||
export declare const CAPICOM_PROPID_ENROLLMENT = 26;
|
||||
export declare const CAPICOM_PROPID_EXTENDED_ERROR_INFO = 30;
|
||||
export declare const CAPICOM_PROPID_FIRST_RESERVED = 66;
|
||||
export declare const CAPICOM_PROPID_FIRST_USER = 32768;
|
||||
export declare const CAPICOM_PROPID_FORTEZZA_DATA = 18;
|
||||
export declare const CAPICOM_PROPID_FRIENDLY_NAME = 11;
|
||||
export declare const CAPICOM_PROPID_HASH_PROP = 3;
|
||||
export declare const CAPICOM_PROPID_IE30_RESERVED = 7;
|
||||
export declare const CAPICOM_PROPID_ISSUER_PUBLIC_KEY_MD5_HASH = 24;
|
||||
export declare const CAPICOM_PROPID_ISSUER_SERIAL_NUMBER_MD5_HASH = 28;
|
||||
export declare const CAPICOM_PROPID_KEY_CONTEXT = 5;
|
||||
export declare const CAPICOM_PROPID_KEY_IDENTIFIER = 20;
|
||||
export declare const CAPICOM_PROPID_KEY_PROV_HANDLE = 1;
|
||||
export declare const CAPICOM_PROPID_KEY_PROV_INFO = 2;
|
||||
export declare const CAPICOM_PROPID_KEY_SPEC = 6;
|
||||
export declare const CAPICOM_PROPID_LAST_RESERVED = 32767;
|
||||
export declare const CAPICOM_PROPID_LAST_USER = 65535;
|
||||
export declare const CAPICOM_PROPID_MD5_HASH = 4;
|
||||
export declare const CAPICOM_PROPID_NEXT_UPDATE_LOCATION = 10;
|
||||
export declare const CAPICOM_PROPID_PUBKEY_ALG_PARA = 22;
|
||||
export declare const CAPICOM_PROPID_PUBKEY_HASH_RESERVED = 8;
|
||||
export declare const CAPICOM_PROPID_PVK_FILE = 12;
|
||||
export declare const CAPICOM_PROPID_RENEWAL = 64;
|
||||
export declare const CAPICOM_PROPID_SHA1_HASH = 3;
|
||||
export declare const CAPICOM_PROPID_SIGNATURE_HASH = 15;
|
||||
export declare const CAPICOM_PROPID_SMART_CARD_DATA = 16;
|
||||
export declare const CAPICOM_PROPID_SUBJECT_NAME_MD5_HASH = 29;
|
||||
export declare const CAPICOM_PROPID_SUBJECT_PUBLIC_KEY_MD5_HASH = 25;
|
||||
export declare const CAPICOM_PROPID_UNKNOWN = 0;
|
||||
export declare const CAPICOM_SMART_CARD_USER_STORE = 4;
|
||||
export declare const CAPICOM_STORE_OPEN_EXISTING_ONLY = 128;
|
||||
export declare const CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = 256;
|
||||
export declare const CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;
|
||||
export declare const CAPICOM_STORE_OPEN_READ_ONLY = 0;
|
||||
export declare const CAPICOM_STORE_OPEN_READ_WRITE = 1;
|
||||
export declare const CHECK_NONE = 0;
|
||||
export declare const CHECK_OFFLINE_REVOCATION_STATUS = 16;
|
||||
export declare const CHECK_ONLINE_REVOCATION_STATUS = 8;
|
||||
export declare const CHECK_SIGNATURE_VALIDITY = 4;
|
||||
export declare const CHECK_TIME_VALIDITY = 2;
|
||||
export declare const CHECK_TRUSTED_ROOT = 1;
|
||||
export declare const LOG_LEVEL_DEBUG = 4;
|
||||
export declare const LOG_LEVEL_ERROR = 1;
|
||||
export declare const LOG_LEVEL_INFO = 2;
|
||||
export declare const TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144;
|
||||
export declare const TRUST_CTL_IS_NOT_TIME_VALID = 131072;
|
||||
export declare const TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288;
|
||||
export declare const TRUST_IS_CYCLIC = 128;
|
||||
export declare const TRUST_IS_NOT_SIGNATURE_VALID = 8;
|
||||
export declare const TRUST_IS_NOT_TIME_NESTED = 2;
|
||||
export declare const TRUST_IS_NOT_TIME_VALID = 1;
|
||||
export declare const TRUST_IS_NOT_VALID_FOR_USAGE = 16;
|
||||
export declare const TRUST_IS_PARTIAL_CHAIN = 65536;
|
||||
export declare const TRUST_IS_REVOKED = 4;
|
||||
export declare const TRUST_IS_UNTRUSTED_ROOT = 32;
|
||||
export declare const TRUST_REVOCATION_STATUS_UNKNOWN = 64;
|
||||
export declare const XmlDsigGost3410Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411";
|
||||
export declare const XmlDsigGost3410UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411";
|
||||
export declare const XmlDsigGost3411Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411";
|
||||
export declare const XmlDsigGost3411UrlObsolete = "http://www.w3.org/2001/04/xmldsig-more#gostr3411";
|
4
dist/constants/index.d.ts
vendored
Normal file
4
dist/constants/index.d.ts
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
export * from './cades-constants';
|
||||
export * from './issuer-tags-translations';
|
||||
export * from './oids-dictionary';
|
||||
export * from './subject-tags-translations';
|
2
dist/constants/issuer-tags-translations.d.ts
vendored
Normal file
2
dist/constants/issuer-tags-translations.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import { TagsTranslations } from './tags-translations';
|
||||
export declare const ISSUER_TAGS_TRANSLATIONS: TagsTranslations[];
|
48
dist/constants/oids-dictionary.d.ts
vendored
Normal file
48
dist/constants/oids-dictionary.d.ts
vendored
Normal file
@ -0,0 +1,48 @@
|
||||
export declare const OIDS_DICTIONARY: {
|
||||
'1.2.643.2.2.34.6': string;
|
||||
'1.2.643.2.39.1.1': string;
|
||||
'1.2.643.3.131.1.1': string;
|
||||
'1.2.643.100.4': string;
|
||||
'1.2.643.100.1': string;
|
||||
'1.2.643.100.5': string;
|
||||
'1.2.643.100.3': string;
|
||||
'1.2.643.3.141.1.1': string;
|
||||
'1.2.643.3.141.1.2': string;
|
||||
'1.2.643.3.2.100.65.13.11': string;
|
||||
'1.2.643.3.8.100.1': string;
|
||||
'1.2.643.3.8.100.1.1': string;
|
||||
'1.2.643.3.8.100.1.10': string;
|
||||
'1.2.643.3.8.100.1.11': string;
|
||||
'1.2.643.3.8.100.1.12': string;
|
||||
'1.2.643.3.8.100.1.13': string;
|
||||
'1.2.643.3.8.100.1.14': string;
|
||||
'1.2.643.3.8.100.1.2': string;
|
||||
'1.2.643.3.8.100.1.3': string;
|
||||
'1.2.643.3.8.100.1.4': string;
|
||||
'1.2.643.3.8.100.1.5': string;
|
||||
'1.2.643.3.8.100.1.6': string;
|
||||
'1.2.643.3.8.100.1.7': string;
|
||||
'1.2.643.3.8.100.1.8': string;
|
||||
'1.2.643.3.8.100.1.9': string;
|
||||
'1.2.643.5.1.24.2.1.3': string;
|
||||
'1.2.643.5.1.24.2.1.3.1': string;
|
||||
'1.2.643.5.1.24.2.2.2': string;
|
||||
'1.2.643.5.1.24.2.2.3': string;
|
||||
'1.2.643.6.2.1.7.1': string;
|
||||
'1.2.643.6.2.1.7.2': string;
|
||||
'1.2.643.6.3': string;
|
||||
'1.2.643.6.3.1.1': string;
|
||||
'1.2.643.6.3.1.2.1': string;
|
||||
'1.2.643.6.3.1.2.2': string;
|
||||
'1.2.643.6.3.1.2.3': string;
|
||||
'1.2.643.6.3.1.3.1': string;
|
||||
'1.2.643.6.3.1.4.1': string;
|
||||
'1.2.643.6.3.1.4.2': string;
|
||||
'1.2.643.6.3.1.4.3': string;
|
||||
'1.2.840.113549.1.9.2': string;
|
||||
'1.3.6.1.4.1.24138.1.1.8.1': string;
|
||||
'1.3.6.1.4.1.29919.21': string;
|
||||
'1.3.6.1.5.5.7.3.2': string;
|
||||
'1.3.6.1.5.5.7.3.4': string;
|
||||
'1.3.643.3.8.100.15': string;
|
||||
};
|
2
dist/constants/subject-tags-translations.d.ts
vendored
Normal file
2
dist/constants/subject-tags-translations.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import { TagsTranslations } from './tags-translations';
|
||||
export declare const SUBJECT_TAGS_TRANSLATIONS: TagsTranslations[];
|
4
dist/constants/tags-translations.d.ts
vendored
Normal file
4
dist/constants/tags-translations.d.ts
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
export interface TagsTranslations {
|
||||
possibleNames: string[];
|
||||
translation: string;
|
||||
}
|
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.3
|
||||
// Project: crypto-pro-js
|
||||
// Definitions by: Artem Vasilev https://github.com/kernusr
|
||||
|
||||
export as namespace cryptoPro;
|
||||
|
||||
export * from './api';
|
6071
dist/crypto-pro-js.js
vendored
Normal file
6071
dist/crypto-pro-js.js
vendored
Normal file
File diff suppressed because one or more lines are too long
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
2557
dist/crypto-pro.js
vendored
2557
dist/crypto-pro.js
vendored
File diff suppressed because it is too large
Load Diff
1
dist/crypto-pro.js.map
vendored
1
dist/crypto-pro.js.map
vendored
File diff suppressed because one or more lines are too long
3
dist/helpers/_afterPluginsLoaded.d.ts
vendored
Normal file
3
dist/helpers/_afterPluginsLoaded.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
declare type Unpromisify<T> = T extends Promise<infer R> ? R : T;
|
||||
export declare const _afterPluginsLoaded: <T extends (...args: any[]) => any>(fn: T) => (...args: Parameters<T>) => Promise<Unpromisify<ReturnType<T>>>;
|
||||
export {};
|
1
dist/helpers/_extractCommonName.d.ts
vendored
Normal file
1
dist/helpers/_extractCommonName.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export declare const _extractCommonName: (subjectName: string) => string | undefined;
|
1
dist/helpers/_extractMeaningfulErrorMessage.d.ts
vendored
Normal file
1
dist/helpers/_extractMeaningfulErrorMessage.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export declare const _extractMeaningfulErrorMessage: (error: Error) => string | null;
|
3
dist/helpers/_generateCadesFn.d.ts
vendored
Normal file
3
dist/helpers/_generateCadesFn.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
export declare const __cadesAsyncToken__: {};
|
||||
export declare const __createCadesPluginObject__: (...args: any[]) => any;
|
||||
export declare const _generateCadesFn: (callback: Function) => string;
|
7
dist/helpers/_getCadesCert.d.ts
vendored
Normal file
7
dist/helpers/_getCadesCert.d.ts
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Возвращает сертификат в формате Cades по отпечатку
|
||||
*
|
||||
* @param thumbprint - отпечаток сертификата
|
||||
* @returns сертификат в формате Cades
|
||||
*/
|
||||
export declare const _getCadesCert: (thumbprint: string) => Promise<any>;
|
7
dist/helpers/_getCadesContainerCert.d.ts
vendored
Normal file
7
dist/helpers/_getCadesContainerCert.d.ts
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Возвращает сертификат в формате Cades по отпечатку из хранилища закрытого ключа
|
||||
*
|
||||
* @param thumbprint - отпечаток сертификата
|
||||
* @returns сертификат в формате Cades
|
||||
*/
|
||||
export declare const _getCadesContainerCert: (thumbprint: string) => Promise<any>;
|
7
dist/helpers/_getCadesUserCert.d.ts
vendored
Normal file
7
dist/helpers/_getCadesUserCert.d.ts
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Возвращает сертификат в формате Cades по отпечатку из хранилища пользователя
|
||||
*
|
||||
* @param thumbprint - отпечаток сертификата
|
||||
* @returns сертификат в формате Cades
|
||||
*/
|
||||
export declare const _getCadesUserCert: (thumbprint: string) => Promise<any>;
|
7
dist/helpers/_getDateObj.d.ts
vendored
Normal file
7
dist/helpers/_getDateObj.d.ts
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Возвращает объект даты, совместимый с Cades plugin'ом, зависящий от браузера.
|
||||
*
|
||||
* В IE необходимо использовать специфичный формат "VT_DATE"
|
||||
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Microsoft_Extensions/Date.getVarDate
|
||||
*/
|
||||
export declare const _getDateObj: (dateObj: any) => Date;
|
1
dist/helpers/_isSupportedCSPVersion.d.ts
vendored
Normal file
1
dist/helpers/_isSupportedCSPVersion.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export declare const _isSupportedCSPVersion: (version: string) => boolean;
|
1
dist/helpers/_isSupportedCadesVersion.d.ts
vendored
Normal file
1
dist/helpers/_isSupportedCadesVersion.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export declare const _isSupportedCadesVersion: (version: string) => boolean;
|
14
dist/helpers/_parseCertInfo.d.ts
vendored
Normal file
14
dist/helpers/_parseCertInfo.d.ts
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
import { TagsTranslations } from '../constants/tags-translations';
|
||||
export interface TagTranslation {
|
||||
description: string;
|
||||
title: string;
|
||||
isTranslated: boolean;
|
||||
}
|
||||
/**
|
||||
* Парсит информацию из строки с информацией о сертификате
|
||||
*
|
||||
* @param tagsTranslations - словарь с расшифровками тэгов
|
||||
* @param rawInfo - данные для парсинга
|
||||
* @returns расшифрованная информация по отдельным тэгам
|
||||
*/
|
||||
export declare const _parseCertInfo: (tagsTranslations: TagsTranslations[], rawInfo: string) => TagTranslation[];
|
@ -1,26 +0,0 @@
|
||||
;(function () {
|
||||
'use strict';
|
||||
|
||||
var $certs = document.querySelector('#certList');
|
||||
|
||||
/**
|
||||
* Пример получения списка сертификатов
|
||||
* */
|
||||
window.CryptoPro.call('getCertsList').then(function (list) {
|
||||
list.forEach(function (cert) {
|
||||
var $certOption = document.createElement('option');
|
||||
|
||||
if (typeof $certOption.textContent !== 'undefined') {
|
||||
$certOption.textContent = cert.label;
|
||||
} else {
|
||||
$certOption.innerText = cert.label;
|
||||
}
|
||||
|
||||
$certOption.value = cert.thumbprint;
|
||||
|
||||
$certs.appendChild($certOption);
|
||||
});
|
||||
}, function (error) {
|
||||
console.error(error);
|
||||
});
|
||||
}());
|
@ -1,24 +0,0 @@
|
||||
;(function () {
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Пример создания подписи данных, сгенерированных по ГОСТ Р 34.11-94
|
||||
* https://ru.wikipedia.org/wiki/%D0%93%D0%9E%D0%A1%D0%A2_%D0%A0_34.11-94
|
||||
* */
|
||||
var $certs = document.querySelector('#certList'),
|
||||
$createSignBtn = document.querySelector('#createSign'),
|
||||
$signatureCnt = document.querySelector('#createdSign'),
|
||||
|
||||
// Вычислинный hash по ГОСТ Р 34.11-94 для строки: "abc"
|
||||
hash = 'b285056dbf18d7392d7677369524dd14747459ed8143997e163b2986f92fd42c',
|
||||
|
||||
hashBase64 = window.btoa(hash);
|
||||
|
||||
$createSignBtn.addEventListener('click', function () {
|
||||
var thumbprint = $certs.value;
|
||||
|
||||
window.CryptoPro.call('signData', thumbprint, hashBase64).then(function (signature) {
|
||||
$signatureCnt.value = signature;
|
||||
});
|
||||
});
|
||||
}());
|
@ -1,29 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Пример использования CryptoPro</title>
|
||||
</head>
|
||||
<body>
|
||||
<select id="certList"></select>
|
||||
<button id="createSign" type="button">Создать подпись</button>
|
||||
<br>
|
||||
<textarea id="createdSign" cols="90" rows="30"></textarea>
|
||||
|
||||
<!-- Полифиллы для работы библиотеки -->
|
||||
<script src="polyfills/addEventListener.js"></script>
|
||||
<script src="polyfills/promise.js"></script>
|
||||
<script src="polyfills/forEach.js"></script>
|
||||
<script src="polyfills/map.js"></script>
|
||||
|
||||
<!-- Библиотека -->
|
||||
<script src="../dist/crypto-pro.js"></script>
|
||||
|
||||
<!-- Полифиллы для работы демо скриптов -->
|
||||
<script src="polyfills/atob-btoa.js"></script>
|
||||
|
||||
<!-- Демо скрипты -->
|
||||
<script src="cert-list.js"></script>
|
||||
<script src="create-sign.js"></script>
|
||||
</body>
|
||||
</html>
|
@ -1,32 +0,0 @@
|
||||
!window.addEventListener && (function (WindowPrototype, DocumentPrototype, ElementPrototype, addEventListener, removeEventListener, dispatchEvent, registry) {
|
||||
WindowPrototype[addEventListener] = DocumentPrototype[addEventListener] = ElementPrototype[addEventListener] = function (type, listener) {
|
||||
var target = this;
|
||||
|
||||
registry.unshift([target, type, listener, function (event) {
|
||||
event.currentTarget = target;
|
||||
event.preventDefault = function () {
|
||||
event.returnValue = false
|
||||
};
|
||||
event.stopPropagation = function () {
|
||||
event.cancelBubble = true
|
||||
};
|
||||
event.target = event.srcElement || target;
|
||||
|
||||
listener.call(target, event);
|
||||
}]);
|
||||
|
||||
this.attachEvent("on" + type, registry[0][3]);
|
||||
};
|
||||
|
||||
WindowPrototype[removeEventListener] = DocumentPrototype[removeEventListener] = ElementPrototype[removeEventListener] = function (type, listener) {
|
||||
for (var index = 0, register; register = registry[index]; ++index) {
|
||||
if (register[0] == this && register[1] == type && register[2] == listener) {
|
||||
return this.detachEvent("on" + type, registry.splice(index, 1)[0][3]);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
WindowPrototype[dispatchEvent] = DocumentPrototype[dispatchEvent] = ElementPrototype[dispatchEvent] = function (eventObject) {
|
||||
return this.fireEvent("on" + eventObject.type, eventObject);
|
||||
};
|
||||
})(Window.prototype, HTMLDocument.prototype, Element.prototype, "addEventListener", "removeEventListener", "dispatchEvent", []);
|
@ -1,59 +0,0 @@
|
||||
// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.18
|
||||
// Ссылка (en): http://es5.github.io/#x15.4.4.18
|
||||
// Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.18
|
||||
if (!Array.prototype.forEach) {
|
||||
|
||||
Array.prototype.forEach = function (callback, thisArg) {
|
||||
|
||||
var T, k;
|
||||
|
||||
if (this == null) {
|
||||
throw new TypeError(' this is null or not defined');
|
||||
}
|
||||
|
||||
// 1. Положим O равным результату вызова ToObject passing the |this| value as the argument.
|
||||
var O = Object(this);
|
||||
|
||||
// 2. Положим lenValue равным результату вызова внутреннего метода Get объекта O с аргументом "length".
|
||||
// 3. Положим len равным ToUint32(lenValue).
|
||||
var len = O.length >>> 0;
|
||||
|
||||
// 4. Если IsCallable(callback) равен false, выкинем исключение TypeError.
|
||||
// Смотрите: http://es5.github.com/#x9.11
|
||||
if (typeof callback !== 'function') {
|
||||
throw new TypeError(callback + ' is not a function');
|
||||
}
|
||||
|
||||
// 5. Если thisArg присутствует, положим T равным thisArg; иначе положим T равным undefined.
|
||||
if (arguments.length > 1) {
|
||||
T = thisArg;
|
||||
}
|
||||
|
||||
// 6. Положим k равным 0
|
||||
k = 0;
|
||||
|
||||
// 7. Пока k < len, будем повторять
|
||||
while (k < len) {
|
||||
|
||||
var kValue;
|
||||
|
||||
// a. Положим Pk равным ToString(k).
|
||||
// Это неявное преобразование для левостороннего операнда в операторе in
|
||||
// b. Положим kPresent равным результату вызова внутреннего метода HasProperty объекта O с аргументом Pk.
|
||||
// Этот шаг может быть объединён с шагом c
|
||||
// c. Если kPresent равен true, то
|
||||
if (k in O) {
|
||||
|
||||
// i. Положим kValue равным результату вызова внутреннего метода Get объекта O с аргументом Pk.
|
||||
kValue = O[k];
|
||||
|
||||
// ii. Вызовем внутренний метод Call функции callback с объектом T в качестве значения this и
|
||||
// списком аргументов, содержащим kValue, k и O.
|
||||
callback.call(T, kValue, k, O);
|
||||
}
|
||||
// d. Увеличим k на 1.
|
||||
k++;
|
||||
}
|
||||
// 8. Вернём undefined.
|
||||
};
|
||||
}
|
@ -1,91 +0,0 @@
|
||||
// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.19
|
||||
// Ссылка (en): http://es5.github.com/#x15.4.4.19
|
||||
// Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.19
|
||||
if (!Array.prototype.map) {
|
||||
|
||||
Array.prototype.map = function(callback, thisArg) {
|
||||
|
||||
var T, A, k;
|
||||
|
||||
if (this == null) {
|
||||
throw new TypeError(' this is null or not defined');
|
||||
}
|
||||
|
||||
// 1. Положим O равным результату вызова ToObject с передачей ему
|
||||
// значения |this| в качестве аргумента.
|
||||
var O = Object(this);
|
||||
|
||||
// 2. Положим lenValue равным результату вызова внутреннего метода Get
|
||||
// объекта O с аргументом "length".
|
||||
// 3. Положим len равным ToUint32(lenValue).
|
||||
var len = O.length >>> 0;
|
||||
|
||||
// 4. Если вызов IsCallable(callback) равен false, выкидываем исключение TypeError.
|
||||
// Смотрите (en): http://es5.github.com/#x9.11
|
||||
// Смотрите (ru): http://es5.javascript.ru/x9.html#x9.11
|
||||
if (typeof callback !== 'function') {
|
||||
throw new TypeError(callback + ' is not a function');
|
||||
}
|
||||
|
||||
// 5. Если thisArg присутствует, положим T равным thisArg; иначе положим T равным undefined.
|
||||
if (arguments.length > 1) {
|
||||
T = thisArg;
|
||||
}
|
||||
|
||||
// 6. Положим A равным новому масиву, как если бы он был создан выражением new Array(len),
|
||||
// где Array является стандартным встроенным конструктором с этим именем,
|
||||
// а len является значением len.
|
||||
A = new Array(len);
|
||||
|
||||
// 7. Положим k равным 0
|
||||
k = 0;
|
||||
|
||||
// 8. Пока k < len, будем повторять
|
||||
while (k < len) {
|
||||
|
||||
var kValue, mappedValue;
|
||||
|
||||
// a. Положим Pk равным ToString(k).
|
||||
// Это неявное преобразование для левостороннего операнда в операторе in
|
||||
// b. Положим kPresent равным результату вызова внутреннего метода HasProperty
|
||||
// объекта O с аргументом Pk.
|
||||
// Этот шаг может быть объединён с шагом c
|
||||
// c. Если kPresent равен true, то
|
||||
if (k in O) {
|
||||
|
||||
// i. Положим kValue равным результату вызова внутреннего метода Get
|
||||
// объекта O с аргументом Pk.
|
||||
kValue = O[k];
|
||||
|
||||
// ii. Положим mappedValue равным результату вызова внутреннего метода Call
|
||||
// функции callback со значением T в качестве значения this и списком
|
||||
// аргументов, содержащим kValue, k и O.
|
||||
mappedValue = callback.call(T, kValue, k, O);
|
||||
|
||||
// iii. Вызовем внутренний метод DefineOwnProperty объекта A с аргументами
|
||||
// Pk, Описатель Свойства
|
||||
// { Value: mappedValue,
|
||||
// Writable: true,
|
||||
// Enumerable: true,
|
||||
// Configurable: true }
|
||||
// и false.
|
||||
|
||||
// В браузерах, поддерживающих Object.defineProperty, используем следующий код:
|
||||
// Object.defineProperty(A, k, {
|
||||
// value: mappedValue,
|
||||
// writable: true,
|
||||
// enumerable: true,
|
||||
// configurable: true
|
||||
// });
|
||||
|
||||
// Для лучшей поддержки браузерами, используем следующий код:
|
||||
A[k] = mappedValue;
|
||||
}
|
||||
// d. Увеличим k на 1.
|
||||
k++;
|
||||
}
|
||||
|
||||
// 9. Вернём A.
|
||||
return A;
|
||||
};
|
||||
}
|
1
examples/script-tag/.gitignore
vendored
Normal file
1
examples/script-tag/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/public/dist
|
485
examples/script-tag/package-lock.json
generated
Normal file
485
examples/script-tag/package-lock.json
generated
Normal file
@ -0,0 +1,485 @@
|
||||
{
|
||||
"name": "crypto-pro-example-es5-script-tag",
|
||||
"version": "2.3.3",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "crypto-pro-example-es5-script-tag",
|
||||
"version": "2.3.3",
|
||||
"dependencies": {
|
||||
"crypto-pro-js": "^2.3.3"
|
||||
},
|
||||
"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.3",
|
||||
"resolved": "https://registry.npmjs.org/crypto-pro-js/-/crypto-pro-js-2.3.3.tgz",
|
||||
"integrity": "sha512-ge6PXRw6pu2kXeaqwEpHvmQEuSRQWJcVfQfPfF5gGONIi+jUHFsvkeS5ojFcKKBDqFHnYUQXFZ1aMKDGdoVRqg==",
|
||||
"engines": {
|
||||
"node": "~16"
|
||||
}
|
||||
},
|
||||
"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.1.2",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
||||
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
||||
"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",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
||||
"dev": true
|
||||
},
|
||||
"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,
|
||||
"requires": {
|
||||
"is-windows": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"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,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"colors": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
|
||||
"integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
|
||||
"dev": true
|
||||
},
|
||||
"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
|
||||
},
|
||||
"crypto-pro-js": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/crypto-pro-js/-/crypto-pro-js-2.3.3.tgz",
|
||||
"integrity": "sha512-ge6PXRw6pu2kXeaqwEpHvmQEuSRQWJcVfQfPfF5gGONIi+jUHFsvkeS5ojFcKKBDqFHnYUQXFZ1aMKDGdoVRqg=="
|
||||
},
|
||||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
|
||||
"dev": true
|
||||
},
|
||||
"glob": {
|
||||
"version": "7.1.6",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
|
||||
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"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
|
||||
},
|
||||
"inflight": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||
"dev": true
|
||||
},
|
||||
"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
|
||||
},
|
||||
"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,
|
||||
"requires": {
|
||||
"semver": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"mime": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
|
||||
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
|
||||
"dev": true
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
||||
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "0.0.10",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
|
||||
"integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
|
||||
"dev": true
|
||||
},
|
||||
"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,
|
||||
"requires": {
|
||||
"colors": ">=0.6.0",
|
||||
"mime": "^1.2.9",
|
||||
"optimist": ">=0.3.4"
|
||||
}
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"optimist": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
|
||||
"integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"minimist": "~0.0.1",
|
||||
"wordwrap": "~0.0.2"
|
||||
}
|
||||
},
|
||||
"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
|
||||
},
|
||||
"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,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.11",
|
||||
"rimraf": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"rimraf": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
||||
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"glob": "^7.1.3"
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
"version": "6.3.0",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
||||
"dev": true
|
||||
},
|
||||
"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,
|
||||
"requires": {
|
||||
"better-path-resolve": "^1.0.0",
|
||||
"graceful-fs": "^4.1.11",
|
||||
"make-dir": "^3.0.0",
|
||||
"rename-overwrite": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"wordwrap": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
|
||||
"integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
|
||||
"dev": true
|
||||
},
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
}
|
18
examples/script-tag/package.json
Normal file
18
examples/script-tag/package.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "crypto-pro-example-es5-script-tag",
|
||||
"version": "2.3.3",
|
||||
"description": "Пример использования пакета crypto-pro через тэг script",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"link-library": "symlink-dir ./node_modules/crypto-pro-js/dist ./public/dist",
|
||||
"serve": "static --host-address localhost --port 8080 public",
|
||||
"start": "npm run link-library && npm run serve"
|
||||
},
|
||||
"devDependencies": {
|
||||
"node-static": "0.7.11",
|
||||
"symlink-dir": "3.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"crypto-pro-js": "^2.3.3"
|
||||
}
|
||||
}
|
31
examples/script-tag/public/cert-list.js
Normal file
31
examples/script-tag/public/cert-list.js
Normal file
@ -0,0 +1,31 @@
|
||||
/**
|
||||
* Пример получения списка сертификатов
|
||||
* */
|
||||
;(function () {
|
||||
'use strict';
|
||||
|
||||
var $certificate = document.getElementById('certificate'),
|
||||
$createSignature = document.getElementById('createSignature'),
|
||||
$certificateDetails = document.getElementById('certificateDetails'),
|
||||
$certificateError = document.getElementById('certificateListError');
|
||||
|
||||
$certificate.addEventListener('change', function handleCertSelection() {
|
||||
var thumbprint = $certificate.value;
|
||||
|
||||
$createSignature.disabled = !thumbprint;
|
||||
$certificateDetails.style.display = thumbprint ? 'block' : 'none';
|
||||
});
|
||||
|
||||
window.cryptoPro.getCertificates().then(function (certificateList) {
|
||||
certificateList.forEach(function (certificate) {
|
||||
var $certOption = document.createElement('option');
|
||||
|
||||
$certOption.textContent = certificate.name + ' (действителен до: ' + certificate.validTo + ')';
|
||||
$certOption.value = certificate.thumbprint;
|
||||
|
||||
$certificate.appendChild($certOption);
|
||||
});
|
||||
}, function (error) {
|
||||
$certificateError.textContent = error.message;
|
||||
});
|
||||
})();
|
104
examples/script-tag/public/create-sign.js
Normal file
104
examples/script-tag/public/create-sign.js
Normal file
@ -0,0 +1,104 @@
|
||||
/**
|
||||
* Пример создания подписи данных
|
||||
* */
|
||||
;(function () {
|
||||
'use strict';
|
||||
|
||||
var $createSignature = document.forms.createSignature,
|
||||
$certificate = document.getElementById('certificate'),
|
||||
$message = document.getElementById('message'),
|
||||
$messageFile = document.getElementById('messageFile'),
|
||||
$messageFileError = document.getElementById('messageFileError'),
|
||||
$hash = document.getElementById('hash'),
|
||||
$hashError = document.getElementById('hashError'),
|
||||
$signature = document.getElementById('signature'),
|
||||
$signatureError = document.getElementById('signatureError'),
|
||||
|
||||
// https://support.cryptopro.ru/index.php?/Knowledgebase/Article/View/213/12/ogrnichenie-n-rzmer-podpisyvemogo-fjjl-v-bruzere
|
||||
MAX_FILE_SIZE = 25000000;
|
||||
|
||||
function readFile(messageFile) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
var fileReader = new FileReader();
|
||||
|
||||
fileReader.onload = function () {
|
||||
resolve(this.result);
|
||||
};
|
||||
|
||||
if (messageFile.size > MAX_FILE_SIZE) {
|
||||
reject('Файл для подписи не должен превышать ' + MAX_FILE_SIZE / 1000000 + 'МБ');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
fileReader.readAsArrayBuffer(messageFile);
|
||||
});
|
||||
}
|
||||
|
||||
function createSignature(message, hash) {
|
||||
var thumbprint = $certificate.value,
|
||||
signatureType = document.querySelector('input[name="signatureType"]:checked').value,
|
||||
signaturePromise;
|
||||
|
||||
$hash.value = hash;
|
||||
|
||||
$signature.placeholder = 'Создается...';
|
||||
$signature.value = '';
|
||||
|
||||
switch (signatureType) {
|
||||
case 'attached':
|
||||
signaturePromise = window.cryptoPro.createAttachedSignature(thumbprint, message);
|
||||
|
||||
break;
|
||||
case 'xml':
|
||||
signaturePromise = window.cryptoPro.createXMLSignature(thumbprint, message);
|
||||
|
||||
break;
|
||||
case 'detached':
|
||||
signaturePromise = window.cryptoPro.createDetachedSignature(thumbprint, hash);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
signaturePromise.then(function (signature) {
|
||||
$signature.value = signature;
|
||||
$signatureError.textContent = '';
|
||||
}, function (error) {
|
||||
$signature.placeholder = 'Не создана';
|
||||
$signatureError.textContent = error.message;
|
||||
});
|
||||
}
|
||||
|
||||
$message.addEventListener('keydown', function() {
|
||||
$messageFile.value = null;
|
||||
});
|
||||
|
||||
if ($messageFile) {
|
||||
$messageFile.addEventListener('change', function() {
|
||||
$message.value = '';
|
||||
});
|
||||
}
|
||||
|
||||
$createSignature.addEventListener('submit', function (event) {
|
||||
var messageFile = $messageFile && $messageFile.files.length && $messageFile.files[0],
|
||||
messagePromise = Promise.resolve($message.value);
|
||||
|
||||
if (messageFile) {
|
||||
messagePromise = readFile(messageFile);
|
||||
}
|
||||
|
||||
event.preventDefault();
|
||||
|
||||
messagePromise.then(function (message) {
|
||||
$hash.placeholder = 'Вычисляется...';
|
||||
$hash.value = '';
|
||||
|
||||
window.cryptoPro.createHash(message).then(createSignature.bind(null, message), function (hashError) {
|
||||
$hash.placeholder = 'Не вычислен';
|
||||
$hashError.textContent = hashError.message;
|
||||
});
|
||||
}, function (fileError) {
|
||||
$messageFileError.textContent = fileError;
|
||||
})
|
||||
});
|
||||
})();
|
21
examples/script-tag/public/get-env-info.js
Normal file
21
examples/script-tag/public/get-env-info.js
Normal file
@ -0,0 +1,21 @@
|
||||
/**
|
||||
* Пример получения сведений о системе
|
||||
*/
|
||||
;(function () {
|
||||
'use strict';
|
||||
|
||||
var $systemInfo = document.getElementById('systemInfo'),
|
||||
$systemInfoError = document.getElementById('systemInfoError');
|
||||
|
||||
window.cryptoPro.getSystemInfo().then(function (systemInfo) {
|
||||
window.cryptoPro.isValidSystemSetup().then(function (isValidSystemSetup) {
|
||||
systemInfo.isValidSystemSetup = isValidSystemSetup;
|
||||
|
||||
$systemInfo.textContent = JSON.stringify(systemInfo, null, ' ');
|
||||
}, handleError);
|
||||
}, handleError);
|
||||
|
||||
function handleError(error) {
|
||||
$systemInfoError.textContent = error.message;
|
||||
}
|
||||
})();
|
97
examples/script-tag/public/index.html
Executable file
97
examples/script-tag/public/index.html
Executable file
@ -0,0 +1,97 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Пример использования cryptoPro</title>
|
||||
</head>
|
||||
<body>
|
||||
<form name="createSignature" novalidate>
|
||||
<fieldset>
|
||||
<legend>Создание подписи</legend>
|
||||
<label for="message">Подписываемое сообщение: *</label>
|
||||
<br>
|
||||
<textarea id="message" cols="80" rows="5" placeholder="Введите сообщение" autofocus required>Привет мир!</textarea>
|
||||
<br><br>
|
||||
|
||||
<!--[if gte IE 10]><!-->
|
||||
<label for="messageFile">Или файл для подписи:</label>
|
||||
<br/>
|
||||
<input id="messageFile" type="file">
|
||||
<pre id="messageFileError"></pre>
|
||||
<!--<![endif]-->
|
||||
<hr>
|
||||
|
||||
<label for="certificate">Сертификат: *</label>
|
||||
<br>
|
||||
<select id="certificate" tabindex="-1" required>
|
||||
<option disabled selected>Не выбран</option>
|
||||
</select>
|
||||
<pre id="certificateListError"></pre>
|
||||
|
||||
<details id="certificateDetails">
|
||||
<summary>Информация о сертификате</summary>
|
||||
<pre id="certificateInfo"></pre>
|
||||
</details>
|
||||
<pre id="certificateInfoError"></pre>
|
||||
|
||||
<label>Тип подписи: *</label>
|
||||
<br>
|
||||
<label><input type="radio" name="signatureType" value="attached">Совмещенная</label>
|
||||
<br>
|
||||
<label><input type="radio" name="signatureType" value="xml">XML</label>
|
||||
<br>
|
||||
<label><input type="radio" name="signatureType" value="detached" checked>Отделенная</label>
|
||||
<br><br>
|
||||
|
||||
<hr>
|
||||
<button id="createSignature" type="submit" disabled>Создать подпись</button>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>Результат</legend>
|
||||
<label for="hash">Хеш (ГОСТ Р 34.11-2012 256 бит):</label><br>
|
||||
<textarea id="hash" cols="80" rows="5" placeholder="Не вычислен"></textarea>
|
||||
<br>
|
||||
<pre id="hashError"></pre>
|
||||
|
||||
<label for="signature">Подпись (PKCS7):</label><br>
|
||||
<textarea id="signature" cols="80" rows="30" placeholder="Не создана"></textarea>
|
||||
<pre id="signatureError"></pre>
|
||||
|
||||
<p>
|
||||
Для
|
||||
<a href="https://www.gosuslugi.ru/pgu/eds/"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer"
|
||||
title="Перейти к проверке подписи">проверки</a>
|
||||
нужно создать файл со сгенерированной подписью в кодировке UTF-8 с расширением *.sgn
|
||||
<br>
|
||||
для отделенной подписи (или *.sig для совмещенной).
|
||||
</p>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>Информация о системе</legend>
|
||||
<pre id="systemInfo"></pre>
|
||||
<pre id="systemInfoError"></pre>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- Полифиллы для работы библиотеки -->
|
||||
<script src="polyfills/promise.js"></script>
|
||||
<script src="polyfills/find.js"></script>
|
||||
|
||||
<!-- Библиотека -->
|
||||
<script src="dist/crypto-pro-js.js"></script>
|
||||
|
||||
<!-- Полифиллы для работы демо скриптов -->
|
||||
<script src="polyfills/atob-btoa.js"></script>
|
||||
<script src="polyfills/details-element-polyfill.js"></script>
|
||||
|
||||
<!-- Демо скрипты -->
|
||||
<script src="cert-list.js"></script>
|
||||
<script src="create-sign.js"></script>
|
||||
<script src="get-env-info.js"></script>
|
||||
<script src="show-cert.js"></script>
|
||||
</body>
|
||||
</html>
|
194
examples/script-tag/public/polyfills/details-element-polyfill.js
Normal file
194
examples/script-tag/public/polyfills/details-element-polyfill.js
Normal file
@ -0,0 +1,194 @@
|
||||
/*
|
||||
Details Element Polyfill 2.4.0
|
||||
Copyright © 2019 Javan Makhmali
|
||||
*/
|
||||
(function() {
|
||||
"use strict";
|
||||
var element = document.createElement("details");
|
||||
var elementIsNative = typeof HTMLDetailsElement != "undefined" && element instanceof HTMLDetailsElement;
|
||||
var support = {
|
||||
open: "open" in element || elementIsNative,
|
||||
toggle: "ontoggle" in element
|
||||
};
|
||||
var styles = '\ndetails, summary {\n display: block;\n}\ndetails:not([open]) > *:not(summary) {\n display: none;\n}\nsummary::before {\n content: "►";\n padding-right: 0.3rem;\n font-size: 0.6rem;\n cursor: default;\n}\n[open] > summary::before {\n content: "▼";\n}\n';
|
||||
var _ref = [], forEach = _ref.forEach, slice = _ref.slice;
|
||||
if (!support.open) {
|
||||
polyfillStyles();
|
||||
polyfillProperties();
|
||||
polyfillToggle();
|
||||
polyfillAccessibility();
|
||||
}
|
||||
if (support.open && !support.toggle) {
|
||||
polyfillToggleEvent();
|
||||
}
|
||||
function polyfillStyles() {
|
||||
document.head.insertAdjacentHTML("afterbegin", "<style>" + styles + "</style>");
|
||||
}
|
||||
function polyfillProperties() {
|
||||
var prototype = document.createElement("details").constructor.prototype;
|
||||
var setAttribute = prototype.setAttribute, removeAttribute = prototype.removeAttribute;
|
||||
var open = Object.getOwnPropertyDescriptor(prototype, "open");
|
||||
Object.defineProperties(prototype, {
|
||||
open: {
|
||||
get: function get() {
|
||||
if (this.tagName == "DETAILS") {
|
||||
return this.hasAttribute("open");
|
||||
} else {
|
||||
if (open && open.get) {
|
||||
return open.get.call(this);
|
||||
}
|
||||
}
|
||||
},
|
||||
set: function set(value) {
|
||||
if (this.tagName == "DETAILS") {
|
||||
return value ? this.setAttribute("open", "") : this.removeAttribute("open");
|
||||
} else {
|
||||
if (open && open.set) {
|
||||
return open.set.call(this, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
setAttribute: {
|
||||
value: function value(name, _value) {
|
||||
var _this = this;
|
||||
var call = function call() {
|
||||
return setAttribute.call(_this, name, _value);
|
||||
};
|
||||
if (name == "open" && this.tagName == "DETAILS") {
|
||||
var wasOpen = this.hasAttribute("open");
|
||||
var result = call();
|
||||
if (!wasOpen) {
|
||||
var summary = this.querySelector("summary");
|
||||
if (summary) summary.setAttribute("aria-expanded", true);
|
||||
triggerToggle(this);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return call();
|
||||
}
|
||||
},
|
||||
removeAttribute: {
|
||||
value: function value(name) {
|
||||
var _this2 = this;
|
||||
var call = function call() {
|
||||
return removeAttribute.call(_this2, name);
|
||||
};
|
||||
if (name == "open" && this.tagName == "DETAILS") {
|
||||
var wasOpen = this.hasAttribute("open");
|
||||
var result = call();
|
||||
if (wasOpen) {
|
||||
var summary = this.querySelector("summary");
|
||||
if (summary) summary.setAttribute("aria-expanded", false);
|
||||
triggerToggle(this);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return call();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
function polyfillToggle() {
|
||||
onTogglingTrigger(function(element) {
|
||||
element.hasAttribute("open") ? element.removeAttribute("open") : element.setAttribute("open", "");
|
||||
});
|
||||
}
|
||||
function polyfillToggleEvent() {
|
||||
if (window.MutationObserver) {
|
||||
new MutationObserver(function(mutations) {
|
||||
forEach.call(mutations, function(mutation) {
|
||||
var target = mutation.target, attributeName = mutation.attributeName;
|
||||
if (target.tagName == "DETAILS" && attributeName == "open") {
|
||||
triggerToggle(target);
|
||||
}
|
||||
});
|
||||
}).observe(document.documentElement, {
|
||||
attributes: true,
|
||||
subtree: true
|
||||
});
|
||||
} else {
|
||||
onTogglingTrigger(function(element) {
|
||||
var wasOpen = element.getAttribute("open");
|
||||
setTimeout(function() {
|
||||
var isOpen = element.getAttribute("open");
|
||||
if (wasOpen != isOpen) {
|
||||
triggerToggle(element);
|
||||
}
|
||||
}, 1);
|
||||
});
|
||||
}
|
||||
}
|
||||
function polyfillAccessibility() {
|
||||
setAccessibilityAttributes(document);
|
||||
if (window.MutationObserver) {
|
||||
new MutationObserver(function(mutations) {
|
||||
forEach.call(mutations, function(mutation) {
|
||||
forEach.call(mutation.addedNodes, setAccessibilityAttributes);
|
||||
});
|
||||
}).observe(document.documentElement, {
|
||||
subtree: true,
|
||||
childList: true
|
||||
});
|
||||
} else {
|
||||
document.addEventListener("DOMNodeInserted", function(event) {
|
||||
setAccessibilityAttributes(event.target);
|
||||
});
|
||||
}
|
||||
}
|
||||
function setAccessibilityAttributes(root) {
|
||||
findElementsWithTagName(root, "SUMMARY").forEach(function(summary) {
|
||||
var details = findClosestElementWithTagName(summary, "DETAILS");
|
||||
summary.setAttribute("aria-expanded", details.hasAttribute("open"));
|
||||
if (!summary.hasAttribute("tabindex")) summary.setAttribute("tabindex", "0");
|
||||
if (!summary.hasAttribute("role")) summary.setAttribute("role", "button");
|
||||
});
|
||||
}
|
||||
function eventIsSignificant(event) {
|
||||
return !(event.defaultPrevented || event.ctrlKey || event.metaKey || event.shiftKey || event.target.isContentEditable);
|
||||
}
|
||||
function onTogglingTrigger(callback) {
|
||||
addEventListener("click", function(event) {
|
||||
if (eventIsSignificant(event)) {
|
||||
if (event.which <= 1) {
|
||||
var element = findClosestElementWithTagName(event.target, "SUMMARY");
|
||||
if (element && element.parentNode && element.parentNode.tagName == "DETAILS") {
|
||||
callback(element.parentNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}, false);
|
||||
addEventListener("keydown", function(event) {
|
||||
if (eventIsSignificant(event)) {
|
||||
if (event.keyCode == 13 || event.keyCode == 32) {
|
||||
var element = findClosestElementWithTagName(event.target, "SUMMARY");
|
||||
if (element && element.parentNode && element.parentNode.tagName == "DETAILS") {
|
||||
callback(element.parentNode);
|
||||
event.preventDefault();
|
||||
}
|
||||
}
|
||||
}
|
||||
}, false);
|
||||
}
|
||||
function triggerToggle(element) {
|
||||
var event = document.createEvent("Event");
|
||||
event.initEvent("toggle", false, false);
|
||||
element.dispatchEvent(event);
|
||||
}
|
||||
function findElementsWithTagName(root, tagName) {
|
||||
return (root.tagName == tagName ? [ root ] : []).concat(typeof root.getElementsByTagName == "function" ? slice.call(root.getElementsByTagName(tagName)) : []);
|
||||
}
|
||||
function findClosestElementWithTagName(element, tagName) {
|
||||
if (typeof element.closest == "function") {
|
||||
return element.closest(tagName);
|
||||
} else {
|
||||
while (element) {
|
||||
if (element.tagName == tagName) {
|
||||
return element;
|
||||
} else {
|
||||
element = element.parentNode;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})();
|
43
examples/script-tag/public/polyfills/find.js
Normal file
43
examples/script-tag/public/polyfills/find.js
Normal file
@ -0,0 +1,43 @@
|
||||
// https://tc39.github.io/ecma262/#sec-array.prototype.find
|
||||
if (!Array.prototype.find) {
|
||||
Array.prototype.find = function(predicate) {
|
||||
'use strict';
|
||||
// 1. Let O be ? ToObject(this value).
|
||||
if (this == null) {
|
||||
throw new TypeError('"this" is null or not defined');
|
||||
}
|
||||
|
||||
var o = Object(this);
|
||||
|
||||
// 2. Let len be ? ToLength(? Get(O, "length")).
|
||||
var len = o.length >>> 0;
|
||||
|
||||
// 3. If IsCallable(predicate) is false, throw a TypeError exception.
|
||||
if (typeof predicate !== 'function') {
|
||||
throw new TypeError('predicate must be a function');
|
||||
}
|
||||
|
||||
// 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
|
||||
var thisArg = arguments[1];
|
||||
|
||||
// 5. Let k be 0.
|
||||
var k = 0;
|
||||
|
||||
// 6. Repeat, while k < len
|
||||
while (k < len) {
|
||||
// a. Let Pk be ! ToString(k).
|
||||
// b. Let kValue be ? Get(O, Pk).
|
||||
// c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
|
||||
// d. If testResult is true, return kValue.
|
||||
var kValue = o[k];
|
||||
if (predicate.call(thisArg, kValue, k, o)) {
|
||||
return kValue;
|
||||
}
|
||||
// e. Increase k by 1.
|
||||
k++;
|
||||
}
|
||||
|
||||
// 7. Return undefined.
|
||||
return undefined;
|
||||
};
|
||||
}
|
67
examples/script-tag/public/show-cert.js
Normal file
67
examples/script-tag/public/show-cert.js
Normal file
@ -0,0 +1,67 @@
|
||||
/**
|
||||
* Пример извлечения информации о сертификате
|
||||
* */
|
||||
;(function () {
|
||||
'use strict';
|
||||
|
||||
var $certificate = document.getElementById('certificate'),
|
||||
$certificateDetails = document.getElementById('certificateDetails'),
|
||||
$certificateInfo = document.getElementById('certificateInfo'),
|
||||
$certificatesError = document.getElementById('certificateInfoError');
|
||||
|
||||
$certificateDetails.style.display = 'none';
|
||||
|
||||
$certificateDetails.addEventListener('toggle', function () {
|
||||
if ($certificateDetails.open) {
|
||||
var thumbprint = $certificate.value;
|
||||
|
||||
$certificateInfo.textContent = 'Запрашивается...';
|
||||
|
||||
window.cryptoPro.getCertificate(thumbprint).then(function (certificate) {
|
||||
Promise.all([
|
||||
certificate.isValid(),
|
||||
certificate.getCadesProp('Version'),
|
||||
certificate.exportBase64(),
|
||||
certificate.getAlgorithm(),
|
||||
certificate.getExtendedKeyUsage(),
|
||||
certificate.getOwnerInfo(),
|
||||
certificate.getIssuerInfo(),
|
||||
certificate.getDecodedExtendedKeyUsage(),
|
||||
certificate.hasExtendedKeyUsage('1.3.6.1.4.1.311.80.1'),
|
||||
certificate.hasExtendedKeyUsage(['1.3.6.1.5.5.7.3.2', '1.3.6.1.4.1.311.10.3.12']),
|
||||
certificate.hasExtendedKeyUsage('1.3.6.1.4.1.311.80.2'),
|
||||
certificate.hasExtendedKeyUsage(['1.3.6.1.5.5.7.3.3', '1.3.6.1.4.1.311.10.3.12']),
|
||||
]).then(function (results) {
|
||||
$certificateInfo.textContent = JSON.stringify({
|
||||
name: certificate.name,
|
||||
issuerName: certificate.issuerName,
|
||||
subjectName: certificate.subjectName,
|
||||
thumbprint: certificate.thumbprint,
|
||||
validFrom: certificate.validFrom,
|
||||
validTo: certificate.validTo,
|
||||
isValid: results[0],
|
||||
version: results[1],
|
||||
base64: results[2],
|
||||
algorithm: results[3],
|
||||
extendedKeyUsage: results[4],
|
||||
ownerInfo: results[5],
|
||||
issuerInfo: results[6],
|
||||
decodedExtendedKeyUsage: results[7],
|
||||
'1.3.6.1.4.1.311.80.1': results[8],
|
||||
"['1.3.6.1.5.5.7.3.2', '1.3.6.1.4.1.311.10.3.12']": results[9],
|
||||
'1.3.6.1.4.1.311.80.2': results[10],
|
||||
"'1.3.6.1.5.5.7.3.3', '1.3.6.1.4.1.311.10.3.12'": results[11],
|
||||
}, null, ' ');
|
||||
}, handleError);
|
||||
}, handleError);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$certificateInfo.textContent = '';
|
||||
});
|
||||
|
||||
function handleError(error) {
|
||||
$certificatesError.textContent = '\n' + error.message;
|
||||
}
|
||||
})();
|
10
jest.config.js
Normal file
10
jest.config.js
Normal file
@ -0,0 +1,10 @@
|
||||
module.exports = {
|
||||
preset: 'ts-jest',
|
||||
testEnvironment: 'jsdom',
|
||||
coveragePathIgnorePatterns: [
|
||||
'<rootDir>/src/vendor/',
|
||||
],
|
||||
testPathIgnorePatterns: [
|
||||
'<rootDir>/examples/',
|
||||
],
|
||||
};
|
8
lib/api/addAttachedSignature.d.ts
vendored
Normal file
8
lib/api/addAttachedSignature.d.ts
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
/**
|
||||
* Добавляет присоединенную подпись к подписанному сообщению по отпечатку сертификата
|
||||
*
|
||||
* @param thumbprint - отпечаток сертификата
|
||||
* @param signedMessage - подписанное сообщение
|
||||
* @returns подпись в формате PKCS#7
|
||||
*/
|
||||
export declare const addAttachedSignature: (thumbprint: string, signedMessage: string | ArrayBuffer) => Promise<string>;
|
9
lib/api/addDetachedSignature.d.ts
vendored
Normal file
9
lib/api/addDetachedSignature.d.ts
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
/**
|
||||
* Добавляет отсоединенную подпись хеша к подписанному сообщению по отпечатку сертификата
|
||||
*
|
||||
* @param thumbprint - отпечаток сертификата
|
||||
* @param signedMessage - подписанное сообщение
|
||||
* @param messageHash - хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит
|
||||
* @returns подпись в формате PKCS#7
|
||||
*/
|
||||
export declare const addDetachedSignature: (thumbprint: string, signedMessage: string | ArrayBuffer, messageHash: string) => Promise<string>;
|
22
lib/api/certificate/certificate.d.ts
vendored
Normal file
22
lib/api/certificate/certificate.d.ts
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
import { TagTranslation } from '../../helpers/_parseCertInfo';
|
||||
import { ExtendedKeysTranslations } from './getDecodedExtendedKeyUsage';
|
||||
export declare type CadesCertificate = any;
|
||||
export declare class Certificate {
|
||||
_cadesCertificate: CadesCertificate;
|
||||
name: string;
|
||||
issuerName: string;
|
||||
subjectName: string;
|
||||
thumbprint: string;
|
||||
validFrom: string;
|
||||
validTo: string;
|
||||
constructor(_cadesCertificate: CadesCertificate, name: string, issuerName: string, subjectName: string, thumbprint: string, validFrom: string, validTo: string);
|
||||
getOwnerInfo(): Promise<TagTranslation[]>;
|
||||
getIssuerInfo(): Promise<TagTranslation[]>;
|
||||
getExtendedKeyUsage(): Promise<string[]>;
|
||||
getDecodedExtendedKeyUsage(): Promise<ExtendedKeysTranslations>;
|
||||
getAlgorithm(): Promise<string>;
|
||||
getCadesProp(propName: any): Promise<any>;
|
||||
isValid(): Promise<boolean>;
|
||||
exportBase64(): Promise<string>;
|
||||
hasExtendedKeyUsage(oids: any): Promise<boolean>;
|
||||
}
|
6
lib/api/certificate/exportBase64.d.ts
vendored
Normal file
6
lib/api/certificate/exportBase64.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Экспортирует сертификат в формате base64
|
||||
*
|
||||
* @returns сертификат в формате base64
|
||||
*/
|
||||
export declare const exportBase64: () => Promise<string>;
|
11
lib/api/certificate/getAlgorithm.d.ts
vendored
Normal file
11
lib/api/certificate/getAlgorithm.d.ts
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
interface AlgorithmInfo {
|
||||
algorithm: string;
|
||||
oid: string;
|
||||
}
|
||||
/**
|
||||
* Возвращает информацию об алгоритме сертификата
|
||||
*
|
||||
* @returns информацию об алгоритме и его OID'е
|
||||
*/
|
||||
export declare const getAlgorithm: () => Promise<AlgorithmInfo>;
|
||||
export {};
|
7
lib/api/certificate/getCadesProp.d.ts
vendored
Normal file
7
lib/api/certificate/getCadesProp.d.ts
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Возвращает указанное внутренее свойство у сертификата в формате Cades
|
||||
*
|
||||
* @param propName = наименование свойства
|
||||
* @returns значение запрошенного свойства
|
||||
*/
|
||||
export declare const getCadesProp: (propName: string) => Promise<any>;
|
9
lib/api/certificate/getDecodedExtendedKeyUsage.d.ts
vendored
Normal file
9
lib/api/certificate/getDecodedExtendedKeyUsage.d.ts
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
export interface ExtendedKeysTranslations {
|
||||
[key: string]: string | null;
|
||||
}
|
||||
/**
|
||||
* Возвращает расшифрованные ОИД'ы сертификата
|
||||
*
|
||||
* @returns словарь расшифрованных ОИД'ов
|
||||
*/
|
||||
export declare const getDecodedExtendedKeyUsage: () => Promise<ExtendedKeysTranslations>;
|
6
lib/api/certificate/getExtendedKeyUsage.d.ts
vendored
Normal file
6
lib/api/certificate/getExtendedKeyUsage.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Возвращает ОИД'ы сертификата
|
||||
*
|
||||
* @returns список ОИД'ов
|
||||
*/
|
||||
export declare const getExtendedKeyUsage: () => Promise<string[]>;
|
10
lib/api/certificate/getInfo.d.ts
vendored
Normal file
10
lib/api/certificate/getInfo.d.ts
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
import { TagsTranslations } from '../../constants/tags-translations';
|
||||
import { TagTranslation } from '../../helpers/_parseCertInfo';
|
||||
/**
|
||||
* Возвращает расшифрованную информацию о сертификате из указанного свойства по тэгам
|
||||
*
|
||||
* @param tags = словарь
|
||||
* @param entitiesPath = путь к разбираемой сущности
|
||||
* @returns расшифрованная информация по отдельным тэгам
|
||||
*/
|
||||
export declare const getInfo: (tags: TagsTranslations[], entitiesPath: string) => Promise<TagTranslation[]>;
|
7
lib/api/certificate/hasExtendedKeyUsage.d.ts
vendored
Normal file
7
lib/api/certificate/hasExtendedKeyUsage.d.ts
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Проверяет наличие ОИД'а (ОИД'ов) у сертификата
|
||||
*
|
||||
* @param oids - ОИД'ы для проверки
|
||||
* @returns флаг наличия ОИД'ов у сертификата
|
||||
*/
|
||||
export declare const hasExtendedKeyUsage: (oids: string | string[]) => Promise<boolean>;
|
1
lib/api/certificate/index.d.ts
vendored
Normal file
1
lib/api/certificate/index.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export * from './certificate';
|
6
lib/api/certificate/isValid.d.ts
vendored
Normal file
6
lib/api/certificate/isValid.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Проверяет действительность сертификата
|
||||
*
|
||||
* @returns флаг валидности
|
||||
*/
|
||||
export declare const isValid: () => Promise<boolean>;
|
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>;
|
9
lib/api/createHash.d.ts
vendored
Normal file
9
lib/api/createHash.d.ts
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
/**
|
||||
* Создает хеш сообщения по ГОСТ Р 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 хеш
|
||||
*/
|
||||
export declare const createHash: (unencryptedMessage: string | ArrayBuffer) => Promise<string>;
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user