DS10 — Gói container FES (gcpn.zip)

Yếu tố kích hoạt S4, kết thúc Phần II

Người kiểm định (hoặc đối tác kinh doanh) muốn nhìn thấy chuỗi — chứ không chỉ dưới dạng tóm tắt. Họ không nhận repo, không có quyền truy cập Git, không có lịch sử. Họ nhận một gói: *.gcpn.zip — bộ xác minh vật lý của quy trình ký.

Manifest và kho lưu trữ ZIP — hai nhiệm vụ tách biệt

Nhiệm vụ Nơi chứa Nội dung
Manifest chính tệp .gcpn.md Liệt kê tất cả artifact kèm SHA-256 (bảng xác minh + các JSON artifact được nhúng) — nó xác định những gì thuộc về giao dịch
Kho lưu trữ ZIP *.gcpn.zip Các tệp vật lý để bàn giao: các artifact dạng văn bản (được trích xuất từ .gcpn.md dưới dạng .json/.txt/.md/.v7g.md) cộng với các artifact nhị phân dưới dạng tệp riêng biệt

Các artifact dạng văn bản (.json, .txt, .md, .v7g.md) tồn tại bên trong .gcpn.md (MD-Fences) — trong ZIP, chúng được hiển thị dưới dạng tệp riêng lẻ (có thể trích xuất). Các artifact nhị phân (PDF, PNG, SVG, …) không thể tồn tại trong tệp MD — chúng được đưa vào ZIP dưới dạng tệp riêng biệt; thông thường chúng đã được tham chiếu hoặc xác định bằng hash SHA-256 trong các cấu trúc dữ liệu JSON artifact (ví dụ evidence.facsimile_ref.sha256) — hash là định danh, ZIP cung cấp phần thân.

Cấu trúc gói

GCPN-SIG-260913-001.gcpn.zip
│
├── container.gcpn.md                      ← Manifest + textbasierte Artefakte (JSON-Fences) + .v7g.md
│                                            (identisch mit der Form im Git-Repo)
├── MANIFEST.json                          ← maschinen-lesbares Verzeichnis (alle SHA-256, package_sha256)
│
├── source/                                ← textbasiert: Quell-Dokument, aus dem Container extrahierbar
│   ├── gvb.md                             ← Quell-Dokument (referenced_doc)
│   └── gvb.md.v7g.md                      ← Sidecar
├── signature/                             ← textbasiert: Signatur-Doc + Events (aus MD-Fences)
│   ├── signature-doc.json                 ← Signatur-Doc (DS02) + .v7g.md
│   ├── event-offered.json                 ← Events (DS03) + .v7g.md
│   ├── event-accepted.json
│   ├── event-signed.json
│   ├── facsimile.svg                      ← BINÄR: Grafik physisch (Standard) — im JSON nur als SHA-256 referenziert
│   ├── facsimile.png                      ← BINÄR: Fallback
│   └── facsimile.sha256                   ← Checksums
├── fes/                                   ← binäre FES-Artefakte
│   ├── fes-envelope-report.json           ← Envelope-Report (DS09) + .v7g.md (textbasiert)
│   ├── contract-signed.pdf                ← BINÄR: signiertes PDF (PAdES)
│   ├── certificate-of-completion.pdf      ← BINÄR: Dienst-Report
│   └── pdfsig-report.txt                  ← Krypto-Prüfung (externes Tool)
└── README.md                              ← Verifikations-Anleitung (DS04-Routine)

Cách đọc: Manifest (.gcpn.md) nêu tên từng artifact kèm SHA-256 — ZIP cung cấp phần thân tương ứng. Các artifact dạng văn bản được chứa ngay trong manifest (và trong ZIP được trích xuất thêm dưới dạng tệp riêng lẻ); các artifact nhị phân chỉ tồn tại vật lý trong ZIP, nhưng trong manifest được xác định đầy đủ qua SHA-256 của chúng. Nhờ vậy, người kiểm định có thể xác minh từng phần thân đối chiếu với giá trị hash nêu trong manifest.

Manifest xác minh

MANIFEST.json gộp tất cả SHA-256 của gói:

{
  "$schema": "https://gitcover.org/schemas/gcpn-manifest-1.0.schema.json",
  "uuidV7": "<deterministische uuidV7>",
  "package": "GCPN-SIG-260913-001",
  "created_at": "2026-09-13T16:45:00Z",
  "created_by": "E1",
  "artifacts": [
    {"path": "container.md", "sha256": "…"},
    {"path": "source/gvb.md", "sha256": "…"},
    {"path": "signature/signature-doc.json", "sha256": "…"},
    {"path": "signature/event-offered.json", "sha256": "…"},
    {"path": "signature/event-accepted.json", "sha256": "…"},
    {"path": "signature/event-signed.json", "sha256": "…"},
    {"path": "signature/facsimile.svg", "sha256": "8fcffe0b…1006"},
    {"path": "signature/facsimile.png", "sha256": "d330348e…81fef"},
    {"path": "fes/fes-envelope-report.json", "sha256": "…"},
    {"path": "fes/contract-signed.pdf", "sha256": "7a054fa5…272b"}
  ],
  "verification_routine": "siehe README.md (DS04-Routine)",
  "package_sha256": "<SHA-256 des ZIP selbst>"
}

