feat: экспорт документов в .sig v2.0 + manifest.json (верификатор) #65

Merged
ant merged 6 commits from feat/sig-v2-export into dev 2026-06-04 05:48:51 +00:00
Owner

Что

Перевод экспорта документов на самодостаточный формат detached-подписи .sig v2.0 (вместо signature.txt v1.0.0) — для нового Верификатора документов (C9S/verificator).

Изменения

  • cooptypes (Cooperative.Document): канонический тип SigFile v2.0 + PackageManifest + OID-константы (secp256k1/SHA-256). Единый источник формата.
  • desktop (prepareDocumentArchive / prepareDocumentPackageArchive): архив кладёт <doc>.sig (JSON v2.0) со встроенным сертификатом подписанта; пакет — manifest.json + <doc>.sig на документ.

Ключевые решения

  • canonicalization: 'legacy-node-stringify' — реальные документы подписаны SDK через SHA-256(JSON.stringify(meta)). SDK на JCS не переключаем (хэши уходят в блокчейн); верификатор dual-mode валидирует legacy.
  • canonical (doc_hash/meta_hash/hash) кладём как есть из агрегата: doc_hash из фабрики в верхнем регистре (SHA-256 байтов PDF), meta_hash/hash из SDK в нижнем. Верификатор сверяет цепочку по этим строкам.
  • Подпись/хэши не пересчитываются — берём готовые из подписанного документа.

Риск

Минимальный: трогается только lib-функция экспорта (UI/вёрстка не затронуты) + аддитивный тип в cooptypes. signature.txt больше не пишется; уже скачанные архивы верификатор принимает как legacy.

Задача: [794-4] E2 — Верификатор документов v1.

## Что Перевод экспорта документов на самодостаточный формат detached-подписи `.sig` v2.0 (вместо `signature.txt` v1.0.0) — для нового **Верификатора документов** (C9S/verificator). ### Изменения - **cooptypes** (`Cooperative.Document`): канонический тип `SigFile` v2.0 + `PackageManifest` + OID-константы (secp256k1/SHA-256). Единый источник формата. - **desktop** (`prepareDocumentArchive` / `prepareDocumentPackageArchive`): архив кладёт `<doc>.sig` (JSON v2.0) со встроенным сертификатом подписанта; пакет — `manifest.json` + `<doc>.sig` на документ. ### Ключевые решения - `canonicalization: 'legacy-node-stringify'` — реальные документы подписаны SDK через `SHA-256(JSON.stringify(meta))`. SDK на JCS **не** переключаем (хэши уходят в блокчейн); верификатор dual-mode валидирует legacy. - `canonical` (`doc_hash`/`meta_hash`/`hash`) кладём **как есть** из агрегата: `doc_hash` из фабрики в верхнем регистре (SHA-256 байтов PDF), `meta_hash`/`hash` из SDK в нижнем. Верификатор сверяет цепочку по этим строкам. - Подпись/хэши не пересчитываются — берём готовые из подписанного документа. ### Риск Минимальный: трогается только lib-функция экспорта (UI/вёрстка не затронуты) + аддитивный тип в cooptypes. `signature.txt` больше не пишется; уже скачанные архивы верификатор принимает как legacy. Задача: [794-4] E2 — Верификатор документов v1.
claude added 2 commits 2026-06-03 08:03:48 +00:00
claude added 3 commits 2026-06-03 18:46:53 +00:00
claude added 1 commit 2026-06-03 19:01:23 +00:00
ant approved these changes 2026-06-04 05:48:45 +00:00
ant merged commit e54115d28f into dev 2026-06-04 05:48:51 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: C9S/mono#65