- press_release_images: Kundenangabe/Portalkennzeichnung getrennt, Herkunftsbefund, Beweisoriginal, Snapshot-Pfade, published_ever_at, rules_version, Fokus/Letterbox; Bestand unangetastet - legal_texts (insert-only) mit img-confirm-v1 (alter Wortlaut), v2 (AGB 0.6), v3 (AGB 0.7, noch ohne Datum); image-rights:backfill-confirmations - image_rights_confirmations polymorph, insert-only, IP als versionierter HMAC; Löschung nur für nie veröffentlichte Uploads - ImageProvenanceInspector (Imagick/exif): IPTC, XMP, EXIF; algorithmicallyEnhanced nur Vermerk; unlesbare Datei = error - PressReleaseImageUploader: Original vor Derivaten, Hash-Bindung, Titelbild-Regel unter Sperre, Dateien bei Fehlern zurückgerollt; Admin-Upload ohne Bestätigung - ImageService: kein Rückfall auf die Quelldatei, og-Variante, Fokuspunkt und no_crop Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
51 lines
1.7 KiB
PHP
51 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Enums;
|
|
|
|
/**
|
|
* Ergebnisklasse der Herkunftsprüfung eines Bild-Uploads (Bildkennzeichnung
|
|
* A.4, Feedback F02). Phase 1 liest nur ungesicherte IPTC/XMP/EXIF-Angaben,
|
|
* kann also höchstens `unsigned_metadata` liefern. Die `validated_*`-Stufen
|
|
* entstehen erst mit der C2PA-Signaturprüfung (Phase 2, Block I).
|
|
*/
|
|
enum ImageProvenanceStatus: string
|
|
{
|
|
/** Keine unterstützten Herkunftsdaten in der Datei. */
|
|
case Absent = 'absent';
|
|
|
|
/** IPTC/XMP/EXIF gefunden — frei editierbar, nicht signiert. */
|
|
case UnsignedMetadata = 'unsigned_metadata';
|
|
|
|
/** C2PA-Manifest, Signatur und Dateibindung geprüft, Aussteller in der Vertrauensliste. */
|
|
case ValidatedTrusted = 'validated_trusted';
|
|
|
|
/** C2PA technisch geprüft, Aussteller nicht in der Vertrauensliste. */
|
|
case ValidatedUntrusted = 'validated_untrusted';
|
|
|
|
/** C2PA vorhanden, Prüfung fehlgeschlagen (Signatur oder Bindung). */
|
|
case Invalid = 'invalid';
|
|
|
|
/** Format oder Manifestversion nicht unterstützt. */
|
|
case Unsupported = 'unsupported';
|
|
|
|
/** Technischer Fehler oder Zeitüberschreitung — Prüfung nicht abgeschlossen. */
|
|
case Error = 'error';
|
|
|
|
/**
|
|
* Nur ein vertrauenswürdig geprüfter Befund darf eine Kennzeichnung
|
|
* erzwingen (Decision-Update E9).
|
|
*/
|
|
public function allowsLock(): bool
|
|
{
|
|
return $this === self::ValidatedTrusted;
|
|
}
|
|
|
|
/**
|
|
* Ob überhaupt Herkunftsangaben vorliegen, aus denen das Formular
|
|
* vorbelegt werden kann.
|
|
*/
|
|
public function hasMetadata(): bool
|
|
{
|
|
return in_array($this, [self::UnsignedMetadata, self::ValidatedTrusted, self::ValidatedUntrusted], true);
|
|
}
|
|
}
|