Skip to content

maxirmx/DeSign

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Модуль CadesSigner

Модуль 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 и скопировать её в каталог, где будет размещено разрабатываемое приложение.

Публичное API

Типы

  • T20Bytes: Массив из 20 байтов, предназначенный для хранения SHA-1 хеш-суммы (отпечатка) сертификата.

  • TCertOption: Запись, представляющая параметры сертификата.

    • FriendlyName - "человеческое" имя сертификатв. Обычно ФИО, но не обязательно. Может быть разным на разных компьютерах, может меняться пользователем

    • Thumbprint - уникальный идентификатор ("отпечаток") сертификата всегда одинаковый, в том числе на разных компьютерах.

    • ThumbprintStr - читаемое представление "отпечатка" в виде строки шестнадцатиричных символов

    • StartDateTime - дата/время начала действия сертификата

    • EndDateTime - дата/время окончания действия сертификата

Исключения

  • ECadesSignerException: Исключение, используемое для обработки ошибок при работе с сертификатами и криптографическими операциями.

    • ErrorCode - код ошибки из Windows API, который указывает на причину сбоя.

Функции

GetCertificates

function GetCertificates(const Prefix: string): TList;

Возвращает список сертификатов, доступных в системе, на основе указанного префикса идентификатора криптографического алгоритма ("OID"). Вероятно, префикс всегда будет '1.2.643', где 1: код стандартов International Organization for Standardization(ИСО). 2: означает, что стандарт разработан организацией членом ИСО 643: код страны - Россия

  • Параметры:

    • Prefix: Строка, которая используется для фильтрации сертификатов по OID.

  • Результат:

    • Возвращает список сертификатов в виде TList, содержащий объекты TCertOption.

SignFile

procedure SignFile(const FilePath: string; const SigPath: string; const Thumbprint: T20Bytes; const Password: string);

Создает ЭЦП для файла, используя указанный сертификат.

  • Параметры:

    • FilePath: Полный путь к файлу, который нужно подписать.

    • SigPath: Полный путь к файлу, куда нужно поместить ЭЦП.

    • Thumbprint: Отпечаток (thumbprint) сертификата в формате T20Bytes, который будет использоваться для подписи.

    • Password: Пароль для доступа к сертификату.

SignFileStr

procedure SignFileStr(const FilePath: string; const SigPath: string; const ThumbprintStr: string; const Password: string);

Создает цифровую подпись для файла, используя указанный сертификат.

  • Параметры:

    • FilePath: Полный путь к файлу, который нужно подписать.

    • SigPath: Полный путь к файлу, куда нужно поместить ЭЦП.

    • ThumbprintStr: Читаемое представление отпечатка (thumbprint) сертификата в виде строки шестнадцатиричных символов.

    • Password: Пароль для доступа к сертификату.

Примеры использования

Пример использования публичного API находится в файде DeSign.dpr

Ошибки

При возникновении ошибок во время операций с сертификатами и файлами модуль CadesSigner генерирует исключения типа ECadesSignerException, которые содержат сообщение об ошибке и код ошибки. Например, ошибка ERR_OPEN_STORE_FAILED указывает на невозможность открытия хранилища сертификатов.

Проверка подписи

Сформированную подпись можно проверить с помощью тестовой службы проверки подписи и сертификатов «КриптоПро SVS».


Этот README описывает только публичный интерфейс модуля. Подробная документация по внутренним методам, используемым для обработки файлов и криптографических операций, доступна в исходном коде.