Format for Electronic Registry Manifest Automation and Transfer
A standardized manifest format for tracking classified document deliveries across multiple classification authorities (NATO, EU, national systems).
Named after Pierre de Fermat (1607-1665), mathematician from Toulouse, France.
FERMAT enables secure, auditable transfer of classified documents between organizations with:
- Authority-aggnostic: NATO, EU, US, France, and other national classification systems
- Structured classification metadata: Machine-readable classification objects with authority, level, marking, and caveats
- Automation-ready: Designed for integration with Document Management Systems (DMS)
- Human-readable: YAML format allows manual editing for simple transfers
- Integrity verification: Built-in checksums and HMAC signatures
- Compliance: Aligned with EU, NATO, and national security regulations
For small deliveries (1-5 documents), you can create a FERMAT manifest manually using any text editor:
-
Create a file named
manifest.yamlormanifest.fermat.yaml -
Edit with Notepad/TextEdit/vim - the YAML format is human-readable. Here is a minimal example:
manifest:
format: fermat-manifest
delivery:
reference: DP-2026-001
sender: Your Organization
recipient: Receiving Organization
title: Quarterly Activity Report
classification: NATO RESTRICTED
documents:
- id: 2026-arp-001-nr
filename: report_q1_2026.pdf
title: Q1 2026 Activity Report
classification: NATO RESTRICTED
- id: 2026-inv-002
filename: invoice_2026-01.pdf
title: Q1 2026 Activity Report Invoice
classification: ~
- Save and transmit with your documents according to approved procedures
For large deliveries (10+ documents), use automation tools and libraries (see Tools & Libraries). Such tools could be more verbose to avoid any ambiguity:
manifest:
schema-version: 1.0.0
id: MAN-20260214-A1B2C3D4
created: 2026-02-14T10:30:00Z
format: fermat-manifest
encoding: utf-8
classification:
authority: NATO
level: unclassified
marking: NATO UNCLASSIFIED
caveats: null
delivery:
sender: Your Organization
recipient: Receiving Organization
reference: DP-2026-001
title: Quarterly Security Report
classification:
authority: NATO
level: restricted
marking: NATO RESTRICTED
caveats: null
transmission_method: secure_network
acknowledgment_required: false
documents:
- id: reference of the first document
filename: report_q1_2026.pdf
title: Q1 2026 Security Assessment
classification:
authority: NATO
level: restricted
marking: NATO RESTRICTED
mime_type: application/pdf
size: 1048576
checksum:
algorithm: sha256
value: a3b2c1d4e5f6...your_checksum_here
- id: reference of the second document
filename: communication_q1.pdf
title: Q1 2026 Communication flyer
classification: null
mime-type: application/pdf
size:
unit: bytes
value: 10485
checksum
algorithm: sha256
value: 0226a3b2c1d4e5f6...your_checksum_here
Support for multiple classification in a single delivery (each document has its own).
- Built-in integrity verification (SHA-256 checksums)
- Machine-readable JSON/YAML format
- Schema validation support
- Designed for DMS integration
- Auto-computed summary statistics
Detailed specifications are available in the docs/ directory:
| Document | Description |
|---|---|
| FERMAT Specification | Complete FERMAT manifest format specification |
| Classification Metadata Format | Referenced classification structure specification |
| Document Metadata Format | Referenced document structure specification |
┌─────────────────┐
│ Prepare Delivery│
│ - Collect docs │
│ - Verify class.│
└────────┬────────┘
│
▼
┌─────────────────┐
│ Create Manifest │ ◄─── Manual (text editor)
│ - FERMAT YAML │ or Automated (DMS)
└────────┬────────┘
│
▼
┌─────────────────┐
│ Transmit Package│
│ - Manifest + │
│ Documents │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Recipient │
│ - Verify │
│ - Register │ ◄─── Manual (text editor) or Automated (DMS)
│ - Acknowledge │
└─────────────────┘
FERMAT supports two serialization formats:
Automation tools SHALL accept YAML when receiving.
# manifest.fermat.yaml
manifest:
schema_version: "1.0.0"
# ...Advantages:
- Human-readable and editable
- Supports comments
- Less verbose than JSON
- Perfect for simple/manual workflows
Automation tools SHOULD accept JSON and YAML when receiving. Automation tools SHOULD use JSON for known recipient having coompatible tools.
{
"manifest": {
"schema-version": "1.0.0"
}
}Advantages:
- Universal parser support
- Strict schema validation
- Better for automated systems
Community contributions welcome! See CONTRIBUTING.md.
A conforming manifest MUST:
- Include all required fields (manifest, delivery, documents)
- Use valid classification objects
- Use RFC 3339 datetime format
- Set
formatto"fermat-manifest" - Ensure marking fields contain only base official markings (no embedded caveats)
A fully conforming implementation SHOULD:
- Support both JSON and YAML formats
- Support all classification object forms (canonical, shorthand, simplified)
- Compute checksums for all documents
- Support HMAC signing and verification
- Auto-compute summary section
- Validate against JSON Schema
- Validate classification objects against authority registries
- Physical Security: Manifests may contain classified metadata - handle according to highest classification level present
- Transmission: When manifest is classified, use approved secure channels (encrypted networks, courier, diplomatic pouch)
- Integrity: Always verify checksums and signatures on receipt
- Audit Trail: Preserve manifests for compliance audits
# SHA-256 checksum
sha256sum document.pdf
# Output: a3b2c1d4e5f6... document.pdfWe welcome contributions! Please see CONTRIBUTING.md for:
- Reporting issues
- Proposing enhancements
- Submitting pull requests
- Adding support for new classification authorities
- Creating tools and libraries
| Version | Date | Changes |
|---|---|---|
| 1.0.0 | February 2026 | Initial release |
FERMAT is an open standard. See LICENSE for details.
- ISO 3166-1 - Country codes
- RFC 3339 - Date and time format
- RFC 4648 — Base16 (hex) and Base64 encoding
- RFC 2046 — MIME types
- RFC 5652 — Cryptographic Message Syntax (CMS) for digital signatures
- ISO 3166-1 — Country codes (alpha-2)
- ISO 639-1 — Language codes
- YAML 1.2
- JSON Schema draft-07 - JSON/YAML Validation schema definition
- kebab-case - all keys naming
- Issues: GitHub Issues