diff --git a/src/remove_ai_watermarks/noai/constants.py b/src/remove_ai_watermarks/noai/constants.py index 0172b51..424fe0b 100644 --- a/src/remove_ai_watermarks/noai/constants.py +++ b/src/remove_ai_watermarks/noai/constants.py @@ -132,6 +132,7 @@ C2PA_AI_TOOLS = { # the rest (Digimarc, Imatag, Steg.AI, etc.) are proprietary oracle-only decoders. C2PA_SOFT_BINDINGS = { b"com.adobe.trustmark": "Adobe TrustMark", + b"com.adobe.icn": "Adobe (content fingerprint)", b"com.digimarc": "Digimarc", b"com.imatag.lamark": "Imatag (Lamark)", b"ai.steg": "Steg.AI", @@ -139,7 +140,15 @@ C2PA_SOFT_BINDINGS = { b"com.microsoft.wavmark": "Microsoft WavMark", b"com.verimatrix": "Verimatrix", b"com.nagra.nexguard": "NAGRA NexGuard", - b"com.aiwatermark": "AIWatermark", + b"com.aiwatermark": "AIWatermark (Meta PixelSeal)", + b"ai.trufo": "Trufo", + b"app.overlai": "Overlai", + b"com.markany": "MarkAny", + b"com.mentaport": "Mentaport", + b"es.lumatrace": "LumaTrace", + b"ai.verda": "VerdaAI", + b"ai.contentlens": "ContentLens", + b"io.iscc": "ISCC (content code)", } # Lowercased substrings that mark an AI generator when found in an EXIF diff --git a/tests/test_metadata.py b/tests/test_metadata.py index 7904533..8904451 100644 --- a/tests/test_metadata.py +++ b/tests/test_metadata.py @@ -579,6 +579,9 @@ class TestSoftBinding: assert soft_binding_vendors_in(b"...alg...com.adobe.trustmark.P...") == ["Adobe TrustMark"] assert soft_binding_vendors_in(b"com.digimarc.validate.1") == ["Digimarc"] assert soft_binding_vendors_in(b"ai.steg.api blah") == ["Steg.AI"] + # Registry-verified vendors added in v0.6.x. + assert soft_binding_vendors_in(b"ai.trufo.gen1.image") == ["Trufo"] + assert soft_binding_vendors_in(b"io.iscc.v0") == ["ISCC (content code)"] def test_vendors_in_empty_when_absent(self): from remove_ai_watermarks.noai.c2pa import soft_binding_vendors_in