@contentauth/c2pa-web 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +51 -5
  2. package/dist/index.d.ts +3 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +59 -49
  5. package/dist/lib/c2pa.d.ts +7 -2
  6. package/dist/lib/c2pa.d.ts.map +1 -1
  7. package/dist/lib/reader.d.ts +38 -3
  8. package/dist/lib/reader.d.ts.map +1 -1
  9. package/dist/lib/settings.d.ts +27 -3
  10. package/dist/lib/settings.d.ts.map +1 -1
  11. package/dist/lib/worker.d.ts +3 -1
  12. package/dist/lib/worker.d.ts.map +1 -1
  13. package/dist/resources/c2pa_bg.wasm +0 -0
  14. package/package.json +11 -4
  15. package/CHANGELOG.md +0 -26
  16. package/eslint.config.mjs +0 -30
  17. package/project.json +0 -7
  18. package/src/index.ts +0 -15
  19. package/src/lib/c2pa.spec.ts +0 -166
  20. package/src/lib/c2pa.ts +0 -65
  21. package/src/lib/error.ts +0 -26
  22. package/src/lib/reader.ts +0 -150
  23. package/src/lib/settings.ts +0 -52
  24. package/src/lib/supportedFormats.ts +0 -72
  25. package/src/lib/worker/setupWorker.ts +0 -53
  26. package/src/lib/worker/workerManager.ts +0 -64
  27. package/src/lib/worker/workerObjectMap.ts +0 -35
  28. package/src/lib/worker/workerResponse.ts +0 -50
  29. package/src/lib/worker.ts +0 -77
  30. package/test/fixtures/assets/C_with_CAWG_data.jpg +0 -0
  31. package/test/fixtures/assets/C_with_CAWG_data.json +0 -144
  32. package/test/fixtures/assets/C_with_CAWG_data_thumbnail.jpg +0 -0
  33. package/test/fixtures/assets/C_with_CAWG_data_trusted.json +0 -149
  34. package/test/fixtures/assets/C_with_CAWG_data_untrusted.json +0 -157
  35. package/test/fixtures/assets/dash1.m4s +0 -0
  36. package/test/fixtures/assets/dashinit.json +0 -184
  37. package/test/fixtures/assets/dashinit.mp4 +0 -0
  38. package/test/fixtures/assets/no_alg.jpg +0 -0
  39. package/test/fixtures/trust/anchor-correct.pem +0 -15
  40. package/test/fixtures/trust/anchor-incorrect.pem +0 -16
  41. package/tsconfig.json +0 -13
  42. package/tsconfig.lib.json +0 -29
  43. package/tsconfig.spec.json +0 -36
  44. package/vite.config.ts +0 -91
