doc/IT/CADES/cadescom.dll_vs_cryptcp.exe.md

147 lines
13 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### cadescom.dll vs cryptcp.exe_.md
Детальное сравнение функциональных возможностей **cadescom.dll** и **cryptcp.exe** с указанием *уникальных* функций каждого инструмента.
## cadescom.dll (COMбиблиотека)
**Ключевые особенности:**
* работает через COMинтерфейс (ActiveX/OLE Automation);
* интегрируется в приложения (в т. ч. браузерные плагины);
* ориентирована на интерактивное использование в GUIсреде.
**Функции, которых *нет* в cryptcp.exe:**
1. **Интеграция в веб‑браузеры**
* позволяет подписывать данные прямо на веб‑страницах через КриптоПро ЭЦП Browser plugin;
* поддерживает подписание форм, файлов, текстовых блоков без перехода в консоль.
2. **Работа с интерактивными диалогами выбора сертификата**
* выводит стандартное окно Windows для выбора сертификата (с предпросмотром свойств);
* не требует заранее указывать отпечаток сертификата (`-thumbprint`) в команде.
3. **Поддержка усовершенствованных подписей (CAdES) «из коробки»**
* нативная работа с профилями CAdESBES, CAdEST, CAdESC, CAdESX Long и др.;
* автоматическое добавление штампов времени (TSP) и архивных меток (CAdESA) при настройке.
4. **Гибкая настройка параметров подписи через свойства объектов**
* управление атрибутами подписи (например, `ContentTimestamp`, `SignatureTimestamp`) через свойства COMобъектов;
* возможность задавать произвольные атрибуты (unsigned attributes) без жёсткой командной строки.
5. **Поддержка отсоединённой и присоединённой подписи в одном интерфейсе**
* переключение между режимами через свойство `CPSigner.Options`;
* не требует разных команд для разных типов подписи.
6. **Интеграция с системами документооборота**
* встраивание в ERP, CRM, ECM через API (например, в 1С, SharePoint);
* обработка потоков данных без сохранения временных файлов.
---
## cryptcp.exe (утилита командной строки)
**Ключевые особенности:**
* работает в консольном режиме;
* подходит для скриптов, автоматизации, серверных задач;
* требует явного указания параметров через аргументы командной строки.
**Функции, которых *нет* в cadescom.dll:**
1. **Пакетная обработка файлов**
* подписание/шифрование множества файлов одной командой (например, `cryptcp -sign -dir input_files/ output_signs/`);
* рекурсивный обход директорий.
2. **Работа с контейнерами ключей без установки в систему**
* прямое обращение к файлам контейнеров (`.pfx`, `.p12`) через параметр `-pin`;
* не требует импорта сертификата в хранилище Windows.
3. **Расширенные опции шифрования**
* поддержка алгоритмов ГОСТ Р 34.102012 + ГОСТ Р 34.112012 (256/512 бит);
* настройка параметров шифрования (режим, ключ) через ключи командной строки.
4. **Создание запросов на сертификаты (CSR)**
* генерация CSR с заданными OID и расширениями (например, `cryptcp -creatrq -dn "CN=User" -provtype 75 -certusage 1.3.6.1.5.5.7.3.2`);
* экспорт в файл без участия GUI.
5. **Управление хранилищами сертификатов**
* установка/удаление сертификатов из хранилищ (`-inst`, `-del`);
* просмотр списка сертификатов в хранилище (`-list`).
6. **Работа с откреплёнными штампами времени (RFC 3161)**
* получение TSPштампа в отдельный файл (`-tsp`);
* проверка подписи с внешним TSPфайлом.
7. **Хеширование файлов с выводом в консоль**
* вычисление хэша по ГОСТ Р 34.112012 (`cryptcp -hash -alg GR3411-2012-512 file.txt`);
* вывод результата в stdout для использования в скриптах.
8. **Поддержка шифрования в формате CMS с настройками**
* указание алгоритма шифрования, режима, длины ключа через параметры;
* создание зашифрованных сообщений с несколькими получателями.
9. **Автоматизация через переменные окружения**
* передача паролей, путей к контейнерам через переменные (например, `CRYPTO_PIN=`);
* интеграция в CI/CDпайплайны.
---
## Итоговый вывод
**Используйте cadescom.dll, если:**
* нужна интеграция в GUIприложение или браузер;
* требуется интерактивный выбор сертификата;
* необходимо поддерживать CAdES с расширенными профилями (X Long, A);
* важна работа с потоками данных без временных файлов.
**Используйте cryptcp.exe, если:**
* нужна автоматизация через скрипты/команды;
* требуется пакетная обработка файлов;
* необходимо управлять хранилищами сертификатов из консоли;
* нужно создавать CSR или работать с внешними TSPштампами;
* важна поддержка ГОСТ‑алгоритмов для хеширования/шифрования.
### box
Разве "Поддержка усовершенствованных подписей (CAdES) «из коробки»" нет в cryptcp.exe?
Да, утилита **cryptcp.exe** действительно поддерживает работу с усовершенствованными подписями CAdES, но для этого требуется явное указание соответствующих параметров в командной строке и выполнение дополнительных условий. В отличие от cadescom.dll, где поддержка CAdES реализована через COM-интерфейс «из коробки», в cryptcp.exe это требует явной настройки команд. [```6```](https://cryptostore.ru/upload/keys/%D0%96%D0%A2%D0%AF%D0%98_00087-01%2093%2001_%20%D0%9F%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8%20%D0%B4%D0%BB%D1%8F%20%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%B8%20%D0%B8%20%D1%88%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%281%29.pdf)[```2```](https://ca.kontur.ru/Files/userfiles/file/Faq/cryptopro-license/5.0R2/zhtyai00101-02-93-01-prilozhenie-komandnoy-stroki-cryptcp.pdf)
## Поддержка CAdES в cryptcp.exe
В cryptcp.exe можно создавать и проверять подписи форматов CAdES-BES, CAdES-T и CAdES-X Long Type 1. Для этого используются специальные опции командной строки:
* **-cadesbes** — для создания или проверки подписи CAdES-BES;
* **-cadest** — для работы с CAdES-T;
* **-xlongtype1** — для CAdES-X Long Type 1.
Пример команды для создания подписи CAdES-X Long Type 1:
```
cryptcp.exe -sign -dn "CN=Иванов Петр" -cadesTSA http://tsp.test/tsp_root/tsp.srf -xlongtype1 C:\data\test.txt C:\data\test.txt.logn_sgn
```
Здесь:
* `-sign` — команда создания подписи;
* `-dn "CN=Иванов Петр"` — выбор сертификата по имени;
* `-cadesTSA` — указание URL-адреса службы штампов времени;
* `-xlongtype1` — указание типа подписи CAdES-X Long Type 1;
* `C:\data\test.txt` — исходный файл;
* `C:\data\test.txt.logn_sgn` — файл с результатом подписи. [```6```](https://cryptostore.ru/upload/keys/%D0%96%D0%A2%D0%AF%D0%98_00087-01%2093%2001_%20%D0%9F%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8%20%D0%B4%D0%BB%D1%8F%20%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%B8%20%D0%B8%20%D1%88%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%281%29.pdf)
Для проверки подписи используется аналогичная опция, например:
```
cryptcp.exe -verify -xlongtype1 C:\data\test.txt.logn_sgn
```
## Дополнительные требования
Для работы с усовершенствованными подписями в cryptcp.exe необходимо:
1. Установить ПО **КриптоПро TSP Client** и **КриптоПро OCSP Client** с действующими лицензиями. [```6```](https://cryptostore.ru/upload/keys/%D0%96%D0%A2%D0%AF%D0%98_00087-01%2093%2001_%20%D0%9F%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8%20%D0%B4%D0%BB%D1%8F%20%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%B8%20%D0%B8%20%D1%88%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%281%29.pdf)
2. Настроить доступ к службе штампов времени (TSA), если требуется добавление штампа времени.
3. Убедиться, что цепочка сертификатов проверена и все необходимые компоненты (например, CRL  списки отозванных сертификатов) доступны.
## Сравнение с cadescom.dll
| Критерий | cadescom.dll | cryptcp.exe |
|---|---|---|
| **Способ настройки** | Поддержка CAdES реализована через COM-интерфейс, не требует явных параметров для базовых операций | Требуется явное указание опций в командной строке (например, `-cadesbes`, `-cadest`, `-xlongtype1`)|
| **Интеграция** | Предназначена для интеграции в приложения через COM | Работает в консольном режиме, подходит для скриптов и автоматизации |
| **Гибкость** | Позволяет гибко настраивать параметры через свойства объектов | Параметры задаются через командные опции, меньше возможностей для тонкой настройки в runtime |
Таким образом, хотя cryptcp.exe поддерживает CAdES, это требует явной настройки команд и дополнительных компонентов, в то время как cadescom.dll предоставляет более интегрированное решение для работы с CAdES в программных продуктах.