{
  "schema": "hm.c2pa-status-catalog.v1",
  "specification": {
    "name": "C2PA Content Credentials",
    "version": "2.4",
    "statusCodeReference": "https://spec.c2pa.org/specifications/specifications/2.4/specs/ContentCredentials.html#_standard_status_codes",
    "crJsonReference": "https://spec.c2pa.org/specifications/specifications/2.4/crJSON/crjson-format.html",
    "license": "CC BY 4.0"
  },
  "counts": {
    "success": 16,
    "informational": 15,
    "failure": 84
  },
  "entries": [
    {
      "code": "assertion.accessible",
      "classification": "success",
      "meaning": "A non-embedded (remote) assertion was accessible at the time of validation.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.bmffHash.match",
      "classification": "success",
      "meaning": "Hash of a box-based asset matches the hash declared in the BMFF hash assertion.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.boxesHash.match",
      "classification": "success",
      "meaning": "Hash of a box-based asset matches the hash declared in the general box hash assertion.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.collectionHash.match",
      "classification": "success",
      "meaning": "Hashes of all the assets contained in a collection matches the hashes declared in the collection data hash assertion.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.dataHash.match",
      "classification": "success",
      "meaning": "Hash of a byte range of the asset matches the hash declared in the data hash assertion.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.hashedURI.match",
      "classification": "success",
      "meaning": "The hash of the referenced assertion matches the corresponding hash in the assertion’s hashed URI in the claim.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.multiAssetHash.match",
      "classification": "success",
      "meaning": "The hash of one part of a multi-asset hash assertion matches the corresponding hash in the assertion’s multi-asset-hash-map.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.alternativeContentRepresentation.match",
      "classification": "success",
      "meaning": "The original preservation image assertion and its associated content validated successfully.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "claimSignature.insideValidity",
      "classification": "success",
      "meaning": "The claim signature referenced in the claim was created within the validity period of the signing credential",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "claimSignature.validated",
      "classification": "success",
      "meaning": "The claim signature referenced in the claim validated.",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "ingredient.claimSignature.validated",
      "classification": "success",
      "meaning": "The hash of the ingredient’s C2PA Claim Signature box was successfully validated.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "ingredient.manifest.validated",
      "classification": "success",
      "meaning": "The hash of the ingredient’s C2PA Manifest box was successfully validated.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "signingCredential.ocsp.notRevoked",
      "classification": "success",
      "meaning": "The signing credential was not revoked at the time of signing.",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "signingCredential.trusted",
      "classification": "success",
      "meaning": "The signing credential is trusted",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "timeStamp.trusted",
      "classification": "success",
      "meaning": "The time-stamp credential is listed on the validator’s list of trust anchors for time stamping authorities .",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "timeStamp.validated",
      "classification": "success",
      "meaning": "The time-stamp is well-formed, has a message imprint that matches the Claim Signature, and was created within the validity period of the time-stamp credential.",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "algorithm.deprecated",
      "classification": "informational",
      "meaning": "The algorithm has been deprecated.",
      "scope": "C2PA Claim Box or C2PA Assertion"
    },
    {
      "code": "assertion.bmffHash.additionalExclusionsPresent",
      "classification": "informational",
      "meaning": "A BMFF hash specified exclusion ranges other than the C2PA Manifest Store.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.boxesHash.additionalExclusionsPresent",
      "classification": "informational",
      "meaning": "A box hash specified exclusion ranges other than the C2PA Manifest Store.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.dataHash.additionalExclusionsPresent",
      "classification": "informational",
      "meaning": "A data hash specified exclusion ranges other than the C2PA Manifest Store.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "ingredient.unknownProvenance",
      "classification": "informational",
      "meaning": "The ingredient does not have a C2PA Manifest.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "signingCredential.ocsp.inaccessible",
      "classification": "informational",
      "meaning": "The validator attempted to perform an online OCSP check, but did not receive a response.",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "signingCredential.ocsp.skipped",
      "classification": "informational",
      "meaning": "The validator chose not to perform an online OCSP check.",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "signingCredential.ocsp.unknown",
      "classification": "informational",
      "meaning": "The OCSP response contains an unknown status for the signing credential",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "timeOfSigning.insideValidity",
      "classification": "informational",
      "meaning": "The claimed time of signing (in the iat header of the signature) is within the validity period of the signer’s certificate chain and before the time in any corresponding trusted time-stamp.",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "timeOfSigning.outsideValidity",
      "classification": "informational",
      "meaning": "The claimed time of signing (in the iat header of the signature) is outside the validity period of the signer’s certificate chain or later than the time in a corresponding trusted time-stamp.",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "timeStamp.credentialInvalid",
      "classification": "informational",
      "meaning": "The time-stamp credential is invalid.",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "timeStamp.malformed",
      "classification": "informational",
      "meaning": "The time-stamp response included in the claim signature header is not properly formed, as per RFC 3161",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "timeStamp.mismatch",
      "classification": "informational",
      "meaning": "The time-stamp does not correspond to the contents of the claim.",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "timeStamp.outsideValidity",
      "classification": "informational",
      "meaning": "The signed time-stamp attribute in the signature was created outside the validity period of the TSA’s certificate.",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "timeStamp.untrusted",
      "classification": "informational",
      "meaning": "The time-stamp credential is not listed on the validator’s TSA trust lists .",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "algorithm.unsupported",
      "classification": "failure",
      "meaning": "The algorithm is unspecified or unsupported.",
      "scope": "C2PA Claim Box or C2PA Assertion"
    },
    {
      "code": "assertion.action.ingredientMismatch",
      "classification": "failure",
      "meaning": "An action that requires an associated ingredient either does not have one or the one specified cannot be located",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.action.malformed",
      "classification": "failure",
      "meaning": "An actions assertion is malformed.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.action.redacted",
      "classification": "failure",
      "meaning": "An actions assertion was redacted when the claim was created.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.action.redactionMismatch",
      "classification": "failure",
      "meaning": "An action that requires an associated redaction either does not have one or the one specified cannot be located",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.action.softBindingMissing",
      "classification": "failure",
      "meaning": "An action that requires an associated soft binding does not have one",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.bmffHash.malformed",
      "classification": "failure",
      "meaning": "A BMFF hash assertion is malformed.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.bmffHash.mismatch",
      "classification": "failure",
      "meaning": "The hash of a box-based asset does not match the hash declared in a BMFF hash assertion.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.boxesHash.malformed",
      "classification": "failure",
      "meaning": "The general box hash assertion is malformed.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.boxesHash.mismatch",
      "classification": "failure",
      "meaning": "The hash of a general box-like asset format does not match the hash declared in a general box hash assertion.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.boxesHash.unknownBox",
      "classification": "failure",
      "meaning": "A box other than those expected was found",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.cbor.invalid",
      "classification": "failure",
      "meaning": "The cbor of an assertion is not valid",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.cloud-data.actions",
      "classification": "failure",
      "meaning": "An update manifest contains a cloud data assertion referencing an actions assertion.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.cloud-data.hardBinding",
      "classification": "failure",
      "meaning": "A hard binding assertion is in a cloud data assertion.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.cloud-data.malformed",
      "classification": "failure",
      "meaning": "The cloud-data assertion was incomplete",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.cloud-data.labelMismatch",
      "classification": "failure",
      "meaning": "The label of the JUMBF box retrieved from the cloud data assertion does not match the expected label.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.collectionHash.incorrectFileCount",
      "classification": "failure",
      "meaning": "An asset that was listed in the collection data hash assertion is missing from the collection.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.collectionHash.invalidURI",
      "classification": "failure",
      "meaning": "A URI of an asset in the collection data hash assertion contains the file part '..' or '.'.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.collectionHash.malformed",
      "classification": "failure",
      "meaning": "The collection hash assertion was incomplete",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.collectionHash.mismatch",
      "classification": "failure",
      "meaning": "A hash of an asset in the collection does not match hash declared in the collection data hash assertion.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.dataHash.malformed",
      "classification": "failure",
      "meaning": "A data hash assertion is malformed.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.dataHash.mismatch",
      "classification": "failure",
      "meaning": "The hash of a byte range of the asset does not match the hash declared in the data hash assertion.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.dataHash.redacted",
      "classification": "failure",
      "meaning": "(DEPRECATED) A hard binding assertion was redacted.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.external-reference.created",
      "classification": "failure",
      "meaning": "The external reference assertion was present in the list of created assertions",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.external-reference.hashMismatch",
      "classification": "failure",
      "meaning": "The hash of retrieved data does not match the hash declared in the location field of a hashed external reference",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.external-reference.labelMismatch",
      "classification": "failure",
      "meaning": "The label of the JUMBF box retrieved from the external reference assertion does not match the expected label.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.external-reference.malformed",
      "classification": "failure",
      "meaning": "The external reference assertion was incomplete",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.hardBinding.redacted",
      "classification": "failure",
      "meaning": "A hard binding assertion was redacted.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.hashedURI.mismatch",
      "classification": "failure",
      "meaning": "The hash of the the referenced assertion in the manifest does not match the corresponding hash in the assertion’s hashed URI in the claim.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.inaccessible",
      "classification": "failure",
      "meaning": "A non-embedded (remote) assertion was inaccessible at the time of validation.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.ingredient.malformed",
      "classification": "failure",
      "meaning": "The ingredient assertion was incomplete",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.json.invalid",
      "classification": "failure",
      "meaning": "The JSON(-LD) of an assertion is not valid",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.missing",
      "classification": "failure",
      "meaning": "An assertion listed in the manifest’s claim is missing from the asset’s manifest.",
      "scope": "C2PA Claim Box"
    },
    {
      "code": "assertion.multiAssetHash.malformed",
      "classification": "failure",
      "meaning": "A multi-asset hash assertion is malformed.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.multiAssetHash.missingPart",
      "classification": "failure",
      "meaning": "A required part of the multi-part asset cannot be located.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.multiAssetHash.mismatch",
      "classification": "failure",
      "meaning": "The hash of a part of a multi-part asset does not match the hash declared in the mutli-asset hash assertion.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.alternativeContentRepresentation.malformed",
      "classification": "failure",
      "meaning": "The original preservation image assertion is malformed or contains invalid fields (e.g., both boxes and url fields are present, or invalid target usage).",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.alternativeContentRepresentation.hashMismatch",
      "classification": "failure",
      "meaning": "The hash of the original preservation image content does not match the hash declared in the assertion.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.alternativeContentRepresentation.missing",
      "classification": "failure",
      "meaning": "The original preservation image assertion, or its required content, could not be found or resolved.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.multipleHardBindings",
      "classification": "failure",
      "meaning": "The manifest has more than one hard binding assertion.",
      "scope": "C2PA Assertion Store Box"
    },
    {
      "code": "assertion.notRedacted",
      "classification": "failure",
      "meaning": "An assertion was declared as redacted in the claim but is still present in the manifest.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.outsideManifest",
      "classification": "failure",
      "meaning": "An assertion listed in the claim is not in the same C2PA Manifest as the claim",
      "scope": "C2PA Claim Box"
    },
    {
      "code": "assertion.selfRedacted",
      "classification": "failure",
      "meaning": "An assertion was declared as redacted by its own claim.",
      "scope": "C2PA Claim Box"
    },
    {
      "code": "assertion.timestamp.malformed",
      "classification": "failure",
      "meaning": "The time-stamp assertion is malformed.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "assertion.undeclared",
      "classification": "failure",
      "meaning": "An assertion was found in the manifest that was not explicitly declared in the claim.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "claim.cbor.invalid",
      "classification": "failure",
      "meaning": "The cbor of the claim is not valid.",
      "scope": "C2PA Claim Box"
    },
    {
      "code": "claim.hardBindings.missing",
      "classification": "failure",
      "meaning": "No hard bindings are present.",
      "scope": "C2PA Claim Box"
    },
    {
      "code": "claim.malformed",
      "classification": "failure",
      "meaning": "The data/fields of the referenced claim in the manifest are not correct.",
      "scope": "C2PA Claim Box"
    },
    {
      "code": "claim.missing",
      "classification": "failure",
      "meaning": "The referenced claim in the manifest cannot be found.",
      "scope": "C2PA Claim Box"
    },
    {
      "code": "claim.multiple",
      "classification": "failure",
      "meaning": "More than one claim box is present in the manifest.",
      "scope": "C2PA Claim Box"
    },
    {
      "code": "claimSignature.missing",
      "classification": "failure",
      "meaning": "The claim signature referenced in the claim cannot be found in its manifest.",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "claimSignature.mismatch",
      "classification": "failure",
      "meaning": "The claim signature referenced in the claim failed to validate.",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "claimSignature.outsideValidity",
      "classification": "failure",
      "meaning": "The claim signature referenced in the claim was created outside the validity period of the signing credential.",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "general.error",
      "classification": "failure",
      "meaning": "A value to be used when there was an error not specifically listed here.",
      "scope": "(multiple)"
    },
    {
      "code": "hashedURI.missing",
      "classification": "failure",
      "meaning": "The data pointed to by a hashed_uri cannot be located",
      "scope": "C2PA Assertion"
    },
    {
      "code": "hashedURI.mismatch",
      "classification": "failure",
      "meaning": "The hash of a given hashed_uri does not match the corresponding hash of the destination URI’s data",
      "scope": "C2PA Assertion"
    },
    {
      "code": "ingredient.claimSignature.missing",
      "classification": "failure",
      "meaning": "The referenced ingredient C2PA Claim Signature was not found.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "ingredient.claimSignature.mismatch",
      "classification": "failure",
      "meaning": "The hash of an embedded C2PA Manifest’s C2PA Claim Signature does not match the hash declared in the hashed_uri value of the claimSignature field in the ingredient assertion.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "ingredient.manifest.missing",
      "classification": "failure",
      "meaning": "The referenced ingredient C2PA Manifest was not found.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "ingredient.manifest.mismatch",
      "classification": "failure",
      "meaning": "The hash of an embedded C2PA Manifest does not match the hash declared in the hashed_uri value of the activeManifest field in the ingredient assertion.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "livevideo.assertion.invalid",
      "classification": "failure",
      "meaning": "The assertion is not valid due to sequenceNumber , streamId mismatch.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "livevideo.continuityMethod.invalid",
      "classification": "failure",
      "meaning": "The continuityMethod is invalid or not recognized.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "livevideo.init.invalid",
      "classification": "failure",
      "meaning": "The init segment is not valid, improperly contains a mdat box.",
      "scope": "(not applicable)"
    },
    {
      "code": "livevideo.manifest.invalid",
      "classification": "failure",
      "meaning": "The manifest failed validation.",
      "scope": "(not applicable)"
    },
    {
      "code": "livevideo.segment.invalid",
      "classification": "failure",
      "meaning": "The segment is not valid, (1) it contains neither a valid emsg box nor C2PA Manifest Box, (2) no valid session keys, (3) the emsg signature fails signature validation, or (4) the previousManifestId didn’t match the previous manifest.",
      "scope": "(not applicable)"
    },
    {
      "code": "livevideo.sessionkey.invalid",
      "classification": "failure",
      "meaning": "The session key is not valid, (1) does not meet requirements for session keys, (2) signerBinding doesn’t validate, or (3) the Claim Generator’s certificate used to protect delivery of the session key has expired.",
      "scope": "C2PA Assertion"
    },
    {
      "code": "manifest.compressed.invalid",
      "classification": "failure",
      "meaning": "The compressed manifest was not valid.",
      "scope": "C2PA Claim Box"
    },
    {
      "code": "manifest.html.multipleManifests",
      "classification": "failure",
      "meaning": "More than one C2PA manifest element was found in the HTML document.",
      "scope": "C2PA Claim Box"
    },
    {
      "code": "manifest.inaccessible",
      "classification": "failure",
      "meaning": "A non-embedded (remote) manifest was inaccessible at the time of validation.",
      "scope": "C2PA Claim Box"
    },
    {
      "code": "manifest.multipleParents",
      "classification": "failure",
      "meaning": "The manifest has more than one ingredient whose relationship is parentOf .",
      "scope": "C2PA Claim Box"
    },
    {
      "code": "manifest.structuredText.emptyReference",
      "classification": "failure",
      "meaning": "A structured text manifest block was found but the manifest reference between the delimiters is empty or contains only whitespace.",
      "scope": "Text Content"
    },
    {
      "code": "manifest.structuredText.malformedReference",
      "classification": "failure",
      "meaning": "A structured text manifest block was found but the manifest reference is not a valid URL or data: URI.",
      "scope": "Text Content"
    },
    {
      "code": "manifest.structuredText.multipleReferences",
      "classification": "failure",
      "meaning": "More than one C2PA manifest block was found in the structured text file.",
      "scope": "Text Content"
    },
    {
      "code": "manifest.structuredText.noManifest",
      "classification": "failure",
      "meaning": "The structured text file does not contain a valid manifest block (no delimiters found, or only one delimiter found).",
      "scope": "Text Content"
    },
    {
      "code": "manifest.structuredText.noResolutionPath",
      "classification": "failure",
      "meaning": "A structured text manifest block was found but no manifest resolution path could be determined.",
      "scope": "Text Content"
    },
    {
      "code": "manifest.timestamp.invalid",
      "classification": "failure",
      "meaning": "The manifest is a time-stamp manifest, but it contains a disallowed (non-ingredient) assertion.",
      "scope": "C2PA Claim Box"
    },
    {
      "code": "manifest.timestamp.wrongParents",
      "classification": "failure",
      "meaning": "The manifest is an time-stamp manifest, but it contains either zero or multiple parentOf ingredients.",
      "scope": "C2PA Claim Box"
    },
    {
      "code": "manifest.text.corruptedWrapper",
      "classification": "failure",
      "meaning": "A C2PATextManifestWrapper magic number was detected, but the wrapper itself was malformed or incomplete.",
      "scope": "Text Content"
    },
    {
      "code": "manifest.text.multipleWrappers",
      "classification": "failure",
      "meaning": "More than one valid C2PATextManifestWrapper was found in the text.",
      "scope": "Text Content"
    },
    {
      "code": "manifest.update.invalid",
      "classification": "failure",
      "meaning": "The manifest is an update manifest, but it contains a disallowed assertion, such as a hard binding or actions assertions.",
      "scope": "C2PA Claim Box"
    },
    {
      "code": "manifest.update.wrongParents",
      "classification": "failure",
      "meaning": "The manifest is an update manifest, but it contains either zero or multiple parentOf ingredients.",
      "scope": "C2PA Claim Box"
    },
    {
      "code": "signingCredential.invalid",
      "classification": "failure",
      "meaning": "The signing credential is not valid for signing.",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "signingCredential.ocsp.revoked",
      "classification": "failure",
      "meaning": "The OCSP response indicates that the signing credential has been revoked by the issuer.",
      "scope": "C2PA Claim Signature Box"
    },
    {
      "code": "signingCredential.untrusted",
      "classification": "failure",
      "meaning": "The signing credential is not listed on any of the validator’s applicable trust lists .",
      "scope": "C2PA Claim Signature Box"
    }
  ],
  "limitations": {
    "customCodesIncluded": false,
    "customCodeMeaningInferred": false,
    "validationPerformed": false
  }
}
