",
+ "trust_config": {
+ "description": "List of allowed extended key usage (EKU) object identifiers (OID) that\ncertificates must have.",
"type": [
"string",
"null"
],
"default": null
},
- "trust_config": {
- "description": "List of allowed extended key usage (EKU) object identifiers (OID) that\ncertificates must have.",
+ "user_anchors": {
"type": [
"string",
"null"
],
+ "deprecated": true,
"default": null
},
- "allowed_list": {
- "description": "List of explicitly allowed certificates as a PEM bundle.",
+ "trust_anchors": {
"type": [
"string",
"null"
],
+ "deprecated": true,
"default": null
}
}
},
- "CawgTrust": {
- "description": "Settings to configure the CAWG identity trust lists.\n\nThis configures trust used when validating CAWG identity assertions. It is\nmodeled separately from the C2PA [`Trust`] because several of these settings\n(such as `verify_trust_list`) apply only to CAWG validation and have no\neffect on C2PA manifest verification.",
+ "TrustAnchor": {
"type": "object",
"properties": {
- "verify_trust_list": {
- "description": "Whether to verify certificates against the trust lists specified in [`CawgTrust`].\n\nThe default value is true.\n\n\nVerifying trust is REQUIRED by the CAWG spec. This option should only be used for development or testing.\n
",
- "type": "boolean",
- "default": true
+ "trust_anchors": {
+ "description": "Specifies the details of a specific trust list. \n\nNormally this option contains the official C2PA-recognized trust anchors found here:\n\nor a user supplied trust list. This format is a PEM string of certificates.\nFor C2PA trust lists the TrustListKind should be ['Signer]\n\nWhen validating CAWG X.509 identity signatures.\n\nUnder the CAWG interim trust model (CAWG identity assertion spec §8.2.4.1,\nvalid for assertions issued on or before 31 March 2027 and carrying a\ntrusted time stamp), these are the CAWG-recognized trust anchors – the\nMozilla Root Store with the Email (S/MIME) trust bit enabled\n()\nand the IPTC Origin Verified News Publishers trust-anchor list\n() – not the C2PA conformance\ntrust-list. For CAWG trust the TrustListKind should be ['CAWG']",
+ "type": "string",
+ "default": ""
},
- "user_anchors": {
- "description": "List of additional user-provided trust anchor root certificates as a PEM\nbundle, used when validating CAWG X.509 identity signatures.\n\nThese trust lists are independent of the C2PA [`Trust`] settings and are\nconsulted only for CAWG identity validation.",
+ "trust_uri": {
+ "description": "URI identifier for the trust list. If not is present a unique identifier will be generated.",
"type": [
"string",
"null"
],
"default": null
},
- "trust_anchors": {
- "description": "List of default trust anchor root certificates as a PEM bundle, used when\nvalidating CAWG X.509 identity signatures.\n\nUnder the CAWG interim trust model (CAWG identity assertion spec §8.2.4.1,\nvalid for assertions issued on or before 31 March 2027 and carrying a\ntrusted time stamp), these are the CAWG-recognized trust anchors – the\nMozilla Root Store with the Email (S/MIME) trust bit enabled\n()\nand the IPTC Origin Verified News Publishers trust-anchor list\n() – not the C2PA conformance\ntrust-list.",
- "type": [
- "string",
- "null"
- ],
- "default": null
+ "trust_kind": {
+ "description": "Kind of trust list. This is used to determine the trust purpose, default is Signer.",
+ "$ref": "#/$defs/TrustListKind",
+ "default": "manifest"
},
"trust_config": {
- "description": "List of allowed extended key usage (EKU) object identifiers (OID) that\nCAWG identity certificates must have.\n\nThe CAWG interim trust model (CAWG identity assertion spec §8.2.4.1)\nrequires the `id-kp-emailProtection` EKU (1.3.6.1.5.5.7.3.4) together with\none of the CA/Browser Forum S/MIME certificate-policy OIDs:\norganization-validated (2.23.140.1.5.2.2 / 2.23.140.1.5.2.3),\nsponsor-validated (2.23.140.1.5.3.2 / 2.23.140.1.5.3.3), or\nindividual-validated (2.23.140.1.5.4.2 / 2.23.140.1.5.4.3). Mailbox-validated\nand legacy certificate purposes are not accepted.",
+ "description": "List of allowed extended key usage (EKU) object identifiers (OID) that\ncertificates must have. This will overlay the default top level trust_config.\nIf the trust_kind is CAWG it will override the top level trust config\n\n When validating CAWG identity certificates.\n\nThe CAWG interim trust model (CAWG identity assertion spec §8.2.4.1)\nrequires the `id-kp-emailProtection` EKU (1.3.6.1.5.5.7.3.4) together with\none of the CA/Browser Forum S/MIME certificate-policy OIDs:\norganization-validated (2.23.140.1.5.2.2 / 2.23.140.1.5.2.3),\nsponsor-validated (2.23.140.1.5.3.2 / 2.23.140.1.5.3.3), or\nindividual-validated (2.23.140.1.5.4.2 / 2.23.140.1.5.4.3). Mailbox-validated\nand legacy certificate purposes are not accepted.",
"type": [
"string",
"null"
@@ -204,7 +192,7 @@
"default": null
},
"allowed_list": {
- "description": "List of explicitly allowed CAWG identity certificates as a PEM bundle.\n\nUnder the CAWG interim trust model (CAWG identity assertion spec §8.2.4.1),\nthis corresponds to the IPTC Origin Verified News Publishers end-entity\ncertificate list ().",
+ "description": "List of explicitly allowed CAWG identity or Singing certificates as a PEM bundle.\n\nUnder the CAWG interim trust model (CAWG identity assertion spec §8.2.4.1),\nthis corresponds to the IPTC Origin Verified News Publishers end-entity\ncertificate list ().\n\nWhen used for C2PA this will not be C2PA trust list recognized or acknowledged certificates and\nshould only be used for non-C2PA conformant cases.",
"type": [
"string",
"null"
@@ -224,6 +212,14 @@
}
}
},
+ "TrustListKind": {
+ "type": "string",
+ "enum": [
+ "manifest",
+ "tsa",
+ "cawg"
+ ]
+ },
"Core": {
"description": "Settings to configure core features.\n\nThis struct is `#[non_exhaustive]`: construct it via [`Default`] (and the `with_*` builders on\n[`Settings`]) rather than a struct literal, so that future settings can be added without a\nbreaking change.",
"type": "object",
@@ -431,6 +427,10 @@
"bmff_hash_exclude_free_and_skip_boxes": {
"description": "Whether `/free` and `/skip` boxes are excluded from the BMFF/MP4 hard-binding hash.\n\n`/free` and `/skip` are reserved/padding space that apps commonly rewrite after\nsigning (e.g. to reclaim or repurpose it), so the C2PA spec permits excluding\nthem. Set to `false` to fold their content into the hash instead, so any later\nedit to either box invalidates the hard binding like any other content change.\n\nThe default value is `true`.",
"type": "boolean"
+ },
+ "ignore_ingredient_errors": {
+ "description": "Whether to ignore errors encountered while loading or validating an [`Ingredient`]'s\nmanifest (e.g. invalid file format).\n\nWhen enabled, a hard error is reported as a `general.error` in the ingredient's\n[`validation_results`] instead of being returned, so the [`Ingredient`] still loads\nand callers can inspect what went wrong.\n\nThe default value is false.\n\n[`Ingredient`]: crate::Ingredient\n[`validation_results`]: crate::Ingredient::validation_results",
+ "type": "boolean"
}
},
"required": [
@@ -438,7 +438,8 @@
"actions",
"prefer_box_hash",
"auto_timestamp_assertion",
- "bmff_hash_exclude_free_and_skip_boxes"
+ "bmff_hash_exclude_free_and_skip_boxes",
+ "ignore_ingredient_errors"
]
},
"ClaimGeneratorInfoSettings": {
@@ -987,7 +988,7 @@
"const": "parent"
},
{
- "description": "Fetch timestmaps for all manifests in the manifest store.",
+ "description": "Fetch timestamps for all manifests in the manifest store.",
"type": "string",
"const": "all"
}