Dunkles Wachssiegel auf einem leinengebundenen Dokumentenblatt, daneben ein Stahl-Signet-Stempel, weiches Tageslicht.
Extension · moselwal/content-provenance

content-provenance — every piece of content with its own signature.

Ed25519-based digital signatures for TYPO3 content, cryptographically verifiable via /.well-known/provenance-keys. Plus end-to-end audit-trail logging — the foundation for EU AI Act compliance and demonstrable content integrity.

Das Problem

EU AI Act, deepfakes, AI-generated content: who wrote this?

With content-provenance

  • Ed25519 signature per content element, stored alongside the content
  • Public verification endpoint via /.well-known/provenance-keys
  • Audit log with who/when/what, append-only
  • DDD architecture, deptrac-checked
  • EU AI Act-prepared fields (model, prompt hash, reviewer)

Until now

  • "Reviewed by editorial" as a claim in the footer
  • No cryptographic verifiability
  • Audit trail missing or living in the SQL log
  • EU AI Act requirements with no clean way to prove anything

Four building blocks

EU AI Act fields

Prepared metadata fields for AI-generated/-assisted content: model, prompt hash, human reviewer, approval timestamp.

Audit trail

Append-only audit log of every change: who, when, what, signed and timestamped. Verifiable end-to-end via the same Ed25519 keys as the content itself.

Public key endpoint

/.well-known/provenance-keys serves the active public keys for external verifiers — following the RFC convention.

Ed25519 signatures

Cryptographic signature per content element via libsodium (ext-sodium required). Key rotation and multi-key support included.

Availability: coming soon — public release in preparation

Public availability as a Composer package is being prepared. If you already want to use the component in your TYPO3 platform, contact us via the form — we currently deliver as part of platform engagements.

Architecture

Classes/
├── Domain/          # Signature models, key value objects, contracts
├── Application/     # Signing services, verification orchestration
├── Infrastructure/  # Key providers, repositories, API middleware
└── Presentation/    # Controllers, event listeners

 

API endpoints

EndpointPurpose
/_provenance/api/verifyVerify content signatures
/.well-known/provenance-keysPublic key discovery

Database tables

TablePurpose
tx_provenance_signatureContent signatures
tx_provenance_audit_logAudit trail entries

AI Asset Provenance (EU AI Act Art. 50, since v0.6.0)

From v0.6.0 the package covers the regulatory core of EU AI Act Article 50: machine-readable labelling of AI-generated images, auto-detection on upload and IPTC XMP write-back into the file.

Three building blocks

Extended TCA columns (v0.6.0+)

TableColumnPurpose
sys_file_metadatatx_provenance_originAssetOrigin (human / ai_generated / ai_assisted)
sys_file_metadatatx_provenance_ai_systemFree-text model name (e.g. “DALL-E 3”)
sys_file_metadatatx_provenance_ai_promptOptional prompt for audit and reproducibility
sys_file_metadatatx_provenance_detected_atAuto-detection timestamp
sys_file_metadatatx_provenance_c2pa_statusnone / signed_own / signed_external / stripped
sys_file_referencetx_provenance_originPer-reference override (rarely needed)
pagestx_provenance_originPage-body origin (RTE / generated articles)
pagestx_provenance_ai_systemModel name for the page body

Container binaries (optional)

For auto-detection and IPTC write to work, exiftool (read/write IPTC XMP tags across all image, video and audio formats) and c2patool (read/write C2PA manifests; releases at contentauth/c2pa-rs) must be present inside the httpd container. Without those binaries, the extension keeps running — only the auto-detection and IPTC write steps become no-ops with a log warning. Defensive binary handling in the listener catches that case; the editor’s manual tag remains a fallback at any time.

C2PA Manifest Signing (Enterprise Provenance Layer, since v0.7.0)

Positioning: This layer is not a regulatory must for EU AI Act Article 50 — the machine-readable disclosure (IPTC XMP plus Schema.org) and the visible FE badge from phases 1–4 already cover the regulatory core. C2PA signing is the enterprise authenticity layer: provability, anti-stripping, chain of custody, forensics and interoperability.

