Simple CLI to stamp and verify PDFs with sidecars (execution-only).
Project description
InkDNA Fingerprint (Simple CLI — PDF only)
A lean, Windows-friendly CLI to stamp and verify PDFs.
What it does
- stamp: embeds a compact InkDNA payload inside the PDF and writes a sidecar JSON next to the output (
*_inkdna_signature.json). - verify: reads the embedded payload and recomputes a canonical hash of the page content streams (ignoring our own payload). Optionally, pass a sidecar to cross-check. Prints full forensic details every time.
No activation, no licensing, no remote calls. Execution-only.
Install (from PyPI)
py -m pip install --upgrade pip
py -m pip install --upgrade inkdna-fingerprint-legacy
This installs the inkdna command.
(Optional) Install from source (developers)
:: from the project root containing pyproject.toml
py -m pip install --upgrade pip
py -m pip install .
Usage
Stamp
inkdna stamp "C:\\path\\input.pdf" -o "C:\\path\\output.pdf" --code "ORDER-123"
- Always writes a sidecar:
output_inkdna_signature.json
Verify (sidecar optional)
inkdna verify "C:\\path\\output.pdf"
inkdna verify "C:\\path\\output.pdf" --sidecar "C:\\path\\output_inkdna_signature.json"
Output (forensic JSON)
ok:trueif the canonical hash matches.embedded: payload embedded in the PDF (issuer, version, timestamp, code, file type, canonical hash, page count).recomputed_canon_sha256: hash recomputed from page content streams (our own tiny marker stream is ignored).page_streams: per-page stream counts and sizes.sidecar_payloadandsidecar_mismatcheswhen a sidecar is supplied.
Note: The canonical hash is derived from page content streams only and does not include the code or timestamp. Stamping the same PDF multiple times yields the same canonical hash. Any real change to page content will change the hash.
Exit codes
0— verification passed (ok: true)1— verification failed2— input/usage error
Sidecar naming rule
<output_basename>_inkdna_signature.json
Example: Resume_inkdna.pdf → Resume_inkdna_inkdna_signature.json.
License
MIT
Version
0.1.3
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file inkdna_fingerprint_legacy-0.1.3.tar.gz.
File metadata
- Download URL: inkdna_fingerprint_legacy-0.1.3.tar.gz
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0c818b4eae94ae3adfb569d9f477f13141492a5b95d95e98d0a70b5a5f05518
|
|
| MD5 |
f9e640daf5069f1ab622abea6046ea81
|
|
| BLAKE2b-256 |
390fbff2e3370f7195a5c938766b6ae0ccc78f8189daea101fc3ba8b251d1ee8
|
File details
Details for the file inkdna_fingerprint_legacy-0.1.3-py3-none-any.whl.
File metadata
- Download URL: inkdna_fingerprint_legacy-0.1.3-py3-none-any.whl
- Upload date:
- Size: 7.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f57f5d9fe2ee758c822811b6b1b71fbed60e617e7d7ecbd95de881137ef07681
|
|
| MD5 |
bb532066b98ebf8db3bdeb83dd8879ad
|
|
| BLAKE2b-256 |
5fca0e48631d9de33642742fe4b098a75123335d88f28ad335384010381eecf9
|