From a71fb3d07581dd44f33b3286f8a0e03783243cfc Mon Sep 17 00:00:00 2001 From: Dom Guinard Date: Fri, 28 Nov 2025 12:28:25 +0100 Subject: [PATCH 01/11] Adding selection rules for new entry --- README.md | 24 ++++++++++++++++++++---- softbinding-algorithm-list.json | 4 ++-- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 1b7d9a0..dbab3e8 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,25 @@ # Soft Binding Algorithm List -C2PA specifies a mechanism for recovering a C2PA Manifest for an asset, for example when the metadata containing the C2PA Manifest has been stripped. This mechanism is a [soft binding](https://c2pa.org/specifications/specifications/2.0/specs/C2PA_Specification.html#_soft_binding) (for example an invisible watermark or content fingerprint). The soft binding is used to look-up the C2PA Manifest within a Manifest Repository. The soft binding is described by the [soft binding assertion](https://c2pa.org/specifications/specifications/2.0/specs/C2PA_Specification.html#_soft_bindings). +C2PA specifies a mechanism for recovering a C2PA Manifest for an asset, for example when the metadata containing the C2PA Manifest has been stripped. This mechanism is a [soft binding](https://c2pa.org/specifications/specifications/2.0/specs/C2PA_Specification.html#_soft_binding), for example an invisible watermark or content fingerprint. The soft binding is used to look-up the C2PA Manifest within a Manifest Repository. The soft binding is described by the [soft binding assertion](https://c2pa.org/specifications/specifications/2.0/specs/C2PA_Specification.html#_soft_bindings). + +The soft binding assertion contains a field `alg` uniquely identifies the algorithm used to compute the soft binding. The Soft Binding Algorithm List is an authoritative list of soft binding algorithm names that may be used as identifiers within the `alg` field. Entries in the list also contain additional information on the algorithms. + +## Guidelines for submitting a new entry + +### Pull request +Developers of soft binding algorithms may request these be added as new entries in the soft binding algorithm list. Developers may also request amendments to their entries. These requests may be made by submitting a Pull Request (PR) adding to or editing the [softbinding-algorithm-list JSON array](softbinding-algorithm-list.json) in this repository and following the [schema](softbinding-algorithm-list-schema.json). + +### Selection rules + +The C2PA Technical Working Group may approve and merge PRs in accordance with its prevailing processes for approving technical contributions to the C2PA specification. + +C2PA's Technical Working Group may also decide to remove malicious or non-conformant algorithms from the list of approved soft binding algorithms. + +For an entry to be approved the following criteria are important: +- The entry has to comply with the [schema](softbinding-algorithm-list-schema.json) and include all the mendatory fields. +- The PR has to be sumitted by a representative of the named technology (e.g., the commercial vendor, or open source repository maintainer). +- The provided URLs have to resolve (e.g., `softBindingResolutionApis`, `informationalUrl`) + -The soft binding assertion contains a field `alg` that serves to uniquely identify the algorithm used to compute the soft binding. The Soft Binding Algorithm List is an authoritative list of soft binding algorithm names that may be used as identifiers within the `alg` field. Entries in the list also contain additional information on the algorithms. -Developers of soft binding algorithms may request these be added as new entries in the soft binding algorithm list. Developers may also request amendments to their entries. These requests may be made by submitting a pull request (PR) adding to or editing the [softbinding-algorithm-list JSON array](softbinding-algorithm-list.json) in this repository and following the [entry schema](softbinding-algorithm-entry-schema.json). -The C2PA Technical Working Group may approve and merge PRs in accordance with its prevailing processes for approving technical contributions to the C2PA specification. C2PA's Technical Working Group may also decide to remove malicious or non-conformant algorithms from the list of approved soft binding algorithms. diff --git a/softbinding-algorithm-list.json b/softbinding-algorithm-list.json index a3c5082..1868ceb 100755 --- a/softbinding-algorithm-list.json +++ b/softbinding-algorithm-list.json @@ -297,7 +297,7 @@ "informationalUrl": "https://arxiv.org/abs/2308.12770" } }, -{ + { "identifier": 21, "alg": "ai.contentlens.image.basewmk", "type": "watermark", @@ -367,4 +367,4 @@ "informationalUrl": "https://api.contentlens.tech/audio/docs" } } -] +] \ No newline at end of file From 88df534ad518ed5fc91aa69c649612e03a3157e4 Mon Sep 17 00:00:00 2001 From: Dominique Guinard Date: Wed, 17 Dec 2025 12:08:04 +0100 Subject: [PATCH 02/11] Update README.md Co-authored-by: Leonard Rosenthol --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dbab3e8..f254821 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ C2PA specifies a mechanism for recovering a C2PA Manifest for an asset, for example when the metadata containing the C2PA Manifest has been stripped. This mechanism is a [soft binding](https://c2pa.org/specifications/specifications/2.0/specs/C2PA_Specification.html#_soft_binding), for example an invisible watermark or content fingerprint. The soft binding is used to look-up the C2PA Manifest within a Manifest Repository. The soft binding is described by the [soft binding assertion](https://c2pa.org/specifications/specifications/2.0/specs/C2PA_Specification.html#_soft_bindings). -The soft binding assertion contains a field `alg` uniquely identifies the algorithm used to compute the soft binding. The Soft Binding Algorithm List is an authoritative list of soft binding algorithm names that may be used as identifiers within the `alg` field. Entries in the list also contain additional information on the algorithms. +The soft binding assertion contains a field `alg` which uniquely identifies the algorithm used to compute the soft binding. The Soft Binding Algorithm List is an authoritative list of soft binding algorithm names that may be used as identifiers within the `alg` field. Entries in the list also contain additional information on the algorithms. ## Guidelines for submitting a new entry From 7fab7c7683e947cfddc784f2f7f0c425f0c7e776 Mon Sep 17 00:00:00 2001 From: Dominique Guinard Date: Wed, 17 Dec 2025 12:49:08 +0100 Subject: [PATCH 03/11] Update README.md Co-authored-by: Leonard Rosenthol --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f254821..4afce9d 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ The soft binding assertion contains a field `alg` which uniquely identifies the ## Guidelines for submitting a new entry ### Pull request -Developers of soft binding algorithms may request these be added as new entries in the soft binding algorithm list. Developers may also request amendments to their entries. These requests may be made by submitting a Pull Request (PR) adding to or editing the [softbinding-algorithm-list JSON array](softbinding-algorithm-list.json) in this repository and following the [schema](softbinding-algorithm-list-schema.json). +Developers of soft binding algorithms may request these be added as new entries in the soft binding algorithm list. Developers may also request amendments to their entries. These requests may be made by submitting a Pull Request (PR) that adds to, or edits, the [softbinding-algorithm-list JSON array](softbinding-algorithm-list.json) in this repository and following the [schema](softbinding-algorithm-list-schema.json). ### Selection rules From 1ce662fbd61816ac7cbefce7e073b5bd15b8af04 Mon Sep 17 00:00:00 2001 From: Dominique Guinard Date: Tue, 27 Jan 2026 11:14:43 +0100 Subject: [PATCH 04/11] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4afce9d..cf1a86d 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Developers of soft binding algorithms may request these be added as new entries The C2PA Technical Working Group may approve and merge PRs in accordance with its prevailing processes for approving technical contributions to the C2PA specification. -C2PA's Technical Working Group may also decide to remove malicious or non-conformant algorithms from the list of approved soft binding algorithms. +C2PA's Technical Working Group may also decide to remove malicious or non-conformant entries from the list of approved soft binding algorithms. For an entry to be approved the following criteria are important: - The entry has to comply with the [schema](softbinding-algorithm-list-schema.json) and include all the mendatory fields. From 3483fa03fee8ae1ae44e21cb3343a06f27f78c22 Mon Sep 17 00:00:00 2001 From: Dominique Guinard Date: Tue, 27 Jan 2026 11:15:34 +0100 Subject: [PATCH 05/11] Update README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cf1a86d..4a32cd9 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,10 @@ C2PA's Technical Working Group may also decide to remove malicious or non-confor For an entry to be approved the following criteria are important: - The entry has to comply with the [schema](softbinding-algorithm-list-schema.json) and include all the mendatory fields. -- The PR has to be sumitted by a representative of the named technology (e.g., the commercial vendor, or open source repository maintainer). +For a PR (new entry or update) to be approved the following criteria are important: +- The entry has to conform with the [schema](softbinding-algorithm-list-schema.json) and include all the mandatory fields. +- The entry should not be malicious (e.g., spam) or harmful. +- The PR has to be submitted by an individual affiliated with the company owning the submitted proprietary algorithm or a maintainer of the submitted open source algorithm or its fork. - The provided URLs have to resolve (e.g., `softBindingResolutionApis`, `informationalUrl`) From 5ff69c151b3720bc2522899f03950365ef101c25 Mon Sep 17 00:00:00 2001 From: Dominique Guinard Date: Tue, 27 Jan 2026 11:16:01 +0100 Subject: [PATCH 06/11] Update README.md Co-authored-by: Leonard Rosenthol --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a32cd9..1490b97 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ C2PA specifies a mechanism for recovering a C2PA Manifest for an asset, for example when the metadata containing the C2PA Manifest has been stripped. This mechanism is a [soft binding](https://c2pa.org/specifications/specifications/2.0/specs/C2PA_Specification.html#_soft_binding), for example an invisible watermark or content fingerprint. The soft binding is used to look-up the C2PA Manifest within a Manifest Repository. The soft binding is described by the [soft binding assertion](https://c2pa.org/specifications/specifications/2.0/specs/C2PA_Specification.html#_soft_bindings). -The soft binding assertion contains a field `alg` which uniquely identifies the algorithm used to compute the soft binding. The Soft Binding Algorithm List is an authoritative list of soft binding algorithm names that may be used as identifiers within the `alg` field. Entries in the list also contain additional information on the algorithms. +The soft binding assertion contains a field `alg` which uniquely identifies the algorithm used to compute the soft binding. The Soft Binding Algorithm List is an authoritative list of soft binding algorithm names that should be used as identifiers within the `alg` field. Entries in the list also contain additional information on the algorithms. ## Guidelines for submitting a new entry From 8852dcbfb71236db83e30181276b2fb74a294288 Mon Sep 17 00:00:00 2001 From: Dominique Guinard Date: Tue, 27 Jan 2026 11:16:12 +0100 Subject: [PATCH 07/11] Update README.md Co-authored-by: Leonard Rosenthol --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1490b97..3af247c 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Developers of soft binding algorithms may request these be added as new entries ### Selection rules -The C2PA Technical Working Group may approve and merge PRs in accordance with its prevailing processes for approving technical contributions to the C2PA specification. +The C2PA Technical Working Group will approve and merge PRs in accordance with its prevailing processes for approving technical contributions to the C2PA specification. C2PA's Technical Working Group may also decide to remove malicious or non-conformant entries from the list of approved soft binding algorithms. From 007cdd8d341439f95426e0f9f66764b170a86141 Mon Sep 17 00:00:00 2001 From: Dominique Guinard Date: Tue, 27 Jan 2026 11:16:32 +0100 Subject: [PATCH 08/11] Update README.md Co-authored-by: Leonard Rosenthol --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3af247c..936ebc7 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ The soft binding assertion contains a field `alg` which uniquely identifies the ## Guidelines for submitting a new entry ### Pull request -Developers of soft binding algorithms may request these be added as new entries in the soft binding algorithm list. Developers may also request amendments to their entries. These requests may be made by submitting a Pull Request (PR) that adds to, or edits, the [softbinding-algorithm-list JSON array](softbinding-algorithm-list.json) in this repository and following the [schema](softbinding-algorithm-list-schema.json). +Developers of soft binding algorithms may request these be added as new entries in the soft binding algorithm list. Developers may also request amendments to their entries. These requests are made by submitting a Pull Request (PR) that adds to, or edits, the [softbinding-algorithm-list JSON array](softbinding-algorithm-list.json) in this repository and following the [schema](softbinding-algorithm-list-schema.json). ### Selection rules From fc6fbbbc117a9bf7be2774f0b3a251c745df5436 Mon Sep 17 00:00:00 2001 From: Dominique Guinard Date: Tue, 27 Jan 2026 11:16:40 +0100 Subject: [PATCH 09/11] Update README.md Co-authored-by: Leonard Rosenthol --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 936ebc7..09dd121 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ For a PR (new entry or update) to be approved the following criteria are importa - The entry has to conform with the [schema](softbinding-algorithm-list-schema.json) and include all the mandatory fields. - The entry should not be malicious (e.g., spam) or harmful. - The PR has to be submitted by an individual affiliated with the company owning the submitted proprietary algorithm or a maintainer of the submitted open source algorithm or its fork. -- The provided URLs have to resolve (e.g., `softBindingResolutionApis`, `informationalUrl`) +- The provided URLs have to successfully resolve (e.g., `softBindingResolutionApis`, `informationalUrl`) From 92ce230ca4624ce5a7d2b53c2ee045360e328d97 Mon Sep 17 00:00:00 2001 From: Dom Guinard Date: Tue, 27 Jan 2026 11:47:58 +0100 Subject: [PATCH 10/11] Resolving issues flagged by the linter --- softbinding-algorithm-list.schema.json | 52 +++++++++++++++++++++----- 1 file changed, 42 insertions(+), 10 deletions(-) diff --git a/softbinding-algorithm-list.schema.json b/softbinding-algorithm-list.schema.json index 021f227..3e5d3d5 100644 --- a/softbinding-algorithm-list.schema.json +++ b/softbinding-algorithm-list.schema.json @@ -1,6 +1,32 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://spec.c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html", + "$id": "https://spec.c2pa.org/specifications/specifications/2.3/specs/C2PA_Specification.html", + "title": "Soft Binding Algorithm List", + "description": "Authoritative list of soft binding algorithms to be used by C2PA implementations for the purpose of recovering C2PA Manifests via soft bindings.", + "examples": [ + [ + { + "identifier": 1, + "alg": "com.example.watermark.alg1", + "type": "watermark", + "decodedMediaTypes": [ + "image" + ], + "entryMetadata": { + "description": "Example watermarking algorithm", + "categories": [ + "org.example.watermarking" + ], + "dateEntered": "2025-01-01T00:00:00Z", + "contact": "contact@example.com", + "informationalUrl": "https://example.com/softbinding/alg1" + }, + "softBindingResolutionApis": [ + "https://resolver.example.com/alg1" + ] + } + ] + ], "type": "array", "items": { "type": "object", @@ -9,12 +35,12 @@ "type": "integer", "minimum": 0, "maximum": 65535, - "description": "This identifier will be assigned when the soft binding algorithm is added to the list." + "description": "This identifier will be assigned when the soft binding algorithm is added to the list" }, "deprecated": { "type": "boolean", "default": false, - "description": "Indicates whether this soft binding algorithm is deprecated. Deprecated algorithms shall not be used for creating soft bindings. Deprecated algorithms may be used for resolving soft bindings but this behaviour is discouraged." + "description": "Indicates whether this soft binding algorithm is deprecated. Deprecated algorithms shall not be used for creating soft bindings. Deprecated algorithms may be used for resolving soft bindings but this behaviour is discouraged" }, "alg": { "type": "string", @@ -26,7 +52,7 @@ "watermark", "fingerprint" ], - "description": "Type of soft binding implemented by this algorithm." + "description": "Type of soft binding implemented by this algorithm" }, "decodedMediaTypes": { "type": "array", @@ -40,7 +66,7 @@ "text", "video" ], - "description": "IANA top level media type (rendered) for which this soft binding algorithm applies." + "description": "IANA top level media type (rendered) for which this soft binding algorithm applies" } }, "encodedMediaTypes": { @@ -57,7 +83,7 @@ "properties": { "description": { "type": "string", - "description": "Human readable description of the algorithm." + "description": "Human readable description of the algorithm" }, "categories": { "type": "array", @@ -70,7 +96,7 @@ "dateEntered": { "type": "string", "format": "date-time", - "description": "Date of entry for this algorithm." + "description": "Date of entry for this algorithm" }, "contact": { "type": "string", @@ -79,7 +105,7 @@ "informationalUrl": { "type": "string", "format": "uri", - "description": "A web page containing more details about the algorithm." + "description": "A web page containing more details about the algorithm" } }, "required": [ @@ -95,7 +121,7 @@ "type": "string", "format": "uri" }, - "description": "A list of Soft Binding Resolution APIs supporting this algorithm." + "description": "A list of Soft Binding Resolution APIs supporting this algorithm" } }, "required": [ @@ -110,6 +136,9 @@ "decodedMediaTypes" ], "not": { + "properties": { + "encodedMediaTypes": {} + }, "required": [ "encodedMediaTypes" ] @@ -120,6 +149,9 @@ "encodedMediaTypes" ], "not": { + "properties": { + "decodedMediaTypes": {} + }, "required": [ "decodedMediaTypes" ] @@ -127,4 +159,4 @@ } ] } -} +} \ No newline at end of file From 1642adc7b75ac9e924a1d9183fdb14fdf7f8ad5d Mon Sep 17 00:00:00 2001 From: Dom Guinard Date: Tue, 27 Jan 2026 11:53:28 +0100 Subject: [PATCH 11/11] Resolving issues flagged by the linter --- softbinding-algorithm-list.schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/softbinding-algorithm-list.schema.json b/softbinding-algorithm-list.schema.json index 3e5d3d5..f12ee17 100644 --- a/softbinding-algorithm-list.schema.json +++ b/softbinding-algorithm-list.schema.json @@ -2,7 +2,7 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://spec.c2pa.org/specifications/specifications/2.3/specs/C2PA_Specification.html", "title": "Soft Binding Algorithm List", - "description": "Authoritative list of soft binding algorithms to be used by C2PA implementations for the purpose of recovering C2PA Manifests via soft bindings.", + "description": "Authoritative list of soft binding algorithms to be used by C2PA implementations for the purpose of recovering C2PA Manifests via soft bindings", "examples": [ [ {