pure25519
pure-python curve25519/ed25519 routines
What it is and what it does
pure25519 is a pure-Python cryptography library implementing Curve25519 and Ed25519 algorithms without requiring a C compiler. It provides Diffie-Hellman key agreement, Ed25519 digital signatures, and SPAKE2 password-authenticated key exchange entirely in Python.
The package is intentionally educational and compiler-free, but the author explicitly warns against production use: it is much slower than C implementations (Ed25519 signing ~2.8ms vs ~142us in pynacl), performs full subgroup-membership checks that add overhead, and is not constant-time—it leaks hamming weights through timing side-channels. The package is abandoned (last commit 2020-02-06) and the description itself recommends using pynacl or python-ed25519 instead for real applications.
Use it for:
- Educational exploration of Curve25519 and Ed25519 algorithms when a C compiler is unavailable.
- Implementing SPAKE2 password-authenticated key exchange in environments where libsodium bindings are not available.
- Prototyping or testing cryptographic protocols in pure Python before optimizing with C libraries.
- Environments where binary dependencies must be minimized, accepting severe performance trade-offs.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Pure-Python implementation of Curve25519 and Ed25519 cryptographic functions, including Diffie-Hellman key agreement, Ed25519 digital signatures, and SPAKE2 password-authenticated key exchange.
No. The package is abandoned, explicitly recommends against its own use in favor of pynacl or python-ed25519, and introduces significant security and performance liabilities (timing side-channels, non-constant-time operations, subgroup checks). Install only for educational study of elliptic-curve math or when no alternative is available and performance/security are not concerns.
Install
pure25519 on PyPI
pip
pip install pure25519uv
uv add pure25519poetry
poetry add pure25519Installing pure25519
Before you install
Installation friction is high; the package is abandoned (last commit 2020-02-06, no releases since 2018-01-17) with no runtime dependencies. The description itself recommends using pynacl or python-ed25519 instead, citing performance and security concerns with this pure-Python approach.
License in practice
MIT license is permissive and poses no legal restriction on use, modification, or distribution.
Quickstart
pip install pure25519
from pure25519 import ed25519_eddsa
# Sign a message
signing_key, verifying_key = ed25519_eddsa.create_signing_key(b'seed')
signature = signing_key.sign(b'message')
# Verify signature
verifying_key.verify(signature, b'message')
No C compiler required, but performance is substantially slower than C-based alternatives (Ed25519 sign ~2.8ms vs ~142us in pynacl); timing side-channels leak hamming weights.
Verify before relying
- Whether the package's subgroup-membership checks and non-constant-time implementation are acceptable for your threat model.
- Current compatibility with modern Python versions beyond 2 and 3 (last release 2018-01-17).
- Whether the Ed25519 implementation remains compatible with current ed25519.cr.yp.to reference vectors.
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | high — source build required |
| Runtime dependencies | none |
| Maintenance | abandoned — 3,131 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 78,007/month — #14,476 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pure25519-0.0.1.tar.gz
Tags
More Cryptography packages
Certifi provides Mozilla's curated collection…
copyleft · top 100 on PyPI
cryptographycryptography provides cryptographic recipes and…
permissive · top 100 on PyPI
rsaPure-Python RSA encryption, decryption,…
permissive · top 1,000 on PyPI
pyOpenSSLpyOpenSSL wraps OpenSSL's SSL/TLS functionality…
permissive · top 1,000 on PyPI
azure-identityProvides Microsoft Entra ID token-based…
unclear · top 1,000 on PyPI
PyNaClPyNaCl provides Python bindings to libsodium…
permissive · top 1,000 on PyPI
diffiehellmanlibGenerates Diffie-Hellman key exchange…
permissive · top 15,000 on PyPI
spake2Implements SPAKE2, a password-authenticated key…
permissive · top 15,000 on PyPI
x25519Provides pure Python implementations of…
permissive · top 15,000 on PyPI
ECPyECPy is a pure Python elliptic curve library…
permissive · top 15,000 on PyPI
nkeysGenerates, manages, and verifies Ed25519-based…
permissive · top 15,000 on PyPI
eciespyEncrypts and decrypts data using Elliptic Curve…
permissive · top 15,000 on PyPI
ecdsaPure-Python implementation of ECDSA, EdDSA, and…
permissive · top 1,000 on PyPI
py-ed25519-zebra-bindingsProvides Python bindings to the ed25519-zebra…
permissive · top 15,000 on PyPI
signedjsonSigns and verifies JSON objects using ED25519…
unclear · top 15,000 on PyPI
slip10Implements SLIP-0010 hierarchical deterministic…
permissive · top 15,000 on PyPI