| // Copyright 2026 Google LLC | |
| // | |
| // Licensed under the Apache License, Version 2.0 (the "License"); | |
| // you may not use this file except in compliance with the License. | |
| // You may obtain a copy of the License at | |
| // | |
| // https://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, software | |
| // distributed under the License is distributed on an "AS IS" BASIS, | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| // See the License for the specific language governing permissions and | |
| // limitations under the License. | |
| // | |
| edition = "2024"; | |
| package credentio; | |
| import "cbor/tags.proto"; | |
| import "proto/asset_type.proto"; | |
| // `CollectionDataHashAssertion` contains an array of URIs and their associated | |
| // hashes. Based on `collection-data-hash-map`: | |
| // https://spec.c2pa.org/specifications/specifications/2.4/specs/C2PA_Specification.html#_collection_data_hash. | |
| message CollectionDataHashAssertion { | |
| repeated UriHashedData uris = 1 [(cbor.tags) = { is_required: true }]; | |
| // A string identifying the cryptographic hash algorithm used to compute the | |
| // hash on each entry of the `uris` array, taken from the C2PA hash algorithm | |
| // identifier list. | |
| string alg = 2 [(cbor.tags) = { is_required: true }]; | |
| // The hash of the ZIP central directory in ZIP-based assets. | |
| bytes zip_central_directory_hash = 3; | |
| } | |
| // `UriHashedData` is used to store a reference to a URI and its hash. Based on | |
| // `uri-hashed-data-map`: | |
| // https://spec.c2pa.org/specifications/specifications/2.4/specs/C2PA_Specification.html#_collection_data_hash. | |
| message UriHashedData { | |
| // Relative URI reference. | |
| string uri = 1 [(cbor.tags) = { is_required: true }]; | |
| // Byte string containing the hash value. | |
| bytes hash = 2 [(cbor.tags) = { is_required: true }]; | |
| // Number of bytes of data. | |
| int64 size = 3; | |
| // IANA media type of the data. | |
| string type = 4 [(cbor.tags) = { name: "dc:format" }]; | |
| // Additional information about the data's type. | |
| repeated AssetType data_types = 5; | |
| } |