|
| 1 | +--- |
| 2 | +id: reading-cawg-id |
| 3 | +title: Reading CAWG identity assertions |
| 4 | +--- |
| 5 | + |
| 6 | +The [Creator Assertions Working Group (CAWG)](https://cawg.io/) identity assertion enables a credential holder to prove control over a digital identity and to use that identity to document a content creator’s role(s) in a C2PA asset’s lifecycle. |
| 7 | + |
| 8 | +<div class="review-comment"> |
| 9 | +Revise to focus on reading these assertions. |
| 10 | +</div> |
| 11 | + |
| 12 | +The SDK can read and validate CAWG identity assertions provided: |
| 13 | + |
| 14 | +- Using an [X.509 certificate](https://cawg.io/identity/1.1/#_x_509_certificates_and_cose_signatures) to sign the identity claims. Enterprises or large organizations can use this approach to assert their identity in a particular trust ecosystem; for example, a news organization or publisher. The SDK can validate and sign these claims. |
| 15 | +- Using an [identity claim aggregator](https://cawg.io/identity/1.1/#_identity_claims_aggregation). Individuals can use this approach to document their role in creating an asset by using identity signals collected and verified by a third-party aggregator. The SDK can validate these claims only. Signing is not supported. |
| 16 | + |
| 17 | +## Identity assertions provided using an X.509 certificate |
| 18 | + |
| 19 | +In an identity assertion by using an X.509 certificate, the value of `signer_payload.sig_type` is `cawg.x509.cose`. The signature value must be a COSE signature as described in the [CAWG Identity Assertion technical specification](https://cawg.io/identity/1.1/#_x_509_certificates_and_cose_signatures). |
| 20 | + |
| 21 | +## Identity assertions provided using a claim aggregator |
| 22 | + |
| 23 | +As defined in the [CAWG Identity Assertion technical specification](https://cawg.io/identity/1.1/#_identity_claims_aggregation), an identity assertion can be signed using a trusted third-party intermediary known as a _identity claims aggregator_ to gather these signals and to restate them on their behalf. |
| 24 | + |
| 25 | +The identity claims aggregator: |
| 26 | + |
| 27 | +- Collects and verifies identity attestation claims from various identity providers such as social media sites and ID verification vendors. |
| 28 | +- Creates a unique asset-specific credential that binds the identity attestation claims to a specific asset. |
| 29 | + |
| 30 | +## Identity assertion |
| 31 | + |
| 32 | +An identity assertion using an identity claims aggregator has this general form in JSON: |
| 33 | + |
| 34 | +```json |
| 35 | +"assertions": [ |
| 36 | + ... |
| 37 | + { |
| 38 | + "label": "cawg.identity", |
| 39 | + "data": { |
| 40 | + "@context": [ |
| 41 | + "https://www.w3.org/ns/credentials/v2", |
| 42 | + "https://cawg.io/identity/1.1/ica/context/" |
| 43 | + ], |
| 44 | + "type": [ |
| 45 | + "VerifiableCredential", |
| 46 | + "IdentityClaimsAggregationCredential" |
| 47 | + ], |
| 48 | + "issuer": "did:web:connected-identities.identity.adobe.com", |
| 49 | + "validFrom": "2025-04-29T17:34:44Z", |
| 50 | + "verifiedIdentities": [ |
| 51 | + { |
| 52 | + "type": "cawg.<type>", |
| 53 | + "username": "<string>", |
| 54 | + "uri": "<uri>", |
| 55 | + "verifiedAt": "<DateTime>", |
| 56 | + "provider": { |
| 57 | + "id": "<string>", |
| 58 | + "name": "<string>" |
| 59 | + } |
| 60 | + }, |
| 61 | + ... |
| 62 | + ] |
| 63 | + } |
| 64 | + } |
| 65 | +] |
| 66 | +``` |
| 67 | + |
| 68 | +### Verified identity types |
| 69 | + |
| 70 | +The following table describes the allowed values of the `type` property of `verifiedIdentities` array elements. |
| 71 | + |
| 72 | +| Value | Meaning | |
| 73 | +|--------------|----------| |
| 74 | +| `cawg.document_verification` | The identity provider verified one or more government-issued identity documents presented by the content creator. |
| 75 | +| `cawg.web_site` | The content creator has proven control over a specific domain to the identity claims aggregator._ |
| 76 | +| `cawg.affiliation` | The identity provider is attesting to the content creator’s membership in an organization. This could be a professional organization or an employment relationship. |
| 77 | +| `cawg.social_media` | The content creator has demonstrated control over an account (typically a social media account) hosted by the identity provider. |
| 78 | +| `cawg.crypto_wallet` | The content creator has demonstrated control over an account (typically a crypto-wallet) hosted by the identity provider. |
| 79 | + |
| 80 | +:::note |
| 81 | +The above table is based on the [CAWG identity assertion technical specifications](https://cawg.io/identity/1.1/#vc-credentialsubject-verifiedidentity-type). |
| 82 | +::: |
| 83 | + |
| 84 | +### Example |
| 85 | + |
| 86 | +```json |
| 87 | +"assertions": [ |
| 88 | + ... |
| 89 | + { |
| 90 | + "label": "cawg.identity", |
| 91 | + "data": { |
| 92 | + "@context": [ |
| 93 | + "https://www.w3.org/ns/credentials/v2", |
| 94 | + "https://cawg.io/identity/1.1/ica/context/" |
| 95 | + ], |
| 96 | + "type": [ |
| 97 | + "VerifiableCredential", |
| 98 | + "IdentityClaimsAggregationCredential" |
| 99 | + ], |
| 100 | + "issuer": "did:web:connected-identities.identity.adobe.com", |
| 101 | + "validFrom": "2025-04-29T17:34:44Z", |
| 102 | + "verifiedIdentities": [ |
| 103 | + { |
| 104 | + "type": "cawg.social_media", |
| 105 | + "username": "xyz", |
| 106 | + "uri": "https://www.instagram.com/xyz", |
| 107 | + "verifiedAt": "2024-10-08T18:04:08Z", |
| 108 | + "provider": { |
| 109 | + "id": "https://instagram.com", |
| 110 | + "name": "instagram" |
| 111 | + } |
| 112 | + }, |
| 113 | + { |
| 114 | + "type": "cawg.social_media", |
| 115 | + "username": "xyz", |
| 116 | + "uri": "https://www.behance.net/xyz", |
| 117 | + "verifiedAt": "2024-10-22T19:31:17Z", |
| 118 | + "provider": { |
| 119 | + "id": "https://behance.net", |
| 120 | + "name": "behance" |
| 121 | + } |
| 122 | + }, |
| 123 | + { |
| 124 | + "type": "cawg.social_media", |
| 125 | + "username": "J Smith", |
| 126 | + "uri": "https://www.linkedin.com/in/jsmith", |
| 127 | + "verifiedAt": "2024-10-08T18:03:41Z", |
| 128 | + "provider": { |
| 129 | + "id": "https://linkedin.com", |
| 130 | + "name": "linkedin" |
| 131 | + } |
| 132 | + }, |
| 133 | + { |
| 134 | + "type": "cawg.social_media", |
| 135 | + "username": "xyz", |
| 136 | + "uri": "https://twitter.com/xyz", |
| 137 | + "verifiedAt": "2024-10-08T18:03:49Z", |
| 138 | + "provider": { |
| 139 | + "id": "https://twitter.com", |
| 140 | + "name": "twitter" |
| 141 | + } |
| 142 | + } |
| 143 | + ], |
| 144 | + "credentialSchema": [ |
| 145 | + { |
| 146 | + "id": "https://cawg.io/identity/1.1/ica/schema/", |
| 147 | + "type": "JSONSchema" |
| 148 | + } |
| 149 | + ] |
| 150 | + } |
| 151 | + } |
| 152 | + ... |
| 153 | +] |
| 154 | +``` |
| 155 | + |
0 commit comments