diff --git a/softbinding-algorithm-list.schema.json b/softbinding-algorithm-list.schema.json index 2528b61..9cf273f 100644 --- a/softbinding-algorithm-list.schema.json +++ b/softbinding-algorithm-list.schema.json @@ -19,7 +19,21 @@ ], "dateEntered": "2025-01-01T00:00:00Z", "contact": "contact@example.com", - "informationalUrl": "https://example.com/softbinding/alg1" + "informationalUrl": "https://example.com/softbinding/alg1", + "benchmarkingInformation": [ + { + "description": "Robustness benchmark covering common image transformations", + "coveredMediaTypes": [ + "image" + ], + "benchmarkDate": "2026-07-10", + "results": { + "url": "https://example.com/softbinding/alg1/benchmark", + "alg": "sha256", + "hash": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" + } + } + ] }, "softBindingResolutionApis": [ "https://resolver.example.com/alg1" @@ -106,6 +120,122 @@ "type": "string", "format": "uri", "description": "A web page containing more details about the algorithm" + }, + "benchmarkingInformation": { + "type": "array", + "minItems": 1, + "description": "A list of benchmarking records that help explain the algorithm's measured capabilities", + "items": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Human readable description of the algorithm" + }, + "coveredMediaTypes": { + "type": "array", + "minItems": 1, + "items": { + "enum": [ + "application", + "audio", + "image", + "model", + "text", + "video" + ], + "description": "IANA top level media type addressed by this benchmark" + } + }, + "benchmarkDate": { + "type": "string", + "format": "date", + "description": "The date the benchmark was performed" + }, + "results": { + "type": "object", + "description": "A link to the benchmark results and an optional content digest, using the alg and hash fields of the C2PA hashed-ext-uri-map with hexadecimal encoding for JSON", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "A URL containing the benchmark results" + }, + "alg": { + "enum": [ + "sha256", + "sha384", + "sha512" + ], + "description": "Hash algorithm identifier from the C2PA hash algorithm identifier list" + }, + "hash": { + "type": "string", + "pattern": "^[A-Fa-f0-9]+$", + "description": "Digest of the benchmark results content computed using alg, encoded as hexadecimal rather than the CBOR byte string used in the C2PA specification" + } + }, + "dependentRequired": { + "alg": [ + "hash" + ], + "hash": [ + "alg" + ] + }, + "allOf": [ + { + "if": { + "properties": { + "alg": { "const": "sha256" } + }, + "required": ["alg"] + }, + "then": { + "properties": { + "hash": { "minLength": 64, "maxLength": 64 } + } + } + }, + { + "if": { + "properties": { + "alg": { "const": "sha384" } + }, + "required": ["alg"] + }, + "then": { + "properties": { + "hash": { "minLength": 96, "maxLength": 96 } + } + } + }, + { + "if": { + "properties": { + "alg": { "const": "sha512" } + }, + "required": ["alg"] + }, + "then": { + "properties": { + "hash": { "minLength": 128, "maxLength": 128 } + } + } + } + ], + "required": [ + "url" + ] + } + }, + "required": [ + "description", + "coveredMediaTypes", + "benchmarkDate", + "results" + ] + } } }, "required": [