| // 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"; | |
| inline constexpr absl::string_view kExifAssertionLabel = "stds.exif"; | |
| inline constexpr absl::string_view kIptcAssertionLabel = "stds.iptc"; | |
| // 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_ |