Direct APK.
The same PGPony that ships to F-Droid — the reproducible, fully open-source build, signed with the same release key — as a plain APK you download straight from this site. No Google account, no store client, works on de-Googled devices and in regions where the stores are blocked.
Direct installs don't auto-update. Leave an email and each new release arrives with its notes, hash, and link.
# PGPony 4.4.1 A fixes-only release for the post-quantum support introduced in 4.4.0. It addresses four issues reported by testers Umotas and elnardosa, installs in place over 4.4.0, and changes nothing about how your existing keys and files work. Anything encrypted with an earlier version still decrypts unchanged. ## Fixed **Post-quantum encrypted files were far larger than they needed to be.** A v6 (post-quantum) encrypted file was split into 64-byte chunks, and the OCB integrity layer adds a 16-byte authentication tag to every chunk. At 64-byte chunks that is a tag for every 64 bytes of data, roughly a 25 percent increase on top of the file itself. PGPony now uses 64 KiB chunks, the same range other OpenPGP tools use, which cuts that overhead to a fraction of a percent. An encrypted file now lands close to its compressed size. The data was always being compressed; the tags were the entire difference. **Encrypting to a composite ML-DSA key failed with a misleading error.** A v6 ML-DSA signing key carries an ML-KEM encryption subkey, so it can receive encrypted messages. Selecting such a key as the only recipient failed with a "no recipients" error, because the underlying library cannot parse the composite primary and dropped the whole key before reaching its encryption subkey. PGPony now lifts that subkey out and uses it directly, so a composite ML-DSA key works as an encryption recipient. The message shown when a key genuinely has no encryption subkey is clearer too. **ML-KEM-1024 keys were labeled as ML-KEM-768.** In LibrePGP the two share a single algorithm number and differ only by their curve, so the label defaulted to 768. The key material was always correct; only the displayed name was wrong. Key detection now reads the curve and reports the right security level. **Imported RSA 8192 keys were labeled as RSA 4096.** Key-size detection read the algorithm number, which does not carry the modulus size, and capped the displayed size at 4096. It now reads the actual modulus, so RSA 3072, 4096, and 8192 keys are each labeled correctly. ## Verifying your download The release APK is published on GitHub, signed with the PGPony release key. Whole-file SHA-256 (confirms this download is the published file): 55075c11f90833dae75b66162c0adcd636eec223a8fc98d2c22408209335e257 Content hash (for anyone rebuilding from source; excludes the signature): 2707269a69c39650ea99ced72077a68d5fbf18fcd6df0253f5784d581975cead ## Credits Thanks to Umotas, who reported the file-size and composite-key issues with packet dumps that made both easy to confirm, and to elnardosa, who caught the ML-KEM-1024 and RSA-8192 labeling.
Android will warn you when installing an app from outside a store — that prompt is expected. It appears for every directly-downloaded APK, including this one, and is exactly why the verification steps below exist.
Verify before you install.
Every release is PGP-signed with the NorseHorse release key and published with its SHA-256. An APK from anywhere else claiming to be PGPony should fail these checks — that is the point of them.
Signing key fingerprint (the same key on the public key page):
SHA-256 of PGPony-4.4.1.apk:
On a computer with GnuPG:
curl -O https://pgpony.app/downloads/PGPony-4.4.1.apk curl -O https://pgpony.app/downloads/PGPony-4.4.1.apk.asc curl -O https://pgpony.app/assets/pgp/norsehorse.asc gpg --import norsehorse.asc gpg --verify PGPony-4.4.1.apk.asc PGPony-4.4.1.apk shasum -a 256 PGPony-4.4.1.apk
Good output says Good signature from the fingerprint above, and the hash matches the one on this page. On the phone itself, PGPony can verify the detached signature too — see the walkthrough.
APK signing certificate SHA-256 (matches the F-Droid build — check with apksigner verify --print-certs):
Previous releases (9)
sha256 3c10b9ea225a748d87dacbf5a233e20bdf456b4cfc2313ba700e6e06e10ae411
sha256 f09e1577d5c20b0514980063d445d8d184ce26980dd59a3e60bf0647453175e5
sha256 6b534dc4f96fd014d8475e3a05543f30aca07c14358537494a2fc07dd73dd61f
sha256 59a0aa492982072d81c2ccd706d5d7096758c999a7ad065354e191b126563e2a
sha256 15e9d5052dfcbc8fd5ee6a59783f2f3e4b2c730822ac9553bdb596917a214bd3
sha256 2be8891833adba5d3698c3eab64607aa91cbcb43ed2aad3d1277717adaa66831
sha256 528f9b6a8b68f44651f811a3d8cfae8ffedbbec03f3c568e6ac84116db890b62
sha256 2a6d2d64b9fc191145ff8fcf0d489dfc11bac82768eb1823b237ca8724f885df
sha256 482edf9df3802740795de4b3b62a7cbab3bb8c74b2b0a996e1bef7c26a2042e6
Before you switch install sources.
- Same key as F-Droid. This APK is signed with the same release key as the F-Droid build, so you can move between F-Droid and the direct APK freely — each will update over the other without uninstalling.
- Different key than Google Play. Play re-signs apps with its own key, so Android will refuse to install this APK over a Play install (and vice versa). Switching requires an uninstall first.
- No auto-updates. A directly-installed APK does not update itself. Watch the changelog for new releases, or install through F-Droid if you want automatic updates with the same signing key.
- Reproducible build. The Android app is fully open source (PGPonyAndroid on GitHub) and builds reproducibly — you can compile it yourself and compare against this artifact.
http://pgponyisur7gxcrfw5ofpjr2sepqul3zgbs66rrd3ughk5qvi4a3t5id.onion/apk
See mirrors for the verified onion and I2P addresses.