@@ -1,50 +0,0 @@
1
- /**
2
- * Copyright 2025 Adobe
3
- * All Rights Reserved.
4
- *
5
- * NOTICE: Adobe permits you to use, modify, and distribute this file in
6
- * accordance with the terms of the Adobe license agreement accompanying
7
- * it.
8
- */
9
-
10
- export function postSuccess(payload?: any, transfer?: Transferable[]): void {
11
- const responseObject = {
12
- type: 'success',
13
- ...(payload !== undefined ? { payload } : {}),
14
- };
15
-
16
- postMessage(responseObject, transfer ?? []);
17
- }
18
-
19
- export function postError(error: unknown): void {
20
- postMessage({ type: 'error', error });
21
- }
22
-
23
- export interface ResponseHandlers {
24
- onSuccess: (data?: any) => void;
25
- onError: (error?: any) => void;
26
- }
27
-
28
- export function handleWorkerResponse(
29
- worker: Worker,
30
- responseHandlers: ResponseHandlers
31
- ) {
32
- worker.onmessage = (event) => {
33
- const { data } = event;
34
-
35
- if (data.type === 'success') {
36
- responseHandlers.onSuccess(data?.payload);
37
- } else {
38
- responseHandlers.onError(data?.error);
39
- }
40
- };
41
-
42
- // @TODO: should these have their own error handlers?
43
- worker.onerror = (event) => {
44
- responseHandlers.onError(event.error);
45
- };
46
-
47
- worker.onmessageerror = (event) => {
48
- responseHandlers.onError(event.data);
49
- };
50
- }
package/src/lib/worker.ts DELETED
@@ -1,77 +0,0 @@
1
- /**
2
- * Copyright 2025 Adobe
3
- * All Rights Reserved.
4
- *
5
- * NOTICE: Adobe permits you to use, modify, and distribute this file in
6
- * accordance with the terms of the Adobe license agreement accompanying
7
- * it.
8
- */
9
-
10
- /// <reference lib="webworker" />
11
-
12
- import { WasmReader, initSync, loadSettings } from '@contentauth/c2pa-wasm';
13
- import {
14
- setupWorker,
15
- WorkerFunctions,
16
- WorkerResponse,
17
- } from './worker/setupWorker.js';
18
- import { createWorkerObjectMap } from './worker/workerObjectMap.js';
19
-
20
- const readerMap = createWorkerObjectMap<WasmReader>();
21
-
22
- const workerFunctions = {
23
- async initWorker(module: WebAssembly.Module, settings?: string) {
24
- initSync(module);
25
-
26
- if (settings) {
27
- loadSettings(settings);
28
- }
29
- },
30
-
31
- // Reader creation methods
32
- async reader_fromBlob(
33
- format: string,
34
- blob: Blob
35
- ): Promise<WorkerResponse<number>> {
36
- const reader = await WasmReader.fromBlob(format, blob);
37
- const readerId = readerMap.add(reader);
38
- return { data: readerId };
39
- },
40
-
41
- async reader_fromBlobFragment(
42
- format: string,
43
- init: Blob,
44
- fragment: Blob
45
- ): Promise<WorkerResponse<number>> {
46
- const reader = await WasmReader.fromBlobFragment(format, init, fragment);
47
- const readerId = readerMap.add(reader);
48
- return { data: readerId };
49
- },
50
-
51
- // Reader object methods
52
- reader_json(readerId: number): WorkerResponse<string> {
53
- const reader = readerMap.get(readerId);
54
- return { data: reader.json() };
55
- },
56
- reader_activeLabel(readerId: number): WorkerResponse<string | null> {
57
- const reader = readerMap.get(readerId);
58
- return { data: reader.activeLabel() ?? null };
59
- },
60
- reader_resourceToBuffer(
61
- readerId: number,
62
- uri: string
63
- ): WorkerResponse<ArrayBuffer> {
64
- const reader = readerMap.get(readerId);
65
- const buffer = reader.resourceToBuffer(uri);
66
- return { data: buffer, transfer: [buffer] };
67
- },
68
- reader_free(readerId: number) {
69
- const reader = readerMap.get(readerId);
70
- reader.free();
71
- readerMap.remove(readerId);
72
- },
73
- } satisfies WorkerFunctions;
74
-
75
- export type WorkerDefinition = typeof workerFunctions;
76
-
77
- setupWorker(workerFunctions);
@@ -1,144 +0,0 @@
1
- {
2
- "active_manifest": "urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d",
3
- "manifests": {
4
- "urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d": {
5
- "claim_generator_info": [
6
- {
7
- "name": "c2pa cawg test",
8
- "version": "0.58.0",
9
- "org.contentauth.c2pa_rs": "0.58.0"
10
- }
11
- ],
12
- "title": "C_with_CAWG_data.jpg",
13
- "instance_id": "xmp:iid:855872d9-5358-497e-b7b4-afca591277e1",
14
- "thumbnail": {
15
- "format": "image/jpeg",
16
- "identifier": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/c2pa.thumbnail.claim"
17
- },
18
- "ingredients": [],
19
- "assertions": [
20
- {
21
- "label": "c2pa.actions.v2",
22
- "data": {
23
- "actions": [
24
- {
25
- "action": "c2pa.created",
26
- "digitalSourceType": " http://cv.iptc.org/newscodes/digitalsourcetype/digitalCapture"
27
- }
28
- ],
29
- "allActionsIncluded": true
30
- }
31
- },
32
- {
33
- "label": "cawg.training-mining",
34
- "data": {
35
- "entries": {
36
- "cawg.ai_inference": {
37
- "use": "notAllowed"
38
- },
39
- "cawg.ai_generative_training": {
40
- "use": "notAllowed"
41
- }
42
- }
43
- }
44
- },
45
- {
46
- "label": "cawg.identity",
47
- "data": {
48
- "signer_payload": {
49
- "referenced_assertions": [
50
- {
51
- "url": "self#jumbf=c2pa.assertions/cawg.training-mining",
52
- "hash": "rBBgURB+/0Bc2Uk3+blNpYTGQTxOwzXQ2xhjA3gsqI4="
53
- },
54
- {
55
- "url": "self#jumbf=c2pa.assertions/c2pa.hash.data",
56
- "hash": "sASozh9KFSkW+cyMI0Pw5KYoD2qn7MkUEq9jUUhe/sM="
57
- }
58
- ],
59
- "sig_type": "cawg.x509.cose"
60
- },
61
- "signature_info": {
62
- "alg": "Ed25519",
63
- "issuer": "C2PA Test Signing Cert",
64
- "cert_serial_number": "638838410810235485828984295321338730070538954823",
65
- "revocation_status": true
66
- }
67
- }
68
- }
69
- ],
70
- "signature_info": {
71
- "alg": "Es256",
72
- "issuer": "C2PA Test Signing Cert",
73
- "cert_serial_number": "640229841392226413189608867977836244731148734950",
74
- "time": "2025-07-29T23:13:49+00:00"
75
- },
76
- "label": "urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d"
77
- }
78
- },
79
- "validation_results": {
80
- "activeManifest": {
81
- "success": [
82
- {
83
- "code": "timeStamp.validated",
84
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.signature",
85
- "explanation": "timestamp message digest matched: DigiCert SHA256 RSA4096 Timestamp Responder 2025 1"
86
- },
87
- {
88
- "code": "claimSignature.insideValidity",
89
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.signature",
90
- "explanation": "claim signature valid"
91
- },
92
- {
93
- "code": "claimSignature.validated",
94
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.signature",
95
- "explanation": "claim signature valid"
96
- },
97
- {
98
- "code": "assertion.hashedURI.match",
99
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/c2pa.thumbnail.claim",
100
- "explanation": "hashed uri matched: self#jumbf=c2pa.assertions/c2pa.thumbnail.claim"
101
- },
102
- {
103
- "code": "assertion.hashedURI.match",
104
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/c2pa.actions.v2",
105
- "explanation": "hashed uri matched: self#jumbf=c2pa.assertions/c2pa.actions.v2"
106
- },
107
- {
108
- "code": "assertion.hashedURI.match",
109
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/c2pa.hash.data",
110
- "explanation": "hashed uri matched: self#jumbf=c2pa.assertions/c2pa.hash.data"
111
- },
112
- {
113
- "code": "assertion.hashedURI.match",
114
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/cawg.training-mining",
115
- "explanation": "hashed uri matched: self#jumbf=c2pa.assertions/cawg.training-mining"
116
- },
117
- {
118
- "code": "assertion.hashedURI.match",
119
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/cawg.identity",
120
- "explanation": "hashed uri matched: self#jumbf=c2pa.assertions/cawg.identity"
121
- },
122
- {
123
- "code": "assertion.dataHash.match",
124
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/c2pa.hash.data",
125
- "explanation": "data hash valid"
126
- },
127
- {
128
- "code": "cawg.identity.well-formed",
129
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/cawg.identity",
130
- "explanation": "CAWG X.509 identity signature valid"
131
- }
132
- ],
133
- "informational": [
134
- {
135
- "code": "timeStamp.untrusted",
136
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.signature",
137
- "explanation": "timestamp cert untrusted: DigiCert SHA256 RSA4096 Timestamp Responder 2025 1"
138
- }
139
- ],
140
- "failure": []
141
- }
142
- },
143
- "validation_state": "Valid"
144
- }
@@ -1,149 +0,0 @@
1
- {
2
- "active_manifest": "urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d",
3
- "manifests": {
4
- "urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d": {
5
- "assertions": [
6
- {
7
- "data": {
8
- "actions": [
9
- {
10
- "action": "c2pa.created",
11
- "digitalSourceType": " http://cv.iptc.org/newscodes/digitalsourcetype/digitalCapture"
12
- }
13
- ],
14
- "allActionsIncluded": true
15
- },
16
- "label": "c2pa.actions.v2"
17
- },
18
- {
19
- "data": {
20
- "entries": {
21
- "cawg.ai_generative_training": {
22
- "use": "notAllowed"
23
- },
24
- "cawg.ai_inference": {
25
- "use": "notAllowed"
26
- }
27
- }
28
- },
29
- "label": "cawg.training-mining"
30
- },
31
- {
32
- "data": {
33
- "signature_info": {
34
- "alg": "Ed25519",
35
- "cert_serial_number": "638838410810235485828984295321338730070538954823",
36
- "issuer": "C2PA Test Signing Cert",
37
- "revocation_status": true
38
- },
39
- "signer_payload": {
40
- "referenced_assertions": [
41
- {
42
- "hash": "rBBgURB+/0Bc2Uk3+blNpYTGQTxOwzXQ2xhjA3gsqI4=",
43
- "url": "self#jumbf=c2pa.assertions/cawg.training-mining"
44
- },
45
- {
46
- "hash": "sASozh9KFSkW+cyMI0Pw5KYoD2qn7MkUEq9jUUhe/sM=",
47
- "url": "self#jumbf=c2pa.assertions/c2pa.hash.data"
48
- }
49
- ],
50
- "sig_type": "cawg.x509.cose"
51
- }
52
- },
53
- "label": "cawg.identity"
54
- }
55
- ],
56
- "claim_generator_info": [
57
- {
58
- "name": "c2pa cawg test",
59
- "org.contentauth.c2pa_rs": "0.58.0",
60
- "version": "0.58.0"
61
- }
62
- ],
63
- "ingredients": [],
64
- "instance_id": "xmp:iid:855872d9-5358-497e-b7b4-afca591277e1",
65
- "label": "urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d",
66
- "signature_info": {
67
- "alg": "Es256",
68
- "cert_serial_number": "640229841392226413189608867977836244731148734950",
69
- "issuer": "C2PA Test Signing Cert",
70
- "time": "2025-07-29T23:13:49+00:00"
71
- },
72
- "thumbnail": {
73
- "format": "image/jpeg",
74
- "identifier": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/c2pa.thumbnail.claim"
75
- },
76
- "title": "C_with_CAWG_data.jpg"
77
- }
78
- },
79
- "validation_results": {
80
- "activeManifest": {
81
- "failure": [],
82
- "informational": [
83
- {
84
- "code": "timeStamp.untrusted",
85
- "explanation": "timestamp cert untrusted: DigiCert SHA256 RSA4096 Timestamp Responder 2025 1",
86
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.signature"
87
- }
88
- ],
89
- "success": [
90
- {
91
- "code": "timeStamp.validated",
92
- "explanation": "timestamp message digest matched: DigiCert SHA256 RSA4096 Timestamp Responder 2025 1",
93
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.signature"
94
- },
95
- {
96
- "code": "signingCredential.trusted",
97
- "explanation": "signing certificate trusted, found in System trust anchors",
98
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.signature"
99
- },
100
- {
101
- "code": "claimSignature.insideValidity",
102
- "explanation": "claim signature valid",
103
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.signature"
104
- },
105
- {
106
- "code": "claimSignature.validated",
107
- "explanation": "claim signature valid",
108
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.signature"
109
- },
110
- {
111
- "code": "assertion.hashedURI.match",
112
- "explanation": "hashed uri matched: self#jumbf=c2pa.assertions/c2pa.thumbnail.claim",
113
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/c2pa.thumbnail.claim"
114
- },
115
- {
116
- "code": "assertion.hashedURI.match",
117
- "explanation": "hashed uri matched: self#jumbf=c2pa.assertions/c2pa.actions.v2",
118
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/c2pa.actions.v2"
119
- },
120
- {
121
- "code": "assertion.hashedURI.match",
122
- "explanation": "hashed uri matched: self#jumbf=c2pa.assertions/c2pa.hash.data",
123
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/c2pa.hash.data"
124
- },
125
- {
126
- "code": "assertion.hashedURI.match",
127
- "explanation": "hashed uri matched: self#jumbf=c2pa.assertions/cawg.training-mining",
128
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/cawg.training-mining"
129
- },
130
- {
131
- "code": "assertion.hashedURI.match",
132
- "explanation": "hashed uri matched: self#jumbf=c2pa.assertions/cawg.identity",
133
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/cawg.identity"
134
- },
135
- {
136
- "code": "assertion.dataHash.match",
137
- "explanation": "data hash valid",
138
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/c2pa.hash.data"
139
- },
140
- {
141
- "code": "cawg.identity.well-formed",
142
- "explanation": "CAWG X.509 identity signature valid",
143
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/cawg.identity"
144
- }
145
- ]
146
- }
147
- },
148
- "validation_state": "Trusted"
149
- }
@@ -1,157 +0,0 @@
1
- {
2
- "active_manifest": "urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d",
3
- "manifests": {
4
- "urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d": {
5
- "claim_generator_info": [
6
- {
7
- "name": "c2pa cawg test",
8
- "version": "0.58.0",
9
- "org.contentauth.c2pa_rs": "0.58.0"
10
- }
11
- ],
12
- "title": "C_with_CAWG_data.jpg",
13
- "instance_id": "xmp:iid:855872d9-5358-497e-b7b4-afca591277e1",
14
- "thumbnail": {
15
- "format": "image/jpeg",
16
- "identifier": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/c2pa.thumbnail.claim"
17
- },
18
- "ingredients": [],
19
- "assertions": [
20
- {
21
- "label": "c2pa.actions.v2",
22
- "data": {
23
- "actions": [
24
- {
25
- "action": "c2pa.created",
26
- "digitalSourceType": " http://cv.iptc.org/newscodes/digitalsourcetype/digitalCapture"
27
- }
28
- ],
29
- "allActionsIncluded": true
30
- }
31
- },
32
- {
33
- "label": "cawg.training-mining",
34
- "data": {
35
- "entries": {
36
- "cawg.ai_inference": {
37
- "use": "notAllowed"
38
- },
39
- "cawg.ai_generative_training": {
40
- "use": "notAllowed"
41
- }
42
- }
43
- }
44
- },
45
- {
46
- "label": "cawg.identity",
47
- "data": {
48
- "signer_payload": {
49
- "referenced_assertions": [
50
- {
51
- "url": "self#jumbf=c2pa.assertions/cawg.training-mining",
52
- "hash": "rBBgURB+/0Bc2Uk3+blNpYTGQTxOwzXQ2xhjA3gsqI4="
53
- },
54
- {
55
- "url": "self#jumbf=c2pa.assertions/c2pa.hash.data",
56
- "hash": "sASozh9KFSkW+cyMI0Pw5KYoD2qn7MkUEq9jUUhe/sM="
57
- }
58
- ],
59
- "sig_type": "cawg.x509.cose"
60
- },
61
- "signature_info": {
62
- "alg": "Ed25519",
63
- "issuer": "C2PA Test Signing Cert",
64
- "cert_serial_number": "638838410810235485828984295321338730070538954823",
65
- "revocation_status": true
66
- }
67
- }
68
- }
69
- ],
70
- "signature_info": {
71
- "alg": "Es256",
72
- "issuer": "C2PA Test Signing Cert",
73
- "cert_serial_number": "640229841392226413189608867977836244731148734950",
74
- "time": "2025-07-29T23:13:49+00:00"
75
- },
76
- "label": "urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d"
77
- }
78
- },
79
- "validation_status": [
80
- {
81
- "code": "signingCredential.untrusted",
82
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.signature",
83
- "explanation": "signing certificate untrusted"
84
- },
85
- {
86
- "code": "claimSignature.mismatch",
87
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.signature",
88
- "explanation": "claim signature is not valid"
89
- }
90
- ],
91
- "validation_results": {
92
- "activeManifest": {
93
- "success": [
94
- {
95
- "code": "timeStamp.validated",
96
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.signature",
97
- "explanation": "timestamp message digest matched: DigiCert SHA256 RSA4096 Timestamp Responder 2025 1"
98
- },
99
- {
100
- "code": "assertion.hashedURI.match",
101
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/c2pa.thumbnail.claim",
102
- "explanation": "hashed uri matched: self#jumbf=c2pa.assertions/c2pa.thumbnail.claim"
103
- },
104
- {
105
- "code": "assertion.hashedURI.match",
106
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/c2pa.actions.v2",
107
- "explanation": "hashed uri matched: self#jumbf=c2pa.assertions/c2pa.actions.v2"
108
- },
109
- {
110
- "code": "assertion.hashedURI.match",
111
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/c2pa.hash.data",
112
- "explanation": "hashed uri matched: self#jumbf=c2pa.assertions/c2pa.hash.data"
113
- },
114
- {
115
- "code": "assertion.hashedURI.match",
116
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/cawg.training-mining",
117
- "explanation": "hashed uri matched: self#jumbf=c2pa.assertions/cawg.training-mining"
118
- },
119
- {
120
- "code": "assertion.hashedURI.match",
121
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/cawg.identity",
122
- "explanation": "hashed uri matched: self#jumbf=c2pa.assertions/cawg.identity"
123
- },
124
- {
125
- "code": "assertion.dataHash.match",
126
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/c2pa.hash.data",
127
- "explanation": "data hash valid"
128
- },
129
- {
130
- "code": "cawg.identity.well-formed",
131
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.assertions/cawg.identity",
132
- "explanation": "CAWG X.509 identity signature valid"
133
- }
134
- ],
135
- "informational": [
136
- {
137
- "code": "timeStamp.untrusted",
138
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.signature",
139
- "explanation": "timestamp cert untrusted: DigiCert SHA256 RSA4096 Timestamp Responder 2025 1"
140
- }
141
- ],
142
- "failure": [
143
- {
144
- "code": "signingCredential.untrusted",
145
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.signature",
146
- "explanation": "signing certificate untrusted"
147
- },
148
- {
149
- "code": "claimSignature.mismatch",
150
- "url": "self#jumbf=/c2pa/urn:c2pa:822f2ec0-ef27-4d95-88b4-74586c12873d/c2pa.signature",
151
- "explanation": "claim signature is not valid"
152
- }
153
- ]
154
- }
155
- },
156
- "validation_state": "Invalid"
157
- }
Binary file