blob: 748d9aeeb137b5473f31974dd592c5f74a3c3950 [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.
//
#ifndef THIRD_PARTY_CREDENTIO_CONSTANTS_LABELS_H_
#define THIRD_PARTY_CREDENTIO_CONSTANTS_LABELS_H_
#include <cstdint>
#include "absl/strings/string_view.h"
#include "jumbf/constants.h"
#include "uuid/uuid.h"
namespace credentio {
// Delimiter used to separate the various components of a manifest label.
inline constexpr absl::string_view kManifestLabelDelimiter = "/";
// Minimum Jumbf description toggles required to support C2PA. See
// https://spec.c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_labels_2.
inline constexpr uint8_t kMinimumJumbfDescriptionToggles =
jumbf::kDescriptionToggleLabelPresent |
jumbf::kDescriptionToggleRequestable;
// Box label and UUID of the C2PA Manifest Store box. See
// https://spec.c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_manifest_store.
inline constexpr absl::string_view kManifestStoreLabel = "c2pa";
inline constexpr absl::string_view kManifestStoreUrlPrefix =
"self#jumbf=/c2pa/";
inline constexpr Uuid kManifestStoreUuid(
Uuid::FromStringOrDie("63327061-0011-0010-8000-00AA00389B71"));
// Box UUIDs of the C2PA Manifest box. See
// https://spec.c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_manifest_store
inline constexpr Uuid kStandardManifestUuid(
Uuid::FromStringOrDie("63326D61-0011-0010-8000-00AA00389B71"));
inline constexpr Uuid kCompressedManifestUuid(
Uuid::FromStringOrDie("6332636D-0011-0010-8000-00AA00389B71"));
inline constexpr Uuid kUpdateManifestUuid(
Uuid::FromStringOrDie("6332756D-0011-0010-8000-00AA00389B71"));
inline constexpr Uuid kTimestampManifestUuid(
Uuid::FromStringOrDie("6332746D-0011-0010-8000-00AA00389B71"));
// Box labels and UUID of the C2PA Claim box.
// The deprecated (v1) format shares the same UUID as the current (v2) format.
// See
// https://spec.c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_claim_and_claim_signature.
inline constexpr absl::string_view kClaimV1Label = "c2pa.claim";
inline constexpr absl::string_view kClaimV2Label = "c2pa.claim.v2";
inline constexpr Uuid kClaimUuid(
Uuid::FromStringOrDie("6332636C-0011-0010-8000-00AA00389B71"));
// Box label and UUID of the C2PA Claim Signature box.
// See
// https://spec.c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_claim_and_claim_signature.
inline constexpr absl::string_view kClaimSignatureLabel = "c2pa.signature";
inline constexpr absl::string_view kClaimSignatureUrl =
"self#jumbf=c2pa.signature";
inline constexpr Uuid kClaimSignatureUuid(
Uuid::FromStringOrDie("63326373-0011-0010-8000-00AA00389B71"));
// Box label and UUID of the C2PA Assertion Store box. See
// https://spec.c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_assertion_store_2.
inline constexpr absl::string_view kAssertionStoreLabel = "c2pa.assertions";
inline constexpr absl::string_view kAssertionStoreUrlPrefix =
"self#jumbf=c2pa.assertions/";
inline constexpr Uuid kAssertionStoreUuid(
Uuid::FromStringOrDie("63326173-0011-0010-8000-00AA00389B71"));
// C2PA assertion labels.
inline constexpr absl::string_view kActionsAssertionV2Label = "c2pa.actions.v2";
inline constexpr absl::string_view kActionsAssertionV1Label = "c2pa.actions";
inline constexpr absl::string_view kBmffBasedHashAssertionV2Label =
"c2pa.hash.bmff.v2";
inline constexpr absl::string_view kBmffBasedHashAssertionV3Label =
"c2pa.hash.bmff.v3";
inline constexpr absl::string_view kDataHashAssertionLabel = "c2pa.hash.data";
inline constexpr absl::string_view kBoxesHashAssertionLabel = "c2pa.hash.boxes";
inline constexpr absl::string_view kCollectionDataHashAssertionLabel =
"c2pa.hash.collection.data";
inline constexpr absl::string_view kBmffBasedHashAssertionV2PartLabel =
"c2pa.hash.bmff.v2.part";
inline constexpr absl::string_view kBmffBasedHashAssertionV3PartLabel =
"c2pa.hash.bmff.v3.part";
inline constexpr absl::string_view kDataHashAssertionPartLabel =
"c2pa.hash.data.part";
inline constexpr absl::string_view kBoxesHashAssertionPartLabel =
"c2pa.hash.boxes.part";
inline constexpr absl::string_view kCollectionDataHashAssertionPartLabel =
"c2pa.hash.collection.data.part";
inline constexpr absl::string_view kMultiAssetHashAssertionLabel =
"c2pa.hash.multi-asset";
inline constexpr absl::string_view kIngredientAssertionV1Label =
"c2pa.ingredient";
inline constexpr absl::string_view kIngredientAssertionV2Label =
"c2pa.ingredient.v2";
inline constexpr absl::string_view kIngredientAssertionV3Label =
"c2pa.ingredient.v3";
inline constexpr absl::string_view kGDepthAssertionLabel =
"c2pa.depthmap.GDepth";
inline constexpr absl::string_view kAiDisclosureAssertionLabel =
"c2pa.ai-disclosure";
inline constexpr absl::string_view kEnvironmentalSustainabilityAssertionLabel =
"c2pa.environmental-sustainability";
inline constexpr absl::string_view kSoftBindingAssertionLabel =
"c2pa.soft-binding";
inline constexpr absl::string_view kRepositoryReceiptAssertionLabel =
"c2pa.repository-receipt";
inline constexpr absl::string_view kThumbnailClaimAssertionLabelPrefix =
"c2pa.thumbnail.claim.";
inline constexpr absl::string_view kThumbnailIngredientAssertionLabelPrefix =
"c2pa.thumbnail.ingredient.";
inline constexpr absl::string_view kMetadataAssertionLabelSuffix = ".metadata";
// The UUID of the C2PA BMFF box is D8FEC3D6-1B0E-483C-9297-5828877EC481.
// See
// https://spec.c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_definition.
inline constexpr absl::string_view kC2paBmffBoxUuid(
"\xD8\xFE\xC3\xD6\x1B\x0E\x48\x3C\x92\x97\x58\x28\x87\x7E\xC4\x81", 16);
} // namespace credentio
#endif // THIRD_PARTY_CREDENTIO_CONSTANTS_LABELS_H_