{"id":28443952,"url":"https://github.com/maxirmx/design","last_synced_at":"2026-01-30T17:33:02.037Z","repository":{"id":261493184,"uuid":"884384108","full_name":"maxirmx/DeSign","owner":"maxirmx","description":"Delphi CADES signing","archived":false,"fork":false,"pushed_at":"2024-11-25T20:10:26.000Z","size":431,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-29T14:39:33.923Z","etag":null,"topics":["cades","cryptoprocsp","delphi","digitalsignature"],"latest_commit_sha":null,"homepage":"","language":"Pascal","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxirmx.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-06T16:47:26.000Z","updated_at":"2024-11-25T20:08:14.000Z","dependencies_parsed_at":"2024-11-06T21:30:58.356Z","dependency_job_id":"3f5236b0-f8fe-427a-adb0-27824a2fafa0","html_url":"https://github.com/maxirmx/DeSign","commit_stats":null,"previous_names":["maxirmx/design"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/maxirmx/DeSign","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxirmx%2FDeSign","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxirmx%2FDeSign/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxirmx%2FDeSign/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxirmx%2FDeSign/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxirmx","download_url":"https://codeload.github.com/maxirmx/DeSign/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxirmx%2FDeSign/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28916111,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T16:37:38.804Z","status":"ssl_error","status_checked_at":"2026-01-30T16:37:37.878Z","response_time":66,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cades","cryptoprocsp","delphi","digitalsignature"],"created_at":"2025-06-06T08:09:16.821Z","updated_at":"2026-01-30T17:33:02.031Z","avatar_url":"https://github.com/maxirmx.png","language":"Pascal","funding_links":[],"categories":[],"sub_categories":[],"readme":"= Модуль `CadesSigner`\n\nМодуль `CadesSigner` предоставляет функции для интеграции поддержки Электронной Цифровой Подписи (\"ЭЦП\") с использованием алгоритмов, установленных ГОСТ Р 34.10/11/12.\n\n== Содержание\n\n* \u003c\u003cСостав репозитория\u003e\u003e\n* \u003c\u003cУстановка\u003e\u003e\n* \u003c\u003cПубличное API\u003e\u003e\n* \u003c\u003cПримеры использования\u003e\u003e\n* \u003c\u003cОшибки\u003e\u003e\n\n== Состав репозитория\n* Каталог `CadesSigner`: модуль `CadesSigner` и зависимости.  Каталог включает в себя несколько несколько необходимых файлов из библиотеки link:https://sourceforge.net/projects/jedi-apilib/[Jedi jwa]. Этти файлы имеют префикс `Jedi` и они не требуются, если Jedi установлена в полном объёме.\n* Каталог `SampleApp`: демонстрационное\\тестовое приложение.\n* Каталог `Tools`: вспомогательные артефакты разработки, не представлют интереса при интеграции модуля. \n\n== Установка\nМодуль разрабатывался и тестировался с исполльзованием link:https://cryptopro.ru/products/csp[CryptoPro CSP]. \nСоответственно, для сборки и использования модуля CadesSign необходимо установить link:https://cryptopro.ru/products/cades/sdk[КриптоПро ЭЦП SDK]\n\nНовые версии CryptoPro CSP устанавливают свои библиотеки в link:https://docs.cryptopro.ru/cades/usage/cades-manifests?id=%d0%97%d0%b0%d0%b3%d1%80%d1%83%d0%b7%d0%ba%d0%b0-cadesdllxadesdll-%d0%b2-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5%d0%bb%d1%8f-%d1%82%d0%be%d0%bb%d1%8c%d0%ba%d0%be-%d0%b4%d0%bb%d1%8f-windows[режиме изоляции], который не поддержаивается старыми средами разработки, такими как Delphi7 (кажется это так???).\nДля работы приложений, разработанных на Delphi7, необходим установка \"side-by-side\". Говоря по простому, после установки SDK нужно найти библиотеку `cades.dll` и скопировать её в каталог, где будет размещено разрабатываемое приложение. \n\n== Публичное API\n=== Типы\n* `T20Bytes`: Массив из 20 байтов, предназначенный для хранения SHA-1 хеш-суммы (отпечатка) сертификата.\n* `TCertOption`: Запись, представляющая параметры сертификата.\n    ** `FriendlyName` - \"человеческое\" имя сертификатв. Обычно ФИО, но не обязательно. Может быть разным на разных компьютерах, может меняться пользователем\n    ** `Thumbprint` - уникальный идентификатор (\"отпечаток\") сертификата всегда одинаковый, в том числе на разных компьютерах.\n    ** `ThumbprintStr` - читаемое представление \"отпечатка\" в виде строки шестнадцатиричных символов\n    ** `StartDateTime` - дата/время начала действия сертификата \n    ** `EndDateTime` - дата/время окончания действия сертификата \n\n=== Исключения\n\n* `ECadesSignerException`: Исключение, используемое для обработки ошибок при работе с сертификатами и криптографическими операциями.\n  ** `ErrorCode` - код ошибки из Windows API, который указывает на причину сбоя.\n\n=== Функции\n\n==== `GetCertificates`\n\n[source,delphi]\n----\nfunction GetCertificates(const Prefix: string): TList;\n----\n\nВозвращает список сертификатов, доступных в системе, на основе указанного префикса идентификатора криптографического алгоритма (\"OID\").\nВероятно, префикс всегда будет '1.2.643', где\n1: код стандартов International Organization for Standardization(ИСО).\n2: означает, что стандарт разработан организацией членом ИСО \n643: код страны - Россия\n\n* *Параметры*:\n  ** `Prefix`: Строка, которая используется для фильтрации сертификатов по OID.\n\n* *Результат*:\n  ** Возвращает список сертификатов в виде `TList`, содержащий объекты `TCertOption`.\n\n==== `InitializeCades`\n\n[source,delphi]\n----\nprocedure InitializeCades;\n----\n\nЗагружает ```cades.dll```. Эта библиотека нужна при вызове ```SignFile/SignFileStr``` и она грузится динамически с помощью ```LoadLibrary```. См. выше соображения относительно установки.\n\n==== `FinalizeCades`\n\n[source,delphi]\n----\nprocedure FinalizeCades;\n----\n\nВыгружает cades.dll\n\n==== `SignFile`\n\n[source,delphi]\n----\nprocedure SignFile(const FilePath: string; const SigPath: string; const Thumbprint: T20Bytes; const Password: string);\n----\n\nСоздает ЭЦП для файла, используя указанный сертификат.\n\n* *Параметры*:\n  ** `FilePath`: Полный путь к файлу, который нужно подписать.\n  ** `SigPath`: Полный путь к файлу, куда нужно поместить ЭЦП.\n  ** `Thumbprint`: Отпечаток (thumbprint) сертификата в формате `T20Bytes`, который будет использоваться для подписи.\n  ** `Password`: Пароль для доступа к сертификату.\n\n==== `SignFileStr`\n\n[source,delphi]\n----\nprocedure SignFileStr(const FilePath: string; const SigPath: string; const ThumbprintStr: string; const Password: string);\n----\n\nСоздает цифровую подпись для файла, используя указанный сертификат.\n\n* *Параметры*:\n  ** `FilePath`: Полный путь к файлу, который нужно подписать.\n  ** `SigPath`: Полный путь к файлу, куда нужно поместить ЭЦП.\n  ** `ThumbprintStr`: Читаемое представление отпечатка (thumbprint) сертификата в виде строки шестнадцатиричных символов.\n  ** `Password`: Пароль для доступа к сертификату.\n\n=== Примеры использования\n\nПример использования публичного API находится в файде DeSign.dpr\n\n=== Ошибки\n\nПри возникновении ошибок во время операций с сертификатами и файлами модуль `CadesSigner` генерирует исключения типа `ECadesSignerException`, которые содержат сообщение об ошибке и код ошибки. Например, ошибка `ERR_OPEN_STORE_FAILED` указывает на невозможность открытия хранилища сертификатов.\n\n=== Проверка подписи\n\nСформированную подпись можно проверить с помощью link:https://dss.cryptopro.ru/verify/[тестовой службы проверки подписи и сертификатов «КриптоПро SVS»].  \n\n---\n\nЭтот README описывает только публичный интерфейс модуля. Подробная документация по внутренним методам, используемым для обработки файлов и криптографических операций, доступна в исходном коде.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxirmx%2Fdesign","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxirmx%2Fdesign","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxirmx%2Fdesign/lists"}