Модуль CadesSigner
предоставляет функции для интеграции поддержки Электронной Цифровой Подписи ("ЭЦП") с использованием алгоритмов, установленных ГОСТ Р 34.10/11/12.
-
Каталог
CadesSigner
: модульCadesSigner
и зависимости. Каталог включает в себя несколько несколько необходимых файлов из библиотеки Jedi jwa. Этти файлы имеют префиксJedi
и они не требуются, если Jedi установлена в полном объёме. -
Каталог
SampleApp
: демонстрационное\тестовое приложение. -
Каталог
Tools
: вспомогательные артефакты разработки, не представлют интереса при интеграции модуля.
Модуль разрабатывался и тестировался с исполльзованием CryptoPro CSP. Соответственно, для сборки и использования модуля CadesSign необходимо установить КриптоПро ЭЦП SDK
Новые версии CryptoPro CSP устанавливают свои библиотеки в режиме изоляции, который не поддержаивается старыми средами разработки, такими как Delphi7 (кажется это так???).
Для работы приложений, разработанных на Delphi7, необходим установка "side-by-side". Говоря по простому, после установки SDK нужно найти библиотеку cades.dll
и скопировать её в каталог, где будет размещено разрабатываемое приложение.
-
T20Bytes
: Массив из 20 байтов, предназначенный для хранения SHA-1 хеш-суммы (отпечатка) сертификата. -
TCertOption
: Запись, представляющая параметры сертификата.-
FriendlyName
- "человеческое" имя сертификатв. Обычно ФИО, но не обязательно. Может быть разным на разных компьютерах, может меняться пользователем -
Thumbprint
- уникальный идентификатор ("отпечаток") сертификата всегда одинаковый, в том числе на разных компьютерах. -
ThumbprintStr
- читаемое представление "отпечатка" в виде строки шестнадцатиричных символов -
StartDateTime
- дата/время начала действия сертификата -
EndDateTime
- дата/время окончания действия сертификата
-
-
ECadesSignerException
: Исключение, используемое для обработки ошибок при работе с сертификатами и криптографическими операциями.-
ErrorCode
- код ошибки из Windows API, который указывает на причину сбоя.
-
function GetCertificates(const Prefix: string): TList;
Возвращает список сертификатов, доступных в системе, на основе указанного префикса идентификатора криптографического алгоритма ("OID"). Вероятно, префикс всегда будет '1.2.643', где 1: код стандартов International Organization for Standardization(ИСО). 2: означает, что стандарт разработан организацией членом ИСО 643: код страны - Россия
-
Параметры:
-
Prefix
: Строка, которая используется для фильтрации сертификатов по OID.
-
-
Результат:
-
Возвращает список сертификатов в виде
TList
, содержащий объектыTCertOption
.
-
procedure SignFile(const FilePath: string; const SigPath: string; const Thumbprint: T20Bytes; const Password: string);
Создает ЭЦП для файла, используя указанный сертификат.
-
Параметры:
-
FilePath
: Полный путь к файлу, который нужно подписать. -
SigPath
: Полный путь к файлу, куда нужно поместить ЭЦП. -
Thumbprint
: Отпечаток (thumbprint) сертификата в форматеT20Bytes
, который будет использоваться для подписи. -
Password
: Пароль для доступа к сертификату.
-
procedure SignFileStr(const FilePath: string; const SigPath: string; const ThumbprintStr: string; const Password: string);
Создает цифровую подпись для файла, используя указанный сертификат.
-
Параметры:
-
FilePath
: Полный путь к файлу, который нужно подписать. -
SigPath
: Полный путь к файлу, куда нужно поместить ЭЦП. -
ThumbprintStr
: Читаемое представление отпечатка (thumbprint) сертификата в виде строки шестнадцатиричных символов. -
Password
: Пароль для доступа к сертификату.
-
При возникновении ошибок во время операций с сертификатами и файлами модуль CadesSigner
генерирует исключения типа ECadesSignerException
, которые содержат сообщение об ошибке и код ошибки. Например, ошибка ERR_OPEN_STORE_FAILED
указывает на невозможность открытия хранилища сертификатов.
Сформированную подпись можно проверить с помощью тестовой службы проверки подписи и сертификатов «КриптоПро SVS».
Этот README описывает только публичный интерфейс модуля. Подробная документация по внутренним методам, используемым для обработки файлов и криптографических операций, доступна в исходном коде.