blob: d3186d31bea97e3c67c303fbc7318cc9a7281360 [file]
// 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/assertion.proto";
import "proto/generator_info.proto";
import "proto/hashed_uri.proto";
import "proto/signature_info.proto";
import "proto/validation_status.proto";
import option "google/protobuf/cpp_features.proto";
option java_outer_classname = "ManifestOuterClass";
option features.(pb.cpp).string_type = STRING;
// Represents a verifiable unit containing a set of assertions and a claim
// about an asset together with a claim signature.
message Manifest {
// Results of validating this manifest.
ValidationStatusSet validation = 15;
// Whether the manifest is an update manifest.
bool is_update_manifest = 5;
// Label of the manifest, unique within the containing manifest store.
string label = 1;
// Container holding all the assertion references about the asset.
Claim claim = 2;
// A set of assertions associated with the asset, which are referenced by
// the claim in this manifest. These assertions constitute the "assertion
// store" described in
// https://spec.c2pa.org/specifications/specifications/2.4/specs/C2PA_Specification.html#_assertion_store.
repeated Assertion assertions = 3;
reserved 4;
}
// Contains all the assertion and redacted assertion references about an asset
// at a given time.
message Claim {
// Uniquely identifies a specific version of an asset
string instance_id = 13 [(cbor.tags) = { name: "instanceID" }];
// Information about the claim generator.
GeneratorInfo claim_generator_info = 1;
// A set of references to the assertions about when, where, and how the asset
// was originated or transformed.
//
// The reference is specified as a JUMBF URI reference. See
// https://www.iso.org/standard/84635.html for more details about JUMBF
// standard.
repeated HashedUri created_assertions = 7;
repeated HashedUri gathered_assertions = 8;
// A set of references to the assertions that were subject to redaction.
//
// Redaction is a process where an assertion of an asset-embedded manifest is
// removed from that asset's manifest when this asset is used as an
// ingredient. See
// https://spec.c2pa.org/specifications/specifications/2.4/specs/C2PA_Specification.html#_redaction_of_assertions
// for more details about the redaction process.
//
// The reference is specified as a JUMBF URI reference. See
// https://www.iso.org/standard/84635.html for more details about JUMBF
// standard.
repeated string redacted_assertions = 4;
// Information about the claim signature.
SignatureInfo signature_info = 5 [(cbor.tags) = { mode: MODE_SKIP }];
// Only used by the generator; the validator shouldn't populate this field.
string signature = 11;
// Default hash algorithm.
string default_algorithm = 10 [(cbor.tags) = { name: "alg" }];
// Label of the claim box.
string label = 12;
reserved 2, 3, 6, 9;
}