# sanmarcsoft/verifieddit-extension architecture

> Architecture diagram of the GitHub repository sanmarcsoft/verifieddit-extension, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sanmarcsoft/verifieddit-extension
- Repository: https://github.com/sanmarcsoft/verifieddit-extension

## Overview

Verifieddit is a browser extension that locally verifies C2PA credentials on webpage media. Its main workflow scans media (automatically or on request), validates credentials, evaluates signer trust, and presents a badge and inspection panel. The README also documents certificate and timestamp details, durable-credential checks, and an interactive provenance graph. Several runtime modules are represented from the file tree and README; their internal call wiring is not shown in the sampled source, so uncertain links are omitted.

Main entry points: [`src/inject.ts`](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/inject.ts) (Content scanner), [`src/provenanceDiagram.ts`](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/provenanceDiagram.ts) (Interactive graph), [`src/webComponents.ts`](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/webComponents.ts) (Credential display), [`src/trustlist.ts`](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/trustlist.ts) (Trust lists)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_scan["Media scanning"]
  node_inject["Content scanner<br/>[inject.ts]"]
  node_monitor["Media monitor<br/>[mediaMonitor.ts]"]
  node_records["Media records<br/>[mediaRecord.ts]"]
  node_background["Background worker<br/>[background.ts]"]
end

subgraph group_verify["Credential verification"]
  node_c2pa["C2PA verifier<br/>[c2pa.ts]"]
  node_proxy["Verifier proxy<br/>[c2paProxy.ts]"]
  node_formats["Format parsers"]
  node_cose["Signature decoding<br/>[cose.ts]"]
  node_certs["Certificate checks<br/>[certs.ts]"]
  node_durability["Durability check<br/>[perceptualHash.ts]"]
end

subgraph group_trust["Trust and verdict"]
  node_trustlist[("Trust lists<br/>[trustlist.ts]")]
  node_trustproxy["Trust-list proxy<br/>[trustlistProxy.ts]"]
  node_verdict["Verification verdict<br/>[verdict.ts]"]
  node_validity["Signature validity"]
end

subgraph group_ui["Extension interface"]
  node_popup["Popup and options<br/>[popup.ts]"]
  node_overlay["Inspection overlay<br/>[overlay.ts]"]
  node_components["Credential display<br/>[webComponents.ts]"]
  node_icons["Media badges<br/>[icon.ts]"]
end

subgraph group_provenance["Provenance inspection"]
  node_provgraph["Provenance model<br/>[provenanceGraph.ts]"]
  node_provdiagram["Interactive graph"]
  node_provtypes["Graph types<br/>[provenanceTypes.ts]"]
  node_export["Graph export<br/>[provenanceCsv.ts]"]
end

node_person(("Browser user"))
node_media["Webpage media"]

node_person -->|"browses"| node_media
node_media -->|"scanned by"| node_inject
node_person -->|"requests verification"| node_inject
node_inject -->|"tracks media"| node_monitor
node_monitor -->|"maintains state"| node_records
node_inject -->|"dispatches request"| node_background
node_background -->|"routes verification"| node_proxy
node_proxy -->|"invokes verifier"| node_c2pa
node_c2pa -->|"parses media"| node_formats
node_formats -->|"decodes signature data"| node_cose
node_cose -->|"parses certificates"| node_certs
node_inject -->|"loads and checks lists"| node_trustlist
node_trustlist -.->|"uses proxy"| node_trustproxy
node_inject -->|"classifies result"| node_verdict
node_verdict -->|"evaluates expiry"| node_validity
node_inject -->|"updates badge"| node_icons
node_inject -->|"opens inspection"| node_overlay
node_overlay -->|"renders result"| node_components
node_components -.->|"shows durability"| node_durability
node_components -->|"displays provenance"| node_provdiagram
node_provdiagram -->|"renders model"| node_provgraph
node_provdiagram -->|"uses graph types"| node_provtypes
node_provdiagram -->|"exports graph data"| node_export
node_person -->|"opens controls"| node_popup
node_popup -->|"configures lists"| node_trustlist

