Files
magdevandClaude Opus 5.5 4248bc791a The signing tool keeps no signature on the device (#1, bau-pm BAU-260)
PDF.js's signature dialog saved every signature in localStorage under
pdfjs.signature, "save" ticked on every open, for this origin rather
than for a bau-pm user. Measured on v0.1.0: a typed and an uploaded
signature were offered to a fresh page on the same browser, the way the
next person on a shared tablet would get it, a Redmine logout included.
Another browser profile saw nothing; the server never had anything.

The glue's fifth duty, in every window before PDF.js's modules: delete
the store (a device that saved signatures loses them on its first
visit), refuse writes to that key, hold the save box unticked through a
property on the element and hide it, and hide the dialog's Bild tab and
its file picker, so a scanned signature never enters the dialog.

test/signatures.mjs is the second gate, in CI and the release workflow:
a browser seeded with a real saved entry (captured from v0.1.0's own
store) is offered none, the dialog shows neither the box nor the tab, a
typed signature is placed and not stored, a fresh page is offered
nothing. Fed v0.1.0: 9 findings, exit 1. Against this image: 0, and the
zero-host gate drove 117 tool pages with nothing leaving the origin. A
signed PDF still exports with the signature on the page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 09:48:16 +01:00

1 line
1.3 KiB
JSON

{"description":"Vorher gespeichert","signatureData":"pZBLq1xFFIVXnXqeZz9v7o3GoE4EHSpB1KBCBEEQBXGi/8CxSgb6BxzpVCciOBbEiQNnkkSIkBglCl5R4315+3b3eVbVOafKdLpN5rqh4NuLWrX2rq857lQYA58S3K0zAFbtcwBeYsAnAJ4BcFGt+VEAb1DgMwBDAL9J4HMATwC4EgJfAHgFwCUBXNnohQCubt55UAHXNrpkwPUNv8jv8Tvhmh8G8BEFfgDwJIDv2JqfAnBe3ON35ZrP3eZGrXmV9RMHfgSwA+CqXDMDoAWwu+FXQ+CP2znj2zNcZsBfAM4C+IWveaU/Lda82vdteU+v1JoFgAsM2N94P6DAweYvh3LNlnbCTXbfFzxumYl/PnUQ2qznHKGddNv+DKUKSgd74Q3MTWNcgRO5iNNr9MTbrm/RBla5ye57ggsv2sH103txG3rGEJudfuzvoyz2oiFH0be21H1+x519HxRe636ZffOWW/pDf5PstloTyx0nr7PHuVII9QsfTvaJ803vDBrWCSjJo15or5tulWpPHztDOwnB2XYwe5lIQVUv6tFX0k3Be9Z0ZukLwpek7K3117NlaMI2JTFlit2vhITSKqczV2kdWEnCRCV0imEX27DmBYqusbZu97VqVLdjKIGiLPLCBAdtZ9GINq7PHb0GxrgEc9wk11KaYmIn82SfLnDidKtLm2M/8i7oYHRX8KNpMW5O+bEcpGFGEz+2YSubTlscRSXqTpekEvnWXmQjhDSSkSHGmpkpMBPLyHliXNt4yw/ehKRUQrbZ5cFJbKYtId2I8IiIltVB7cu2Xf4nz5IdJ77uO42O6p35BS9X+0mbXUryYT3qCOsjqCBQ4L3IyczaHHO2iIqs2uqGZBoNUzH1AzOax8d8huO+LquFm4t5ttw2Wz4iSqaDMAmmfmIzLTRpXWfccVrSBcpW18/eykpqSWXrpf0bBatFkRZbduzHPBnEGZ36UZuZsPJG9/MkZ3MU1mo46s7vZUVgUZkmb/+Pcy6WST5pdvyUx0kUUkWm/pSJrKq8XTmXbIGmr8rn/0xLqtHYZjXpoToeFlt2m6Qs5CLmGYn7UU6omepskZrgBEXfkI75ULAweADbOi3j2UMfz4s9b2TxWPMIJGccym59GWhveqcRwN05qc/UrcHvqfNBF+ZJGXfKx6I6a5My1aJitbPWL2gl86hKdepW9w/TXwfOkz6eK53au4pLZv/2s/jmyDumZR3VSUs8IQ6hD2WQ9kObNVEt6qDp27Zvgjw5TCvlpFcikD7rBjauQ01zVL3voxtZnXX/AA=="}