Chain-of-custody integrity-manifest export
Export a study with a SHA-256 integrity manifest and audit snapshot so recipients can detect corruption or modification.
Problem
For regulatory or legal purposes, you want to export a DICOM file alongside an integrity manifest that lets a recipient detect whether the file (or its audit snapshot) was corrupted or modified after export. The manifest is a SHA-256 hash stored in a detached sidecar (.dcm.sig) that can be independently re-checked.
Scope. The manifest carries a SHA-256 byte hash and a bound audit snapshot, and the sidecar is asymmetrically signed (ECDSA P-256 / ES256), so it is tamper-evident and proves authorship. See use case 10.5 for the signing identity and signature-verification workflow.
Steps
- Open the DICOM file — click Open files… (⌘O) and load the file to export.
- Export with integrity manifest — click the Export button in the top bar, then select Export with Integrity Manifest….
- Download outputs — the system produces two files:
filename_export.dcm(the exported DICOM file) andfilename_export.dcm.sig(the detached integrity manifest sidecar). - Verify integrity later — open the Verify Integrity Manifest modal (⌘P, then “Verify integrity manifest…”). Upload the
.dcmfile and its.dcm.sigsidecar. Click Verify — the modal shows “Signature verified” in green, with the signer fingerprint. - Test corruption detection — modify even a single byte of the
.dcmfile. Re-verify: the modal shows “Verification FAILED” in red, proving the signature detects any alteration. - Verification scope — the manifest hashes the entire DICOM file and its audit snapshot. Any change to either — no matter how small — causes verification to fail.
Result
The chain-of-custody export writes the DICOM file plus a signed .dcm.sig sidecar. Upload both in the Verify modal and an unmodified file reads “Signature verified” with the signer fingerprint; change even one byte (or an audit snapshot) and it reads “Verification FAILED”. The ES256 signature provides adversarial tamper-evidence and authorship — see use case 10.5.