click node_inject "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/inject.ts"
click node_monitor "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/mediaMonitor.ts"
click node_records "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/mediaRecord.ts"
click node_background "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/background.ts"
click node_c2pa "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/c2pa.ts"
click node_proxy "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/c2paProxy.ts"
click node_formats "https://github.com/sanmarcsoft/verifieddit-extension/tree/main/src/certs"
click node_cose "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/certs/cose.ts"
click node_certs "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/certs/certs.ts"
click node_trustlist "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/trustlist.ts"
click node_trustproxy "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/trustlistProxy.ts"
click node_verdict "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/verdict.ts"
click node_validity "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/signatureValidity.ts"
click node_popup "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/popup.ts"
click node_overlay "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/overlay.ts"
click node_components "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/webComponents.ts"
click node_icons "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/icon.ts"
click node_durability "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/perceptualHash.ts"
click node_provgraph "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/provenanceGraph.ts"
click node_provdiagram "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/provenanceDiagram.ts"
click node_provtypes "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/provenanceTypes.ts"
click node_export "https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/provenanceCsv.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_inject,node_monitor,node_records,node_background,node_person toneBlue
class node_c2pa,node_proxy,node_formats,node_cose,node_certs,node_durability toneAmber
class node_trustlist,node_trustproxy,node_verdict,node_validity toneMint
class node_popup,node_overlay,node_components,node_icons toneRose
class node_provgraph,node_provdiagram,node_provtypes,node_export,node_media toneIndigo
```

## Components

### Media scanning

- [Content scanner](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/inject.ts): `src/inject.ts`
- [Media monitor](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/mediaMonitor.ts): `src/mediaMonitor.ts`
- [Media records](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/mediaRecord.ts): `src/mediaRecord.ts`
- [Background worker](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/background.ts): `src/background.ts`

### Credential verification

- [C2PA verifier](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/c2pa.ts): `src/c2pa.ts`
- [Verifier proxy](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/c2paProxy.ts): `src/c2paProxy.ts`
- [Format parsers](https://github.com/sanmarcsoft/verifieddit-extension/tree/main/src/certs): `src/certs`
- [Signature decoding](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/certs/cose.ts): `src/certs/cose.ts`
- [Certificate checks](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/certs/certs.ts): `src/certs/certs.ts`
- [Durability check](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/perceptualHash.ts): `src/perceptualHash.ts`

### Trust and verdict

- [Trust lists](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/trustlist.ts): `src/trustlist.ts`
- [Trust-list proxy](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/trustlistProxy.ts): `src/trustlistProxy.ts`
- [Verification verdict](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/verdict.ts): `src/verdict.ts`
- [Signature validity](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/signatureValidity.ts): `src/signatureValidity.ts`

### Extension interface

- [Popup and options](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/popup.ts): `src/popup.ts`
- [Inspection overlay](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/overlay.ts): `src/overlay.ts`
- [Credential display](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/webComponents.ts): `src/webComponents.ts`
- [Media badges](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/icon.ts): `src/icon.ts`

### Provenance inspection

- [Provenance model](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/provenanceGraph.ts): `src/provenanceGraph.ts`
- [Interactive graph](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/provenanceDiagram.ts): `src/provenanceDiagram.ts`
- [Graph types](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/provenanceTypes.ts): `src/provenanceTypes.ts`
- [Graph export](https://github.com/sanmarcsoft/verifieddit-extension/blob/main/src/provenanceCsv.ts): `src/provenanceCsv.ts`

### Other components

- **Browser user**
- **Webpage media**

## Connections

- Browser user → Webpage media: browses
- Webpage media → Content scanner: scanned by
- Browser user → Content scanner: requests verification
- Content scanner → Media monitor: tracks media
- Media monitor → Media records: maintains state
- Content scanner → Background worker: dispatches request
- Background worker → Verifier proxy: routes verification
- Verifier proxy → C2PA verifier: invokes verifier
- C2PA verifier → Format parsers: parses media
- Format parsers → Signature decoding: decodes signature data
- Signature decoding → Certificate checks: parses certificates
- Content scanner → Trust lists: loads and checks lists
- Trust lists → Trust-list proxy: uses proxy
- Content scanner → Verification verdict: classifies result
- Verification verdict → Signature validity: evaluates expiry
- Content scanner → Media badges: updates badge
- Content scanner → Inspection overlay: opens inspection
- Inspection overlay → Credential display: renders result
- Credential display → Durability check: shows durability
- Credential display → Interactive graph: displays provenance
- Interactive graph → Provenance model: renders model
- Interactive graph → Graph types: uses graph types
- Interactive graph → Graph export: exports graph data
- Browser user → Popup and options: opens controls
- Popup and options → Trust lists: configures lists
