Tools for stamping and signing PDF files
Project description
The lack of open-source CLI tooling to handle digitally signing and stamping PDF files was bothering me, so I went ahead and rolled my own.
Note: The working title of this project (and former name of the repository on GitHub) was pdf-stamp, which might still linger in some references.
Note: This project is currently in alpha, and not yet production-ready.
Installing
PyHanko is hosted on PyPI,
and can be installed using pip:
pip install pyHanko
Overview
The code in this repository functions both as a library and as a command-line tool. It's nowhere near complete, but here is a short overview of the features. Note that not all of these are necessarily exposed through the CLI.
- Stamping
- Simple text-based stamps
- QR stamps
- Font can be monospaced, or embedded from an OTF font (experimental)
- Document preparation
- Add empty signature fields to existing PDFs
- Add seed values to signature fields, with or without constraints
- Signing
- Signatures can be invisible, or with an appearance based on the stamping tools
- LTV-enabled signatures are supported
- PAdES baseline profiles B-B, B-T, B-LT and B-LTA are all supported.
- Adobe-style revocation info embedding is also supported.
- RFC 3161 timestamp server support
- Support for multiple signatures (all modifications are executed using incremental updates to preserve cryptographic integrity)
- PKCS11 support
- Extra convenience wrapper for Belgian eID cards
- Signature validation
- Cryptographic integrity check
- Authentication through X.509 chain of trust validation
- LTV validation
- Difference analysis on files with multiple signatures and/or incremental updates made after signing (experimental)
- Signature seed value constraint validation
- Encryption
- Only legacy RC4-based encryption is currently supported (based on what PyPDF2 offers). This should not be used for new files, since it has been broken for quite some time.
- Modern AES-based PDF encryption is on the roadmap.
- CLI & configuration
- YAML-based configuration (optional for most features)
- CLI based on
click- Available as
pyhanko(when installed) orpython -m pyhankowhen running from the source directory - Built-in help: run
pyhanko --helpto get started
- Available as
Some TODOs and known limitations
See the known issues page in the documentation.
Documentation
Documentation is built using Sphinx, and hosted here on ReadTheDocs.
Acknowledgement
This repository includes code from PyPDF2 (with both minor and major modifications); the original license has been included here.
License
MIT License, see LICENSE.
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 pyHanko-0.2.0.tar.gz.
File metadata
- Download URL: pyHanko-0.2.0.tar.gz
- Upload date:
- Size: 145.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c45ccfdea79c48aec8c86fdd8f36ae764abec88d0229831070f21db0b7be6241
|
|
| MD5 |
e0a98784611cab71035511839e49aa56
|
|
| BLAKE2b-256 |
89b63802e9b1a0ce60232d60974f959a027b6882d3d0e8139bc7394c4325d9f2
|
File details
Details for the file pyHanko-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pyHanko-0.2.0-py3-none-any.whl
- Upload date:
- Size: 160.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48fa30983acdd13d1d0ccef4575d4901a3bd86179a09918dd7e423cd4a735dc7
|
|
| MD5 |
0fbf1ebcea00848193260aaec55678c0
|
|
| BLAKE2b-256 |
5215d537d277519e5fec36057e26c74bdbd6c4d541ed6a83b56ec87170a8a5c9
|