Skip to content
maxirmxPublic

About

Delphi CADES signing

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Latest commit

 

History

22 Commits

Folders and files

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.

InitializeCades

procedure InitializeCades;

Загружает cades.dll. Эта библиотека нужна при вызове SignFile/SignFileStr и она грузится динамически с помощью LoadLibrary. См. выше соображения относительно установки.

FinalizeCades

procedure FinalizeCades;

Выгружает cades.dll

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 описывает только публичный интерфейс модуля. Подробная документация по внутренним методам, используемым для обработки файлов и криптографических операций, доступна в исходном коде.

About

Delphi CADES signing

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages