skillfed

pure25519

pure-python curve25519/ed25519 routines

pure25519 v0.0.1 78.0K downloads/30d#14,476 on PyPI39
Permissive license MIT Abandoned released

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 pure25519

uv

uv add pure25519

poetry

poetry add pure25519

Installing 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

curve25519 python implementationed25519 signatures pure pythondiffie-hellman key agreementspake2 password authenticated keyelliptic curve cryptography pythonpure python cryptographyed25519 without c compiler
educationalabandonedtiming-side-channel

More Cryptography packages