From v0.7.0 the package contains a cryptographic C2PA sign pipeline:

c2pa_status state model

ValueMeaning
noneDefault — no sign attempt has happened
signed_externalUpstream signature recognised (OpenAI, Adobe), we have not signed yet
signed_self_anchoredFreshly signed by us (Step-CA), no parent manifest
signed_self_anchored_appendEdit action appended to an upstream manifest (parent source preserved)
signed_trustedReserved for phase 5b — trust-list-conformant CA cert
strippedWas signed, manifest was later removed (e.g. through re-encoding outside TYPO3)
failedSign attempt crashed (cert missing, c2patool exit ≠ 0, etc.)

Trust model

The signing pipeline establishes a private provenance chain: the signing cert comes from the project-owned Step-CA (self-anchored), tamper evidence via hash-anchored manifest, append mode preserves the upstream trust chain (OpenAI/Adobe remain visible), strip detection via c2pa_status=stripped provides a strong forensic signal in the BE. External validators like contentcredentials.org/verify show our signature as “untrusted (unknown CA)” — the signature is cryptographically valid and tamper-evident, but our root is not in the C2PA trust list. This is intentional for phase 1: internal provability and forensics without an external onboarding programme.

Configuration and requirements

Configure key providers and signing policies through TYPO3 site settings. Multiple key providers for different environments (development, staging, production) are supported — the backend is pluggable (file, environment, vault).

Requirements

Optional dependencies

PackageTypePurpose
ext-sodiumRequiredEd25519 cryptography
moselwal/devDevShared QA tooling

EU AI Act Art. 50 compliance and Google AI Search

The regulatory minimum for Art. 50 (in force from August 2026) is “machine-readable labelled AND recognisable as artificially generated”. That is covered by phases 1–4 of this package and the site packages:

RequirementCovered by
Machine-readableIPTC PhotoMetadata 2025.1 XMP (DigitalSourceType, AISystemUsed) — phase 3
DetectableAuto-detection from C2PA/IPTC on upload — phase 2
Visible to the userFE badge via moselwal/sitepackage-base ≥ 3.22.0 — phase 4
Structured for crawlersSchema.org ImageObject.creator via moselwal/structured-content ≥ 1.5.10 — phase 4

Art. 50 currently does not require cryptographic provenance, PKI, trust-list CAs, watermarks or blockchain. The C2PA signing layer (phase 5) is a strategic complement for provability, forensics and enterprise authenticity use cases — not a regulatory must.

Google AI Search conformance (May 2026)

Google’s official guides confirm the stack approach: the AI Optimization Guide states explicitly that no new machine-readable files, AI text files, markup or Markdown are needed to appear in generative AI search, and that structured data is not required. The only hard technical mandatory point Google sets for AI images is IPTC DigitalSourceType TrainedAlgorithmicMedia — covered by phase 3 (IptcXmpWriter). Schema.org extensions (phase 4) stay useful for classic SERP features but are not required for generative AI search. C2PA signing (phase 5) is currently not evaluated by Google for search ranking — it remains strategic as an enterprise authenticity layer.

Note: This documentation is not legal advice. For the formal Art. 50 assessment we recommend an independent risk analysis and a disclosure concept that names the layers implemented in the project and documents the strip-detection strategy (c2pa_status=stripped).

Source code & docs

TYPO3 Extension Repository

Not in the official TER — public Composer distribution is being prepared (coming soon).

Composer package

Public release as moselwal/content-provenance in preparation. Coming soon.

Repository

Source code and issue tracker will be opened with the public release. Coming soon.

Mirror

Public mirror and pull-request workflow follow with the release. Coming soon.

Nächster Schritt

EU AI Act readiness as a project?

content-provenance is the technical foundation. If you need an end-to-end EU AI Act compliance setup — including processes, training and audit preparation — get in touch.

AI-Act-Beratung anfragen

Oder direkt schreiben: kontakt@moselwal.de

Where we use this …

This package is the provenance layer for AI-Ready CMS, AI-Ready Commerce and Open Source & Digital Sovereignty. Managed variant: AI-Ready CMS as a Service.