Quy tắc Facsimile: vật lý với FES, tham chiếu trong các trường hợp còn lại

Quan trọng (quy tắc cốt lõi của Saga):

Phương thức Facsimile trong gói Lý do
Textform (Phần I) Tham chiếu (SHA-256 + dấu guid) Đồ họa nằm trong thư mục PII của tenant repo; chuỗi chỉ tham chiếu, gói ghi nhận tham chiếu đó
FES (Phần II) Vật lý (SVG + PNG) Gói là bản bàn giao hoàn chỉnh; người kiểm định cần đồ họa để kiểm tra mà không cần quyền truy cập repo

Sự khác biệt này là có chủ ý: Với Textform, asset vẫn nằm tại nơi nó được quản lý theo đúng nghĩa GoBD (thư mục PII, sidecar, xác minh SHA); với FES, nó được sao chép — gói là bản đầy đủ (bản gốc vẫn giữ nguyên trong repo; SHA-256 chứng minh tính đồng nhất).

Quy trình xác minh trong gói

README.md dẫn người kiểm định qua quy trình (DS04, nguyên sinh trong gói):

# 1. Manifest-Integrität
sha256sum -c <(jq -r '.artifacts[] | "\(.sha256)  \(.path)"' MANIFEST.json)
# 2. Kette prüfen (Quell-Dokument → Signatur-Doc → Events)
jq -r '.target.sha256' signature/signature-doc.json   # = sha256(source/gvb.md)
# 3. Event-Kette
jq -r '.prev_event_sha256' signature/event-*.json     # Verkettung prüfen
# 4. Facsimile
sha256sum signature/facsimile.svg                     # = 8fcffe0b…1006 (Tabelle)
# 5. PDF-Signatur (externes Tool, optional)
pdfsig fes/contract-signed.pdf                        # VALID, PAdES-B-T

Export-ZIP so với Git-Repo: định nghĩa Manifest

Hai hình thức thể hiện của cùng một container:

Hình thức Tên Vai trò
Trong Git repo <Referenced-Doc-Basisname>.gcpn.md Chính container đó — các JSON artifact được nhúng của nó + bảng xác minh chính là manifest (repo hiển thị nội dung trực tiếp; tệp ZIP không thể biểu diễn trong Git)
Dạng export <Referenced-Doc-Basisname>.gcpn.zip Bàn giao vật lý (ZIP) — kèm thêm MANIFEST.json (tất cả SHA-256 + package_sha256) làm mục lục đọc được bằng máy

Vậy định nghĩa Manifest có hợp lệ không? Có — ở cả hai hình thức: Trong Git repo, .gcpn.md đảm nhận chức năng manifest (nó liệt kê từng artifact kèm SHA-256, quy trình xác minh kiểm tra đối chiếu với các thông tin được nhúng); trong export-ZIP, cùng chức năng manifest đó được đính kèm thêm về mặt vật lý dưới dạng MANIFEST.json, để người nhận có thể kiểm tra mà không cần bộ phân tích MD (sha256sum -c). Hai hình thức là tương đương — SHA-256 của các artifact chứa trong đó là định danh (luôn luôn và ở mọi nơi).

Hậu tố Ý nghĩa
.gcpn Container GitCover-PrimaNota (các nghiệp vụ kinh doanh được gộp chung)
.md Dựa trên Markdown (các JSON artifact trong MD-Fences, tương thích Typora) — chức năng manifest trong repo
.zip Dạng export (bàn giao vật lý, kèm MANIFEST.json)

Saga khép lại Phần II

Vòng tròn đã khép:

  1. Phần I: Chuỗi Textform (tài liệu nguồn, tài liệu chữ ký, events, sidecar, container GCPN) — § 126b BGB, đánh giá chứng cứ tự do.
  2. Phần II: Gắn nối FES (các cấp độ eIDAS, lớp Facsimile, Signaturplatte, Envelope-Report, gói vật lý).
  3. Phần III (dự kiến): Vòng PII/GPG — quản lý khóa, các signing-identity JSON schema, cơ chế SSH so với OpenPGP, trust registry.

Saga cho thấy: GitCover không thay thế các dịch vụ chữ ký — nó neo giữ chúng. Repo vẫn là tầng bằng chứng; các phương thức bên ngoài gắn nối vào mà không làm đứt chuỗi.


Được tạo: 260913 | Phần II, bài DS10 | Loạt bài: digital-signage