Repository navigation
Соподписание по хешу и проверка ГОСТ с параметрами КриптоПро - #1
Draft
sozertsatel wants to merge 4 commits into
Draft
sozertsatel wants to merge 4 commits into
sozertsatel wants to merge 4 commits into
Conversation
Подпись с нестандартным именем находится по содержимому, в очередь явно попадает режим «добавить к файлу / создать новую», перед перезаписью и исключением подписантов спрашивается подтверждение. Проверка принимает signatureAlgorithm КриптоПро с параметрами ГОСТ. Co-authored-by: sozertsatel <sozertsatel@users.noreply.github.com>
В истории версий — запись v1.3.0 от 09.10.2026. Номер версии в метаданных сборки без суффикса коммита, чтобы файл и продукт читали 1.3.0. Co-authored-by: sozertsatel <sozertsatel@users.noreply.github.com>
По push в эту ветку и в main (и вручную) публикуется SignService.exe на тег test-latest. Задание выполняется только в форке sozertsatel/SignService. Co-authored-by: sozertsatel <sozertsatel@users.noreply.github.com>
Галочка .bak в настройках по умолчанию выключена. На главном окне вместо автора показана версия, кнопки списка стоят над файлами, «Объединить .sig» убран из меню, режим первого файла можно применить ко всей очереди. Co-authored-by: sozertsatel <sozertsatel@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Зачем
В 1.2.0 соподписание искало только файл с именем ровно
<документ>.sig. Подпись960-07-1529-Д-ИС20-27-АС-.pdf .sig(дефис и пробел в имени) не находилась, и программа молча создавала новый одноподписантный.sig. Подписанты КриптоПро с параметрами вsignatureAlgorithmотклонялись проверкой с текстом «unrecognised signature parameters provided», хотя сами значения подписи ГОСТ Р 34.10-2012 верны.Что изменилось
.sig/.p7s/.p7m, у которыхmessageDigestсовпадает с хешем документа. Совпадение по имени больше не требуется. Перетащенный файл подписи с чужим именем сопоставляется так же; если хеш ни к одному документу очереди не подходит, имена перечисляются в статусе, а не пропускаются молча.<документ>.sig, в плане сказано, что он будет заменён; про резервную копию говорится, только если она включена в настройках.<документ>.sigбудет перезаписан без объединения, или если при объединении будут исключены подписанты с неверной привязкой к документу. Отказ ничего не записывает.<документ>.sigбез молчаливой перезаписи.signatureAlgorithm, значение подписи ГОСТ Р 34.10-2012 (256/512) и ГОСТ Р 34.10-2001 проверяется по подписанным атрибутам тем же ключом сертификата. ПривязкаmessageDigestк документу по-прежнему обязательна.Версия 1.3.1 — по замечаниям к тестовой сборке
.bakв «Настройках…», по умолчанию выключена, состояние сохраняется.Главное окно 1.3.1: кнопки над списком, версия внизу
Тестовая сборка
Постоянная ссылка (pre-release
test-latest, не latest): https://github.com/sozertsatel/SignService/releases/download/test-latest/SignService.exeWorkflow
.github/workflows/test-latest.ymlпересобирает exe теми же флагами, что и релиз, сдвигает тегtest-latestна новый коммит и заменяет файлы. Запускается при push вcursor/cosign-discovery-gost-cb6fи вmain, а также вручную. На репозиторииzaynullinmi/SignServiceзадание пропускается (github.repository == 'sozertsatel/SignService').Автообновление программы ходит только в
zaynullinmi/SignService/releases/latest. Этот pre-release в форке туда не попадает; тегtest-latestк тому же не разбирается как номер версии.Проверка на образцах
Образцы (PDF, восьмиподписантный файл с нестандартным именем и одноподписантный файл SignService) использовались только локально и в репозиторий не входят. Тест подключается, если задан
SIGNSERVICE_SAMPLESили рядом лежит архив с образцами; иначе пропускается.Объединение восьмиподписантного файла с подписью SignService по тому же PDF:
Полный прогон
dotnet run --project tests/SignService.Tests -c Releaseзавершился сALL TESTS PASSED.Интерфейс
Очередь: добавить подпись к найденному файлу
Очередь: создать новый файл подписи
Подтверждение перед перезаписью и исключением подписантов
После подписи: счётчик добавленной подписи
Предупреждение об исключённых подписантах
To show artifacts inline, enable in settings.