Just use the default
GpgFrontend picks Ed25519 / Curve25519 (a modern elliptic-curve key) with the GnuPG engine. It is fast, strong, and works with most tools.
GpgFrontend supports many algorithms across two engines: the mature GnuPG backend and the experimental rPGP backend. When you pick one, it helps to weigh four things: how strong it is, which engine supports it, the OpenPGP version it needs, and whether other tools can read it.
This page starts with simple guidance and a quick comparison table, then explains each algorithm in detail.
Most people don’t need to think hard about this. If you’re not sure:
Just use the default
GpgFrontend picks Ed25519 / Curve25519 (a modern elliptic-curve key) with the GnuPG engine. It is fast, strong, and works with most tools.
Need to work with old systems?
Use RSA 3072. It has the broadest support across legacy clients and protocols.
Want to try post-quantum or OpenPGP v6?
Switch to the rPGP engine. These options are experimental and may not work with other tools yet.
For the best mix of compatibility and speed, you can use RSA for the primary key (identity and signing other keys) and Curve25519 for the subkeys (signing, encryption, or authentication). RSA keeps you compatible with older systems, while Curve25519 stays fast for everyday work.
| Algorithm | Group | Used for | Engines | Notes |
|---|---|---|---|---|
| RSA | Classical | Sign + Encrypt | GnuPG rPGP | Best compatibility; slower |
| DSA | Classical | Sign | GnuPG | Legacy; avoid for new keys |
| ElGamal (ELG-E) | Classical | Encrypt only | GnuPG | Rarely needed today |
| ECDSA (NIST curves) | Elliptic | Sign | GnuPG rPGP | Standardized by NIST |
| EdDSA (Ed25519 / Ed448) | Elliptic | Sign | GnuPG rPGP | Modern default for signing |
| ECDH (Curve25519 / X448) | Elliptic | Encrypt | GnuPG rPGP | Modern default for encryption |
| Brainpool curves | Elliptic | Sign + Encrypt | GnuPG 2.3+ | Non-NIST alternative |
| secp256k1 | Elliptic | Sign + Encrypt | GnuPG 2.3+ | Used in blockchain |
| ML-DSA | Post-Quantum | Sign | rPGP only | Experimental, OpenPGP v6 |
| SLH-DSA | Post-Quantum | Sign | rPGP only | Experimental; large signatures |
| Kyber / ML-KEM | Post-Quantum | Encrypt | GnuPG 2.5+ rPGP | Experimental; always hybrid |
Some rows have exceptions:
The exact choices you see depend on the engine, its version, and the key format.
Elliptic Curve Cryptography gives strong security with much smaller keys than RSA, which makes it a good fit when computing power or storage is limited. OpenPGP uses ECC in a few forms.
EdDSA is a modern signature algorithm built on elliptic curves. It is designed to be faster, safer, and harder to misuse than older schemes like DSA or ECDSA.
A primary key has to sign: it signs other keys to build trust, and it signs data to prove ownership. ECDH is only a key-exchange algorithm, so it can’t sign and can’t be a primary key. Signature algorithms like ECDSA and EdDSA can, which is why they are used for primary keys. ECDH is used instead for encryption subkeys.
OpenPGP v6 (RFC 9580) adds new algorithm identifiers and formats for modern curves like Ed25519, Ed448, X25519, and X448. These are encoded differently from the older 25519 keys that GnuPG usually makes (EdDSA over Ed25519 and ECDH over Curve25519).
The rPGP engine always makes Ed25519 signing keys in the modern encoding, even when you choose the v4 format. For encryption, a v4 key still uses the older Curve25519 encoding, and a v6 key uses the modern X25519 encoding. In practice:
The simple rule: GnuPG-made 25519 keys work in rPGP, but rPGP-made 25519 keys should be treated as rPGP-only for now.
Post-Quantum Cryptography is a set of algorithms meant to stay secure even against future large-scale quantum computers. In OpenPGP, PQC support is still new. The rPGP engine follows the finished standard for it, RFC 9980 (since v2.2.3; before, it followed a draft).
GpgFrontend v2.2 adds experimental PQC key generation through its multi-engine design, mainly via the Rust-based rPGP engine.
ML-DSA is a post-quantum signature algorithm derived from Dilithium, for signing and verification.
In GpgFrontend it is available only through the experimental rPGP engine, and only as a hybrid option (paired with a classical algorithm), not as a standard GnuPG-compatible signing key. Supported combinations:
These keys are for experimental OpenPGP v6 and rPGP work. Don’t use them when you need GnuPG compatibility.
SLH-DSA is a stateless, hash-based post-quantum signature algorithm derived from SPHINCS+. Its signatures can be much larger than usual, which makes it less practical for everyday message signing.
In GpgFrontend it is available only through the experimental rPGP engine. Supported variants:
These are mainly for testing, research, and trying out future OpenPGP v6 workflows.
Kyber, now standardized as ML-KEM, is a post-quantum key-encapsulation mechanism used for encryption. In OpenPGP it is always used in hybrid form as an encryption subkey, pairing a post-quantum part with a classical ECDH part.
Unlike ML-DSA and SLH-DSA above, Kyber is not rPGP-only. Both engines support it:
Available sizes:
Each is paired with a classical ECDH partner curve. Under GnuPG you get the full set of partners (Curve25519, the NIST curves, the Brainpool curves, and X448). Under rPGP, Kyber-768 pairs with Curve25519 and Kyber-1024 pairs with X448.
Hybrid KEM keys are more sensitive to compatibility than classic RSA or Curve25519 keys, and the two engines don’t encode them the same way. If you need the widest compatibility, prefer classic RSA or Curve25519 keys for now.