diff --git a/src/assets/css/sendattachments.scss b/src/assets/css/sendattachments.scss
index 3a798a1..b2c5d5b 100644
--- a/src/assets/css/sendattachments.scss
+++ b/src/assets/css/sendattachments.scss
@@ -585,7 +585,15 @@ $hiliteColor: #4642f1;
font-size: 16px;
line-height: 125%;
letter-spacing: 0.4px;
- vertical-align: middle;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ white-space: nowrap;
+ .v-icon {
+ flex: 0 0 24px;
+ width: 24px;
+ height: 24px;
+ }
}
.detail-subtitle {
diff --git a/src/assets/icons/ic_cr.vue b/src/assets/icons/ic_cr.vue
index 4093e70..ca2b06d 100644
--- a/src/assets/icons/ic_cr.vue
+++ b/src/assets/icons/ic_cr.vue
@@ -1,45 +1,16 @@
-
-
diff --git a/src/assets/icons/ic_media_camera.vue b/src/assets/icons/ic_media_camera.vue
new file mode 100644
index 0000000..5154d1b
--- /dev/null
+++ b/src/assets/icons/ic_media_camera.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/src/assets/icons/ic_media_device.vue b/src/assets/icons/ic_media_device.vue
new file mode 100644
index 0000000..c385903
--- /dev/null
+++ b/src/assets/icons/ic_media_device.vue
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/src/assets/icons/ic_media_flag.vue b/src/assets/icons/ic_media_flag.vue
new file mode 100644
index 0000000..6f40b1e
--- /dev/null
+++ b/src/assets/icons/ic_media_flag.vue
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/src/assets/icons/ic_media_screenshot.vue b/src/assets/icons/ic_media_screenshot.vue
new file mode 100644
index 0000000..34da826
--- /dev/null
+++ b/src/assets/icons/ic_media_screenshot.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
diff --git a/src/assets/translations/en.json b/src/assets/translations/en.json
index 32eb6d1..bf3714e 100644
--- a/src/assets/translations/en.json
+++ b/src/assets/translations/en.json
@@ -493,6 +493,9 @@
"content_credentials": "Content Credentials",
"content_credentials_info": "Source or history information is available for this media to be verified.",
"learn_more": "Learn more",
- "ai_used": "AI was used in this media"
+ "ai_used": "Photo modified with AI",
+ "screenshot_taken_on": "Screenshot taken on {date}",
+ "captured_with_camera": "Captured with a camera",
+ "old_photo": "Photo older than 3 months"
}
}
diff --git a/src/components/content-credentials/C2PAInfo.vue b/src/components/content-credentials/C2PAInfo.vue
index d301ad2..4df016b 100644
--- a/src/components/content-credentials/C2PAInfo.vue
+++ b/src/components/content-credentials/C2PAInfo.vue
@@ -2,15 +2,30 @@
{{ t("file_mode.content_credentials") }}
+ $vuetify.icons.ic_cr
-
$vuetify.icons.ic_exif_time{{ dateCreated }}
-
$vuetify.icons.ic_exif_device_camera{{ creator }}
-
+
+ $vuetify.icons.ic_media_screenshot{{ screenCapture }}
+
+
+
+ $vuetify.icons.ic_exif_time{{ dateCreatedDisplay }}
+
+ $vuetify.icons.ic_media_device{{ creator }}
+
+ $vuetify.icons.ic_media_camera{{ cameraCapture }}
+
+
+
$vuetify.icons.ic_cc_ai{{ t("file_mode.ai_used") }}
+
+ $vuetify.icons.ic_media_flag{{ t("file_mode.old_photo") }}
+
@@ -18,9 +33,19 @@
diff --git a/src/models/proof.ts b/src/models/proof.ts
index 06b7888..a562233 100644
--- a/src/models/proof.ts
+++ b/src/models/proof.ts
@@ -4,10 +4,18 @@ export type AIInferenceResult = {
humanProbability: number;
}
+export const C2PASourceTypeScreenCapture = "http://cv.iptc.org/newscodes/digitalsourcetype/screenCapture";
+export const C2PASourceTypeDigitalCapture = "http://cv.iptc.org/newscodes/digitalsourcetype/digitalCapture";
+export const C2PASourceTypeComputationalCapture = "http://cv.iptc.org/newscodes/digitalsourcetype/computationalCapture";
+export const C2PASourceTypeCompositeCapture = "http://cv.iptc.org/newscodes/digitalsourcetype/compositeCapture";
+export const C2PASourceTypeTrainedAlgorithmicMedia = "http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia";
+export const C2PASourceTypeCompositeWithTrainedAlgorithmicMedia = "http://cv.iptc.org/newscodes/digitalsourcetype/compositeWithTrainedAlgorithmicMedia";
+
export type C2PAActionsAssertion = {
actions: {
action: string;
softwareAgent?: string;
+ digitalSourceType?: string;
}[];
}
@@ -23,9 +31,18 @@ export type C2PAManifest = {
}
}
+export type C2PAValidationResults = {
+ activeManifest?: {
+ failure: any[];
+ success: any[];
+ informational: any[];
+ }
+}
+
export type C2PAManifestInfo = {
active_manifest: string;
manifests: {[key: string]: C2PAManifest};
+ validation_results?: C2PAValidationResults;
}
export type C2PAData = {