Confium + RNP: complementary cryptography
Confium and RNP are sibling projects from the same team. They serve complementary roles:
| Confium | RNP | |
|---|---|---|
| Focus | Threshold cryptography + transparency logs | Standard OpenPGP (RFC 9580) |
| Key model | Multi-party (no single party holds the full key) | Single-party (one private key) |
| Signature type | Composite (hybrid classical + PQ) | Standard OpenPGP signatures |
| Transparency | RFC 6962 Merkle tree + inclusion/consistency proofs | None |
| Deployment | Three modes (peer-to-peer TC, PKI drop-in, Sovereign PKI) | Standard PGP keyring |
When to use which
- Confium when you need: multi-stakeholder signing, threshold quorums, transparency logs, post-quantum migration via composite signatures, institutional PKI with custom certificate formats.
- RNP when you need: standard OpenPGP key generation, signing, verification, encryption, armor encode/decode — the full RFC 9580 toolkit.
- Both when your application uses standard OpenPGP for person-to-person communication AND threshold signing for institutional decisions (e.g., a certificate authority that issues both standard PGP keys and threshold-signed certificates).
Language bindings
Both projects ship bindings for the same languages:
| Language | Confium | RNP |
|---|---|---|
| Ruby | gem install confium |
gem install ruby-rnp |
| Python | pip install confium |
pip install py-rnp |
| WASM | npm install @confium/confium-wasm |
npm install @rnpgp/rnp |
| Rust | cargo add confium-core |
cargo add rnp-rs |
| Swift | (in progress) | swift-rnp |
Ruby integration
The Confium Ruby gem hard-bundles rnp-rs (OpenPGP, RFC 9580) into
the native extension. No external gem required — install confium and
OpenPGP armor encode/decode is available immediately:
require "confium"
# Threshold signing (Confium)
tree = Confium::Transparency::MerkleTree.new
seq = tree.append(artifact_type: :threshold_signature, artifact_hash: hash)
# Standard OpenPGP armor (RNP, bundled in the extension)
armored = Confium::OpenPGP.armor(raw_bytes, Confium::OpenPGP::PUBLIC_KEY)
decoded = Confium::OpenPGP.dearmor(armored)
The extension links librnp at build time and exposes _native_armor
/ _native_dearmor via the Rust→magnus bridge. The Ruby wrapper in
lib/confium/openpgp.rb adds default-arg convenience.
Python integration
pip install confium py-rnp
The py-rnp package provides standard OpenPGP operations alongside
confium for a complete Python crypto toolkit.
WASM (browser)
npm install @confium/confium-wasm @rnpgp/rnp
@confium/confium-wasm— transparency log verification, composite signature verification, attribute predicate evaluation.@rnpgp/rnp— full OpenPGP (RFC 9580) in the browser.
See also
- Bindings parity matrix — Confium binding coverage
- RNP project — RNP on GitHub
- @rnpgp/rnp on npm — WASM OpenPGP