Skip to content

Исправить обработку подписей и МЧД; добавить разделение и удаление подписанта - #2

Closed
debug23win wants to merge 1 commit into
zaynullinmi:mainfrom
debug23win:codex/signature-review-fixes
Closed

debug23win wants to merge 1 commit into
zaynullinmi:mainfrom
debug23win:codex/signature-review-fixes

Conversation

@debug23win

Copy link
Copy Markdown
Collaborator

Добавлены команды разделения групповой CMS-подписи на отдельные подписи и исключения выбранного подписанта с сохранением исходного файла.

Исправлены проверка подписи МЧД, чтение актуальных файлов и метаданных, конфликты выходных файлов, обработка прикреплённых/откреплённых подписей и сброс статусов очереди. Обновление приложения использует атомарную замену EXE с резервной копией и откатом при отказе запуска. Добавлены регрессионные тесты, документация и проверки CI перед публикацией.

Проверено: Release-сборка — 0 ошибок и предупреждений; полный набор тестов — ALL TESTS PASSED; опубликован автономный Windows x64 exe. TSA-тест пропущен из-за отсутствия OpenSSL. Реальный ГОСТ-токен и интерфейс вручную не проверялись. Проверка МЧД не подтверждает доверие цепочке, отзыв или юридические полномочия.

zaynullinmi pushed a commit that referenced this pull request Oct 7, 2026
…ое автообновление

- «Разделить групповую подпись» и «Исключить подписанта» — в меню
  «Инструменты» и в контекстном меню файла (для «имя.sig» рядом);
  подписанты различаются по SignerIdentifier даже при одинаковых ФИО,
  последнего подписанта исключить нельзя, исходный файл не меняется.
- Приложенная подпись другого лица или смена сертификата возвращают
  подписанный файл в очередь (смена определяется по отпечатку —
  обновление списка сертификатов статусы не сбрасывает).
- Автообновление: помощник PowerShell с резервной копией, повторами
  замены занятого exe и откатом при неудачном запуске.
- Настройки и хранилище PFX можно открыть в отдельной папке (тесты
  больше не пишут в %AppData%).
- Контекстные команды недоступны во время подписания.
- CI: тесты на Windows перед сборкой exe.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BtHSRXSuM8qTBTUBe29624
zaynullinmi added a commit that referenced this pull request Oct 7, 2026
Сведение PR #3 (проверка ЭЦП без КриптоПро) с переработкой интерфейса, перенос разделения подписи, исключения подписанта и надёжного автообновления из PR #2, исправления по ревью и автоматическая сборка архива релиза.

Copy link
Copy Markdown
Owner

Спасибо за доработки! Закрываю PR: он конфликтует с PR #3, а изменения из него перенесены в #4 и вышли в v1.2.0.

Перенесено (с доработками):

  • разделение групповой подписи и исключение подписанта (CmsMerger.GetSigners/RemoveSigner, CmsExtractor.SplitSignatureFile/RemoveSignerFromFile, SignerDialog) — в меню «Инструменты» и в контекстном меню файла;
  • возврат подписанного файла в очередь при новой приложенной подписи или смене сертификата; смена определяется по отпечатку, чтобы обновление списка сертификатов не сбрасывало статусы;
  • помощник автообновления на PowerShell с резервной копией и откатом; добавлены повторы File.Replace, пока exe занят;
  • изолированные папки настроек и PFX для тестов; ReviewRegressionTests; запуск тестов на Windows в CI.

Не перенесено:

🤖 Generated with Claude Code


Generated by Claude Code

@zaynullinmi zaynullinmi closed this Oct 7, 2026
zaynullinmi pushed a commit that referenced this pull request Oct 9, 2026
В коде PR #2 объединение сверяло только messageDigest, МЧД проверялась
без доверия и отзыва, а сертификат оставшегося подписанта терялся
вместе с исключённым входом. Тесты закрепляют, что в текущей версии:
- изменённое значение подписи при верном messageDigest исключается
  в «Объединить .sig», «Собрать контейнер» и при соподписании;
- сертификат, который был только в контейнере исключённого подписанта,
  сохраняется, и оставшаяся подпись проходит проверку;
- МЧД без номера или даты выдачи, с просроченным или недоверенным
  самоподписанным сертификатом руководителя не проходит как «Ok».

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BtHSRXSuM8qTBTUBe29624
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants