diff --git a/build/.DS_Store b/build/.DS_Store index 14ec311..e316072 100644 Binary files a/build/.DS_Store and b/build/.DS_Store differ diff --git a/build/site/sitemap.xml b/build/site/sitemap.xml index b01f401..5c7832e 100644 --- a/build/site/sitemap.xml +++ b/build/site/sitemap.xml @@ -2,146 +2,146 @@ https://c2pa.org/specifications/specifications/2.1/index.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/2.1/softbinding/Decoupled.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/2.1/specs/C2PA_Specification.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/2.1/specs/ContentCredentials.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/2.0/index.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/2.0/specs/C2PA_Specification.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/2.0/ux/UX_Recommendations.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.4/ai-ml/ai_ml.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.4/attestations/attestation.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.4/decoupled/Decoupled.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.4/explainer/Explainer.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.4/guidance/Guidance.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.4/index.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.4/security/Harms_Modelling.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.4/security/Security_Considerations.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.4/specs/C2PA_Specification.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.4/ux/UX_Recommendations.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.3/ai-ml/ai_ml.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.3/explainer/Explainer.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.3/guidance/Guidance.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.3/index.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.3/specs/C2PA_Specification.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.2/explainer/Explainer.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.2/guidance/Guidance.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.2/index.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.2/specs/C2PA_Specification.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.1/index.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.1/specs/C2PA_Specification.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.1/ux/UX_Recommendations.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.0/explainer/Explainer.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.0/guidance/Guidance.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.0/index.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.0/security/Harms_Modelling.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.0/security/Security_Considerations.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.0/specs/C2PA_Specification.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z https://c2pa.org/specifications/specifications/1.0/ux/UX_Recommendations.html -2024-09-16T00:01:19.682Z +2024-09-19T11:57:28.109Z diff --git a/build/site/specifications/2.1/specs/C2PA_Specification.html b/build/site/specifications/2.1/specs/C2PA_Specification.html index 739a4b2..a552dd2 100644 --- a/build/site/specifications/2.1/specs/C2PA_Specification.html +++ b/build/site/specifications/2.1/specs/C2PA_Specification.html @@ -240,13 +240,7 @@

Content Credentials : C2PA Technical Specification : DRAFT

  • 5. Versioning
  • 6. Assertions @@ -383,6 +377,11 @@

    Content Credentials : C2PA Technical Specification : DRAFT

  • B.2. Partially Supported Schemas
  • +
  • Appendix C: Considerations for Deprecation + +
  • @@ -1099,7 +1098,7 @@

    5.1. Compat

    As the Content Credentials specification has evolved, constructs such as box labels, assertions (and their fields), claims and time-stamps have also evolved. New assertions have been added, and some existing assertions and the claim have newer versions with additional fields. In addition, some constructs have been deprecated. In this specification, when a construct is marked as deprecated, that means that a claim generator shall not write that construct (or value), but that a validator should read it.

    -

    To facilitate interoperability between claim generators and validators, a claim generator declares which version of the specification it is using to generate the claim. When a claim generator declares that it is using a version of the specification, it is declaring that the active manifest of the asset is produced in accordance with that version of the specification and thus does not contain any deprecated constructs listed under that version of the specification in [deprecated_constructs_table] of [versioning_annex].

    +

    To facilitate interoperability between claim generators and validators, a claim generator declares which version of the specification it is using to generate the claim. When a claim generator declares that it is using a version of the specification, it is declaring that the active manifest of the asset is produced in accordance with that version of the specification and thus does not contain any deprecated constructs listed under that version of the specification in Table 19, “Deprecated Constructs” of Appendix C, Considerations for Deprecation.

    @@ -1114,19 +1113,49 @@

    5.1. Compat

    -

    A validator shall be compatible with at least one version of the specification, but may be compatible with additional versions. A validator that is compatible with a specific version of the specification shall support all non-deprecated constructs listed for that version. If the validator encounters a manifest that uses constructs from a version of the specification that the validator does not support (either because they are deprecated or unknown), it may ignore the deprecated construct and process the rest of manifest as if that construct were not present. Alternatively, the validator may treat the entire manifest as having unknown provenance, by returning either the ingredient.unknownProvenance or manifest.unknownProvenance status code as appropriate. -# Version History

    -
    -
    -

    2.1 - July 2024

    +

    A validator shall be compatible with at least one version of the specification, but may be compatible with additional versions. A validator that is compatible with a specific version of the specification shall support all non-deprecated constructs listed for that version. If the validator encounters a manifest that uses constructs from a version of the specification that the validator does not support (either because they are deprecated or unknown), it may ignore the deprecated construct and process the rest of manifest as if that construct were not present. Alternatively, the validator may treat the entire manifest as having unknown provenance, by returning either the ingredient.unknownProvenance or manifest.unknownProvenance status code as appropriate.

    -

    5.2. 2.1 - August 2024

    +

    5.2. Version History

    +
    +

    5.2.1. 2.1 - September 2024

    +
    +

    This version focuses on both technical and editorial changes to the specification for the purposes of improving the security and reliability of Content Credentials. All publicly disclosed security vulnerabilities have been addressed, and the specification has been updated to reflect the latest best practices in the field.

    +
    +
    +
      +
    • +

      Clear definitions of Manifest & Asset states

      • +

        Well-formed Manifests

        +
      • +
      • +

        Valid Manifests

        +
      • +
      • +

        Trusted Manifests

        +
      • +
      • +

        Valid Assets

        +
      • +
      +
      +
    • +
    • +

      Clear definitions and processes for handling deprecation and versioning

      +
    • +
    • New c2pa URN namespace for labelling manifests!

      +
      +
        +
      • +

        including a fully specified ABNF

        +
      • +
      +
    • New ingredients v3 assertion

      @@ -1144,6 +1173,19 @@

      5.2. 2.
    • Added new validation status fields to accompany the new status info

    • +
    • +

      dc:title and dc:format are now optional

      +
    • +

    +
    + +
  • +

    New c2pa.hash.bmff.v3 assertion

    +
    +
      +
    • +

      Supports hashing of fixed & variable block sizes for BMFF-based assets

      +
  • @@ -1178,6 +1220,9 @@

    5.2. 2.
    • +

      Detailed validation instructions for all standard assertions

      +
    • +
    • Validation of ingredients is now required when using the ingredients assertion

    • @@ -1193,6 +1238,12 @@

      5.2. 2.

      Hashed URIs to data boxes, and any custom boxes, are now validated

    • +

      Defined procedure for handling manifests with matching unique IDs

      +
    • +
    • +

      Address "orphaned manifests" in the validation process

      +
    • +
    • LOTS of new validation status codes, including a new "informational" code type

    @@ -1232,6 +1283,9 @@

    5.2. 2.
    • +

      Either a c2pa.created or a c2pa.opened is now mandatory in a standard manifest

      +
    • +
    • Some new standard action types were added

    • @@ -1253,6 +1307,9 @@

      5.2. 2.

      Added some missing compatibility support for JPEG Trust

    • +

      Cleaned up all CDDLs, including removing any normative language

      +
    • +
    • And various areas of editorial improvements

        @@ -1271,8 +1328,8 @@

        5.2. 2.

    -
    -

    5.3. 2.0 - January 2024

    +
    +

    5.2.2. 2.0 - January 2024

    This version represents a significant departure from previous versions. It reduces the use of the term "actor", which no longer represents humans and organisations. In addition to validator-configured trust lists, it also introduces a new default trust list, the "C2PA Trust List", which is intended to cover certificates issued to hardware and software. This philosophical change led to the following functional changes in the specification:

    @@ -1398,8 +1455,8 @@

    5.3.

    -
    -

    5.4. 1.4 - November 2023

    +
    +

    5.2.3. 1.4 - November 2023

    • @@ -1447,8 +1504,8 @@

      5.4

    -
    -

    5.5. 1.3 - April 2023

    +
    +

    5.2.4. 1.3 - April 2023

    • @@ -1508,8 +1565,8 @@

      5.5. 1.3

    -
    -

    5.6. 1.2 - October 2022

    +
    +

    5.2.5. 1.2 - October 2022

    • @@ -1527,8 +1584,8 @@

      5.6.

    -
    -

    5.7. 1.1 - September 2022

    +
    +

    5.2.6. 1.1 - September 2022

    • @@ -1576,8 +1633,8 @@

      5

    -
    -

    5.8. 1.0 - December 2021

    +
    +

    5.2.7. 1.0 - December 2021

    • @@ -1588,6 +1645,7 @@

      5.8

    +
    -

    A Time-Stamp Manifest shall contain only a single assertion, which is the c2pa.ingredient.v3 assertion that (a) includes a activeManifest field with a value that is the URI reference to that C2PA Manifest that is being updated and (b) has the value of parentOf for the relationship field.

    +

    A Time-Stamp Manifest shall contain only a single assertion, which is the c2pa.ingredient.v3 assertion that (a) includes an activeManifest field with a value that is the URI reference to that C2PA Manifest that is being updated and (b) has the value of parentOf for the relationship field.

    @@ -3618,9 +3684,14 @@

    14.3. Validation states

    +
    +

    14.3.1. General

    A validator is a Manifest Consumer that will make some validation statements about that asset and its associated active manifest. The process for retrieving these statements is described in the validation section. The actor consuming the asset, usually through their user agent and its user interface, then has to interpret those statements to arrive at a set of conclusions of their own about the provenance of the asset they are consuming. These conclusions will be drawn from those statements and the contents of the asset itself.

    +
    +
    +

    14.3.2. Manifest States

    Based on these statements, a C2PA Manifest can be considered one of the following:

    @@ -3649,11 +3720,15 @@

    14.

    +
    +
    +

    14.3.3. Asset States

    If a validator reports that the portions of the asset that are covered by content bindings have not been modified since the active manifest was produced [Section 15.12, “Validate the Asset’s Content”], and its active manifest is either Valid or Trusted, then the asset itself can be considered to be a Valid asset.

    +
    -

    14.3.1. Well-Formed Manifest

    +

    14.3.4. Well-Formed Manifest

    A C2PA Manifest is Well-Formed if validation determines that each of the following is true:

    @@ -3669,20 +3744,20 @@

    <

    The assertions of the manifest meet all the requirements for assertions [Section 15.10.3, “Assertion Validation”].

  • -

    Any ingredients present in the manifest meet all the requirements for ingredients[Section 15.11, “Validate the Ingredients”].

    +

    Any ingredients present in the manifest meet all the requirements for ingredients [Section 15.11, “Validate the Ingredients”].

  • -

    14.3.2. Valid Manifest

    +

    14.3.5. Valid Manifest

    A C2PA Manifest is Valid if validation determines that each of the following is true:

    -

    14.3.3. Trusted Manifest

    +

    14.3.6. Trusted Manifest

    A C2PA Manifest is Trusted if validation determines that each of the following is true:

    • -

      The manifest is Valid [Section 14.3.2, “Valid Manifest”].

      +

      The manifest is Valid [Section 14.3.5, “Valid Manifest”].

    • The signing credential of the C2PA Manifest receives the success code of signingCredential.trusted [Section 15.7, “Validate the Signature”].

      @@ -4462,7 +4537,7 @@

      timeStamp.untrusted

      -

      The time-stamp credential is not listed on the validator’s trust lists.

      +

      The time-stamp credential is not listed on the validator’s TSA trust lists.

      C2PA Claim Signature Box

      @@ -4788,7 +4863,7 @@
      15.2.1.3. F

      15.3. Displaying Manifest Information

      -

      Manifest Consumers should not display data from manifests which are not Valid. If the Manifest Consumer chooses to display such data, it shall include as part of the display:

      +

      Manifest Consumers should not display data from manifests which are not Valid nor from assets which are not Valid. If the Manifest Consumer chooses to display such data, it shall include as part of the display:

        @@ -4807,7 +4882,7 @@

        -In authoring scenarios, it is desirable to more prominently raise warnings so that a creator making use of such an asset with a flawed provenance history can make an informed decision of how to proceed. +In authoring scenarios, it is desirable to more prominently raise warnings so that a creator can make an informed decision about how to proceed with an asset that is not Valid or that has a flawed provenance history . @@ -4849,7 +4924,7 @@

        <

        15.5. Locating the Active Manifest

        -

        15.5.1. General

        +

        15.5.1. General

        The last C2PA Manifest superbox in the C2PA Manifest Store superbox shall be considered the active manifest, but locating the C2PA Manifest Store may involve looking in a number of possible locations.

        @@ -4857,7 +4932,7 @@

        15.5.1. General

        15.5.2. Embedded

        -
        15.5.2.1. General
        +
        15.5.2.1. General

        The C2PA Manifest Store shall be located by the validator embedded inside the asset at the standard locations for embedding manifests. However, if an asset was retrieved via an HTTP connection, a validator may look for a Link header, as described in the Link Header clause below, to determine if a C2PA Manifest Store is present.

        @@ -5055,7 +5130,7 @@

        • -

          Retrieve the val property from the tstToken, which shall be an RFC3161-compliant TimeStampResp (time-stamp response)

          +

          Retrieve the val property from the tstToken, which shall be an RFC3161-compliant TimeStampResp (time-stamp response).

        • Check the value of the status field PKIStatusInfo, which is the value of the status field of TimeStampResp.

          @@ -5139,7 +5214,7 @@

          15.9. Validate the Credential Revocation Information

          -

          A validator will encounter one of two scenarios:

          +

          A validator will encounter one of the following three scenarios:

            @@ -5295,7 +5370,7 @@

            15.10.1. Validate the correct assertions for the type of manifest

            -
            15.10.1.1. General
            +
            15.10.1.1. General

            Depending on the type of manifest, there are assertions that are either required or forbidden. A validator shall check for required and not-permitted assertions.

            @@ -5308,7 +5383,7 @@
            1. -

              Validate that there is exactly one hard binding to content assertion - either a c2pa.hash.data, a c2pa.hash.boxes, a c2pa.hash.collection.data, c2pa.hash.bmff.v2 (deprecated), or a c2pa.hash.bmff.v3 based on the type of asset for which the manifest is destined. If no such assertion is present, the manifest shall be rejected with a failure code of claim.hardBindings.missing. If there is more than one such assertion, the manifest shall be rejected with a failure code of assertion.multipleHardBindings.

              +

              Validate that there is exactly one hard binding to content assertion - either a c2pa.hash.data, a c2pa.hash.boxes, a c2pa.hash.collection.data, c2pa.hash.bmff.v2 (deprecated), or a c2pa.hash.bmff.v3. If no such assertion is present, the manifest shall be rejected with a failure code of claim.hardBindings.missing. If there is more than one such assertion, the manifest shall be rejected with a failure code of assertion.multipleHardBindings.

            2. Validate that there are zero or one c2pa.ingredient assertions whose relationship is parentOf. If there is more than one, the manifest shall be rejected with a failure code of manifest.multipleParents.

              @@ -5376,7 +5451,7 @@

              15.10.3. Assertion Validation

              -
              15.10.3.1. General
              +
              15.10.3.1. General

              Each assertion in the created_assertions and gathered_assertions fields of the claim is a hashed_uri structure. For each assertion, the validator shall first determine if the URI reference in the url field is in the list of redacted assertions.

              @@ -5599,7 +5674,7 @@

              15.10.4. External Data Validation

              -
              15.10.4.1. General
              +
              15.10.4.1. General

              The contents of a cloud data assertion contains the URI references to and hashes of external data, are validated like any other assertion, but those references are not retrieved and validated as part of standard validation. A validator shall first successfully validate a claim before attempting to retrieve the external data referenced. A validator shall not attempt to retrieve external data from a rejected claim. As the retrieval of external data is optional, the inability to retrieve or validate external data shall not cause a claim to become rejected.

              @@ -5987,12 +6062,12 @@

              15.12. Validate the Asset’s Content

              -

              If the current manifest is an update manifest, its hard bindings shall be inherited from the parentOf ingredient’s manifest. If that manifest is also an update manifest, the search for a standard manifest shall recurse though the chain of ingredients. If no standard manifest is found, then the manifest shall be rejected with a failure code of manifest.update.wrongParents.

              +

              The asset’s content shall be validated using the hard binding in the active manifest if the active manifest is a standard manifest. If the active manifest is an update or time-stamp manifest, the hard binding shall be found in the parentOf ingredient’s manifest, or if that manifest is also an update or time-stamp manifest, by following the chain of parentOf ingredients to the first standard manifest. If no standard manifest is found, or the standard manifest has no hard binding, then the malformed manifest shall be rejected in accordance with Section 15.10.1, “Validate the correct assertions for the type of manifest”.

              15.12.1. Validating a data hash

              -
              15.12.1.1. General
              +
              15.12.1.1. General

              Once a standard manifest (and its bindings) has been located, the exclusion range(s) shall be extracted from the c2pa.hash.data assertion.

              @@ -6116,7 +6191,7 @@

              15.12.4. Validating a collection data hash

              -
              15.12.4.1. General
              +
              15.12.4.1. General

              Validation of a collection data hash assertion (c2pa.hash.collection.data) that has been located in a standard manifest shall be performed by iterating over the array of uris in the collection-data-hash-map. If there is no uris field present, then the manifest shall be rejected with a failure code of assertion.collectionHash.malformed.

              @@ -7131,7 +7206,7 @@

              1

              18.3.7. Localization

              -
              18.3.7.1. General
              +
              18.3.7.1. General

              It is important that consumers of C2PA manifests be able to understand the information in their native language, when possible. To this end, it is possible to add localization information for an assertion with a dictionary that is included in the assertion’s metadata.

              @@ -10337,9 +10412,9 @@
              -

              18.13.9. Informational URL

              +

              18.13.9. Informational URI

              -

              When it is necessary to provide a URL to a web page with information about the ingredient, such as detailed information about an AI/ML model, it should be placed as the value of the informational_URI field of the ingredient assertion.

              +

              When it is necessary to provide a URL to a web page with information about the ingredient, such as detailed information about an AI/ML model, it should be placed as the value of the informationalURI field of the ingredient assertion.

              @@ -10348,9 +10423,19 @@

              18.

              + +
              -
              -

              The informational_URI is not an authenticated link to the content of the ingredient itself, but something more generally of interest to a human user.

              +The informationalURI is not an authenticated link to the content of the ingredient itself, but something more generally of interest to a human user. +
              +
              + + + +
              + + +Older (and deprecated) versions of the ingredient assertion named this field informational_URI.
              @@ -10368,7 +10453,7 @@

              18.13.10. Thumbna

              18.13.11. Existing manifests

              -
              18.13.11.1. General
              +
              18.13.11.1. General

              If the ingredient has an existing C2PA Manifest Store, then all C2PA Manifests in the ingredient’s C2PA Manifest Store that have undergone validation, and that do not already exist in the asset’s C2PA Manifest Store, shall be copied by the claim generator into the asset’s C2PA Manifest Store, except as outlined in Section 18.13.12, “Determining the need to copy or copy and re-label existing manifests” or when directed not to do so (for example via user input or via configuration).

              @@ -10493,7 +10578,7 @@

              <
              18.13.12.1. Ingredient validation
              -
              18.13.12.1.1. General
              +
              18.13.12.1.1. General

              In addition, when the ingredient assertion references a C2PA Manifest, the claim generator shall also act as a validator, performing validation of the ingredient as described in validation steps. The result of that validation - all success codes, informational codes, and failure codes - shall be used in populating the ingredient assertion’s validationResults or validationStatus field as described below. This field is required to be present so that it can be used in future validations.

              @@ -10518,7 +10603,7 @@
              18.13.12.1.1. Gen
              18.13.12.1.2. V2 ingredient assertions (DEPRECATED)
              -

              In a v2 ingredient assertion with no c2pa_manifest field, the validationStatus field shall contain an empty array.

              +

              In a v2 ingredient assertion with no c2pa_manifest field, the validationStatus field is optional, but if present may contain an empty array.

              In a v2 ingredient assertion with c2pa_manifest field, each object in the validationStatus array consists of a code field whose value describes the validation status of a specific part of the manifest along with an optional success field whose boolean value indicates whether the code reflects success (true) or failure (false). An optional description of the validation status may be present in the explanation field if there is a need for an additional human readable explanation. In addition, each status-map object has a url field which should contain, in the case of failures, a JUMBF URI reference to the specific element in the manifest about which the status refers. Depending on the code, the url will be to a C2PA Claim, a C2PA Claim Signature or a specific C2PA Assertion. Status codes are defined in Section 15.2.1, “Standard Status Codes”.

              @@ -11872,7 +11957,7 @@
              A.2.9.2. Tabl

              A.3. Embedding manifests into PDFs

              -

              A.3.1. General

              +

              A.3.1. General

              All C2PA Manifest Stores shall be embedded using embedded file streams (ISO 32000, 7.11.4). The file specification dictionary shall have an AFRelationship key (ISO 32000, 7.11.3) whose value is C2PA_Manifest. If a C2PA Manifest Store is embedded into an encrypted PDF, the embedded file stream shall use an Identity crypt filter.

              @@ -12091,7 +12176,7 @@

              A.4.4. Auxiliary 'c2pa' Boxes for Large and Fragmented Files

              -
              A.4.4.1. General
              +
              A.4.4.1. General

              Some files have one or more very large 'mdat' boxes (e.g., large video or image files which may be downloaded and rendered progressively) or large numbers of independent 'mdat' boxes (e.g., fMP4 where each fragment can be downloaded independently).

              @@ -12416,7 +12501,7 @@

              A.4

              A.5. Embedding manifests into ZIP-based formats

              -

              A.5.1. General

              +

              A.5.1. General

              Because of its longevity and being an openly published specification, many command file formats are really ZIP archives, but with a specific organization of the content files. This includes formats such as EPUB, Office Open XML, Open Document and OpenXPS.

              @@ -12555,7 +12640,7 @@
              A.5.4.2 OpenXPS is based on the same Open Packaging Convention (OPC) standard as OOXML, and as such, the same approach applies. -:revdate: 2024-09-15 +:revdate: 2024-09-19 :version-label!: :sectnums: :sectnumlevels: 5 @@ -13479,9 +13564,278 @@

              B.2.9. PLUS

          -

          For more information about these, see http://ns.useplus.org/LDF/ldf-XMPSpecification.

          +

          For more information about these, see http://ns.useplus.org/LDF/ldf-XMPSpecification. +:revdate: 2024-09-19 +:version-label!: +:sectnums: +:sectnumlevels: 5 +:chapter-label: +:source-highlighter: rouge

          +
          +

        +

      +
      +

      Appendix C: Considerations for Deprecation

      +
      +
      +

      C.1. Deprecated Constructs

      + + ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table 19. Deprecated Constructs
      ConstructTypev1.3v1.4v2.0v2.1

      urn:uuid namespace

      Label

      DEPRECATED

      urn:c2pa namespace

      Label

      UNDEFINED

      UNDEFINED

      UNDEFINED

      sigTst timestamp

      Time-stamp

      sigTst2 timestamp

      Time-stamp

      UNDEFINED

      UNDEFINED

      UNDEFINED

      c2pa.claim

      Assertion

      DEPRECATED

      DEPRECATED

      c2pa.claim.v2

      Assertion

      UNDEFINED

      UNDEFINED

      c2pa.assertion.metadata

      Assertion

      c2pa.asset-ref

      Assertion

      c2pa.asset-type

      Assertion

      c2pa.action

      Assertion

      DEPRECATED

      DEPRECATED

      DEPRECATED

      c2pa.action.v2

      Assertion

      UNDEFINED

      c2pa.cloud-data

      Assertion

      c2pa.depthmap.GDepth

      Assertion

      c2pa.hash.bmff

      Assertion

      DEPRECATED

      DEPRECATED

      DEPRECATED

      DEPRECATED

      c2pa.hash.bmff.v2

      Assertion

      c2pa.hash.boxes

      Assertion

      c2pa.hash.collection.data

      Assertion

      c2pa.hash.data

      Assertion

      c2pa.ingredient

      Assertion

      DEPRECATED

      DEPRECATED

      c2pa.ingredient.v2

      Assertion

      UNDEFINED

      DEPRECATED

      c2pa.ingredient.v3

      Assertion

      UNDEFINED

      UNDEFINED

      UNDEFINED

      c2pa.metadata

      Assertion

      c2pa.soft-binding

      Assertion

      c2pa.thumbnail.claim.*

      Assertion

      c2pa.thumbnail.ingredient.*

      Assertion

      font.info

      Assertion

      stds.iptc

      Assertion

      DEPRECATED

      DEPRECATED

      stds.exif

      Assertion

      DEPRECATED

      DEPRECATED

      role in region-map

      Field

      DEPRECATED

      diff --git a/build/site/specifications/2.1/specs/ContentCredentials.html b/build/site/specifications/2.1/specs/ContentCredentials.html index 4715903..cf47cf5 100644 --- a/build/site/specifications/2.1/specs/ContentCredentials.html +++ b/build/site/specifications/2.1/specs/ContentCredentials.html @@ -1205,17 +1205,25 @@

      -

      To re-label a manifest: -- If the current URN does not contain a "Claim Generator identifier string", then the claim generator shall append a :. -- In all cases, the claim generator shall append a : to the URN followed by a monotonically increasing integer, starting with 1, followed by an underscore (_) and then an integer from the list below representing the reason for the re-labeling.

      +

      To re-label a manifest:

      • +

        If the current URN does not contain a "Claim Generator identifier string", then the claim generator shall append a :.

        +
      • +
      • +

        In all cases, the claim generator shall append a : to the URN followed by a monotonically increasing integer, starting with 1, followed by an underscore (_) and then an integer from the list below representing the reason for the re-labeling.

        +
        +
          +
        • 1: Conflict with another C2PA Manifest

        +
      • +
      +

      For example, if the claim generator has to re-label a C2PA Manifest for the second time due to a conflict, the appended string would be :2_1.

      @@ -2403,7 +2411,7 @@

      In some provenance workflows, a standard or update manifest is created offline, where it is not possible to obtain a trusted time-stamp (as per [RFC 3161]) from a TSA at the time of signing. In order to accommodate this, it is possible to use a Time-Stamp Manifest (UUID: 6332746D-0011-0010-8000-00AA00389B71 (c2tm)) to add the time-stamp in a later operation when a TSA can be contacted.

    -

    A Time-Stamp Manifest shall contain only a single assertion, which is the c2pa.ingredient.v3 assertion that (a) includes a activeManifest field with a value that is the URI reference to that C2PA Manifest that is being updated and (b) has the value of parentOf for the relationship field.

    +

    A Time-Stamp Manifest shall contain only a single assertion, which is the c2pa.ingredient.v3 assertion that (a) includes an activeManifest field with a value that is the URI reference to that C2PA Manifest that is being updated and (b) has the value of parentOf for the relationship field.

    @@ -2871,9 +2879,14 @@

    9.3. Validation states

    +
    +

    9.3.1. General

    A validator is a Manifest Consumer that will make some validation statements about that asset and its associated active manifest. The process for retrieving these statements is described in the validation section. The actor consuming the asset, usually through their user agent and its user interface, then has to interpret those statements to arrive at a set of conclusions of their own about the provenance of the asset they are consuming. These conclusions will be drawn from those statements and the contents of the asset itself.

    +
    +
    +

    9.3.2. Manifest States

    Based on these statements, a C2PA Manifest can be considered one of the following:

    @@ -2902,11 +2915,15 @@

    9.3

    +
    +
    +

    9.3.3. Asset States

    If a validator reports that the portions of the asset that are covered by content bindings have not been modified since the active manifest was produced [Validate the Asset’s Content], and its active manifest is either Valid or Trusted, then the asset itself can be considered to be a Valid asset.

    +
    -

    9.3.1. Well-Formed Manifest

    +

    9.3.4. Well-Formed Manifest

    A C2PA Manifest is Well-Formed if validation determines that each of the following is true:

    @@ -2922,13 +2939,13 @@

    <

    The assertions of the manifest meet all the requirements for assertions [Assertion Validation].

  • -

    Any ingredients present in the manifest meet all the requirements for ingredients[Validate the Ingredients].

    +

    Any ingredients present in the manifest meet all the requirements for ingredients [Validate the Ingredients].

  • -

    9.3.2. Valid Manifest

    +

    9.3.5. Valid Manifest

    A C2PA Manifest is Valid if validation determines that each of the following is true:

    @@ -2956,7 +2973,7 @@

    9.3.2. Va

    -

    9.3.3. Trusted Manifest

    +

    9.3.6. Trusted Manifest

    A C2PA Manifest is Trusted if validation determines that each of the following is true:

    @@ -3693,7 +3710,7 @@

    timeStamp.untrusted

    -

    The time-stamp credential is not listed on the validator’s trust lists.

    +

    The time-stamp credential is not listed on the validator’s TSA trust lists.

    C2PA Claim Signature Box

    @@ -4019,7 +4036,7 @@
    10.2.1.3. F

    10.3. Displaying Manifest Information

    -

    Manifest Consumers should not display data from manifests which are not Valid. If the Manifest Consumer chooses to display such data, it shall include as part of the display:

    +

    Manifest Consumers should not display data from manifests which are not Valid nor from assets which are not Valid. If the Manifest Consumer chooses to display such data, it shall include as part of the display:

      @@ -4038,7 +4055,7 @@

      -In authoring scenarios, it is desirable to more prominently raise warnings so that a creator making use of such an asset with a flawed provenance history can make an informed decision of how to proceed. +In authoring scenarios, it is desirable to more prominently raise warnings so that a creator can make an informed decision about how to proceed with an asset that is not Valid or that has a flawed provenance history . @@ -4080,7 +4097,7 @@

      <

      10.5. Locating the Active Manifest

      -

      10.5.1. General

      +

      10.5.1. General

      The last C2PA Manifest superbox in the C2PA Manifest Store superbox shall be considered the active manifest, but locating the C2PA Manifest Store may involve looking in a number of possible locations.

      @@ -4088,7 +4105,7 @@

      10.5.1. General

      10.5.2. Embedded

      -
      10.5.2.1. General
      +
      10.5.2.1. General

      The C2PA Manifest Store shall be located by the validator embedded inside the asset at the standard locations for embedding manifests. However, if an asset was retrieved via an HTTP connection, a validator may look for a Link header, as described in the Link Header clause below, to determine if a C2PA Manifest Store is present.

      @@ -4286,7 +4303,7 @@

      • -

        Retrieve the val property from the tstToken, which shall be an RFC3161-compliant TimeStampResp (time-stamp response)

        +

        Retrieve the val property from the tstToken, which shall be an RFC3161-compliant TimeStampResp (time-stamp response).

      • Check the value of the status field PKIStatusInfo, which is the value of the status field of TimeStampResp.

        @@ -4370,7 +4387,7 @@

        10.9. Validate the Credential Revocation Information

        -

        A validator will encounter one of two scenarios:

        +

        A validator will encounter one of the following three scenarios:

          @@ -4526,7 +4543,7 @@

          10.10.1. Validate the correct assertions for the type of manifest

          -
          10.10.1.1. General
          +
          10.10.1.1. General

          Depending on the type of manifest, there are assertions that are either required or forbidden. A validator shall check for required and not-permitted assertions.

          @@ -4539,7 +4556,7 @@
          1. -

            Validate that there is exactly one hard binding to content assertion - either a c2pa.hash.data, a c2pa.hash.boxes, a c2pa.hash.collection.data, c2pa.hash.bmff.v2 (deprecated), or a c2pa.hash.bmff.v3 based on the type of asset for which the manifest is destined. If no such assertion is present, the manifest shall be rejected with a failure code of claim.hardBindings.missing. If there is more than one such assertion, the manifest shall be rejected with a failure code of assertion.multipleHardBindings.

            +

            Validate that there is exactly one hard binding to content assertion - either a c2pa.hash.data, a c2pa.hash.boxes, a c2pa.hash.collection.data, c2pa.hash.bmff.v2 (deprecated), or a c2pa.hash.bmff.v3. If no such assertion is present, the manifest shall be rejected with a failure code of claim.hardBindings.missing. If there is more than one such assertion, the manifest shall be rejected with a failure code of assertion.multipleHardBindings.

          2. Validate that there are zero or one c2pa.ingredient assertions whose relationship is parentOf. If there is more than one, the manifest shall be rejected with a failure code of manifest.multipleParents.

            @@ -4607,7 +4624,7 @@

            10.10.3. Assertion Validation

            -
            10.10.3.1. General
            +
            10.10.3.1. General

            Each assertion in the created_assertions and gathered_assertions fields of the claim is a hashed_uri structure. For each assertion, the validator shall first determine if the URI reference in the url field is in the list of redacted assertions.

            @@ -4830,7 +4847,7 @@

            10.10.4. External Data Validation

            -
            10.10.4.1. General
            +
            10.10.4.1. General

            The contents of a cloud data assertion contains the URI references to and hashes of external data, are validated like any other assertion, but those references are not retrieved and validated as part of standard validation. A validator shall first successfully validate a claim before attempting to retrieve the external data referenced. A validator shall not attempt to retrieve external data from a rejected claim. As the retrieval of external data is optional, the inability to retrieve or validate external data shall not cause a claim to become rejected.

            @@ -5218,12 +5235,12 @@

            10.12. Validate the Asset’s Content

            -

            If the current manifest is an update manifest, its hard bindings shall be inherited from the parentOf ingredient’s manifest. If that manifest is also an update manifest, the search for a standard manifest shall recurse though the chain of ingredients. If no standard manifest is found, then the manifest shall be rejected with a failure code of manifest.update.wrongParents.

            +

            The asset’s content shall be validated using the hard binding in the active manifest if the active manifest is a standard manifest. If the active manifest is an update or time-stamp manifest, the hard binding shall be found in the parentOf ingredient’s manifest, or if that manifest is also an update or time-stamp manifest, by following the chain of parentOf ingredients to the first standard manifest. If no standard manifest is found, or the standard manifest has no hard binding, then the malformed manifest shall be rejected in accordance with Validate the correct assertions for the type of manifest.

            10.12.1. Validating a data hash

            -
            10.12.1.1. General
            +
            10.12.1.1. General

            Once a standard manifest (and its bindings) has been located, the exclusion range(s) shall be extracted from the c2pa.hash.data assertion.

            @@ -5347,7 +5364,7 @@

            10.12.4. Validating a collection data hash

            -
            10.12.4.1. General
            +
            10.12.4.1. General

            Validation of a collection data hash assertion (c2pa.hash.collection.data) that has been located in a standard manifest shall be performed by iterating over the array of uris in the collection-data-hash-map. If there is no uris field present, then the manifest shall be rejected with a failure code of assertion.collectionHash.malformed.

            @@ -6141,7 +6158,7 @@

            1

            11.3.7. Localization

            -
            11.3.7.1. General
            +
            11.3.7.1. General

            It is important that consumers of C2PA manifests be able to understand the information in their native language, when possible. To this end, it is possible to add localization information for an assertion with a dictionary that is included in the assertion’s metadata.

            @@ -9336,9 +9353,9 @@
            -

            11.13.9. Informational URL

            +

            11.13.9. Informational URI

            -

            When it is necessary to provide a URL to a web page with information about the ingredient, such as detailed information about an AI/ML model, it should be placed as the value of the informational_URI field of the ingredient assertion.

            +

            When it is necessary to provide a URL to a web page with information about the ingredient, such as detailed information about an AI/ML model, it should be placed as the value of the informationalURI field of the ingredient assertion.

            @@ -9347,9 +9364,19 @@

            11.

            + +
            -
            -

            The informational_URI is not an authenticated link to the content of the ingredient itself, but something more generally of interest to a human user.

            +The informationalURI is not an authenticated link to the content of the ingredient itself, but something more generally of interest to a human user. +
            +
            + + + +
            + + +Older (and deprecated) versions of the ingredient assertion named this field informational_URI.
            @@ -9367,7 +9394,7 @@

            11.13.10. Thumbna

            11.13.11. Existing manifests

            -
            11.13.11.1. General
            +
            11.13.11.1. General

            If the ingredient has an existing C2PA Manifest Store, then all C2PA Manifests in the ingredient’s C2PA Manifest Store that have undergone validation, and that do not already exist in the asset’s C2PA Manifest Store, shall be copied by the claim generator into the asset’s C2PA Manifest Store, except as outlined in Determining the need to copy or copy and re-label existing manifests or when directed not to do so (for example via user input or via configuration).

            @@ -9492,7 +9519,7 @@

            <
            11.13.12.1. Ingredient validation
            -
            11.13.12.1.1. General
            +
            11.13.12.1.1. General

            In addition, when the ingredient assertion references a C2PA Manifest, the claim generator shall also act as a validator, performing validation of the ingredient as described in validation steps. The result of that validation - all success codes, informational codes, and failure codes - shall be used in populating the ingredient assertion’s validationResults or validationStatus field as described below. This field is required to be present so that it can be used in future validations.

            @@ -9517,7 +9544,7 @@
            11.13.12.1.1. Gen
            11.13.12.1.2. V2 ingredient assertions (DEPRECATED)
            -

            In a v2 ingredient assertion with no c2pa_manifest field, the validationStatus field shall contain an empty array.

            +

            In a v2 ingredient assertion with no c2pa_manifest field, the validationStatus field is optional, but if present may contain an empty array.

            In a v2 ingredient assertion with c2pa_manifest field, each object in the validationStatus array consists of a code field whose value describes the validation status of a specific part of the manifest along with an optional success field whose boolean value indicates whether the code reflects success (true) or failure (false). An optional description of the validation status may be present in the explanation field if there is a need for an additional human readable explanation. In addition, each status-map object has a url field which should contain, in the case of failures, a JUMBF URI reference to the specific element in the manifest about which the status refers. Depending on the code, the url will be to a C2PA Claim, a C2PA Claim Signature or a specific C2PA Assertion. Status codes are defined in Standard Status Codes.

            @@ -10845,7 +10872,7 @@
            A.2.9.2. Tabl

            A.3. Embedding manifests into PDFs

            -

            A.3.1. General

            +

            A.3.1. General

            All C2PA Manifest Stores shall be embedded using embedded file streams (ISO 32000, 7.11.4). The file specification dictionary shall have an AFRelationship key (ISO 32000, 7.11.3) whose value is C2PA_Manifest. If a C2PA Manifest Store is embedded into an encrypted PDF, the embedded file stream shall use an Identity crypt filter.

            @@ -11064,7 +11091,7 @@

            A.4.4. Auxiliary 'c2pa' Boxes for Large and Fragmented Files

            -
            A.4.4.1. General
            +
            A.4.4.1. General

            Some files have one or more very large 'mdat' boxes (e.g., large video or image files which may be downloaded and rendered progressively) or large numbers of independent 'mdat' boxes (e.g., fMP4 where each fragment can be downloaded independently).

            @@ -11378,7 +11405,7 @@

            A.4

            A.5. Embedding manifests into ZIP-based formats

            -

            A.5.1. General

            +

            A.5.1. General

            Because of its longevity and being an openly published specification, many command file formats are really ZIP archives, but with a specific organization of the content files. This includes formats such as EPUB, Office Open XML, Open Document and OpenXPS.

            @@ -11517,7 +11544,7 @@
            A.5.4.2 OpenXPS is based on the same Open Packaging Convention (OPC) standard as OOXML, and as such, the same approach applies. -:revdate: 2024-09-15 +:revdate: 2024-09-19 :version-label!: :sectnums: :sectnumlevels: 5 diff --git a/build/site/specifications/2.1/specs/_attachments/C2PA_Specification.pdf b/build/site/specifications/2.1/specs/_attachments/C2PA_Specification.pdf index 63a32c0..7835ab0 100644 Binary files a/build/site/specifications/2.1/specs/_attachments/C2PA_Specification.pdf and b/build/site/specifications/2.1/specs/_attachments/C2PA_Specification.pdf differ