| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
JSignPdf is a Java desktop application for adding digital signatures to PDF documents. It supports both software keystores (PKCS#12) and hardware tokens / smartcards (PKCS#11), RFC 3161 timestamping (TSA), OCSP and CRL embedding for long-term validation (LTV), drag-to-place visible signatures, and a scriptable command-line / batch mode.
Project home page: jsignpdf.eu
Native installers bundle their own Java 21 runtime. Cross-platform ZIPs need a Java 21 (or newer) JRE on PATH or pointed at by JAVA_HOME.
All artifacts are published on GitHub Releases and mirrored on SourceForge.
| Platform | Recommended | Portable fallback |
|---|---|---|
| Windows x64 | jsignpdf-<version>-windows-x64.msi (SignPath-signed) | jsignpdf-<version>-windows-x64.zip |
| Linux x64 (Debian / Ubuntu) | jsignpdf-<version>-linux-x64.deb | jsignpdf-<version>-linux-x64.zip |
| Linux x64 (Fedora / RHEL / openSUSE) | jsignpdf-<version>-linux-x64.rpm | jsignpdf-<version>-linux-x64.zip |
| Linux aarch64 (ARM servers / SBCs) | jsignpdf-<version>-linux-aarch64.{deb,rpm} | jsignpdf-<version>-linux-aarch64.zip |
| Linux (any distro) | jsignpdf-<version>-linux-<arch>.flatpak (Flathub submission tracked in #307) | — |
| macOS Apple Silicon | jsignpdf-<version>-macos-aarch64.dmg (unsigned in 3.1) | jsignpdf-<version>-macos-aarch64.zip |
| Any OS with Java 21 | jsignpdf-<version>-full.zip (JFX bundled for every supported OS/arch) | jsignpdf-<version>-minimal.zip (no JFX, Swing fallback only — for CLI users and packagers) |
jsignpdf-<version>-SHA256SUMS.txt covers every artifact above.
Maven-Central-published artifacts (for embedding the signing engine in your own project) live under com.github.kwart.jsign.
Help translate JSignPdf on Weblate: https://hosted.weblate.org/projects/jsignpdf/messages/
Requires Java 21 and Apache Maven.
mvn clean installThe resulting artifacts are produced under distribution/target/. See AGENTS.md for module layout, source-tree overview, and test commands.
Native installers for every supported platform are built with jpackage as part of the release workflow (.github/workflows/do-release.yml):
Each script consumes the staging tree assembled by the distribution module (mvn -B -DskipTests -pl distribution -am package) and assumes Azul Zulu+FX 21 is on PATH / JAVA_HOME so the JavaFX modules are available to jlink.
For a local experiment on a different platform, cross-building is not supported by jpackage — the GitHub Actions release workflow runs each script on a matching runner.
Flatpak packaging lives under distribution/linux/flatpak/. Maven dependencies for the Flatpak build are captured in maven-dependencies.json and regenerated by generate-dependencies.sh (run by the refresh-flatpak-deps.yml workflow).
Releases are workflow-driven via .github/workflows/do-release.yml:
Free code signing on Windows provided by SignPath.io, certificate by SignPath Foundation.
Dual-licensed under MPL 2.0 and LGPL 2.1 — see License.md.
A minimal way to exercise the PKCS#11 code path without real hardware is to back SunPKCS11 with a software NSS database.
Note: this only works with the PKCS11 keystore type. JSignPKCS11 does not support NSS keystores.
sudo apt install -y libnss3-tools
echo "pass123+" > /tmp/newpass.txt
echo "dsadasdasdasdadasdasdasdasdsadfwerwerjfdksdjfksdlfhjsdk" > /tmp/noise.txt
mkdir /tmp/nssdb
MODUTIL_CMD="modutil -force -dbdir /tmp/nssdb"
$MODUTIL_CMD -create
$MODUTIL_CMD -changepw "NSS Certificate DB" -newpwfile /tmp/newpass.txt
certutil -S -v 240 -k rsa -n "CN=localhost" -t "u,u,u" -x \
-s "CN=localhost" -d /tmp/nssdb \
-f /tmp/newpass.txt -z /tmp/noise.txt
# Workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1760437
touch /tmp/nssdb/secmod.db
mkdir -p ~/.config/jsignpdf
cat <<EOT >~/.config/jsignpdf/pkcs11.cfg
name=testPkcs11
nssLibraryDirectory=/usr/lib/x86_64-linux-gnu
nssSecmodDirectory=/tmp/nssdb
nssModule=keystore
EOTThen select the PKCS11 keystore type in JSignPdf and use pass123+ as the token PIN.
| Back | FazBrowse Home | New Git URL |