noiseprotocol
Implementation of Noise Protocol Framework
What it is and what it does
noiseprotocol is a Python 3 implementation of the Noise Protocol Framework, a standardized approach to building secure communication channels. It provides classes like NoiseConnection, HandshakeState, CipherState, and SymmetricState to handle the cryptographic handshake and subsequent message encryption and decryption. The package supports various Noise patterns combined with different elliptic curves, ciphers, and hash functions, allowing you to instantiate a protocol variant by name and use it to establish an authenticated encrypted channel between two endpoints.
The package is designed for scenarios where you need to exchange messages securely over an untrusted network—such as VPN tunnels or peer-to-peer applications. You create a NoiseConnection, perform a handshake by exchanging write_message() and read_message() calls, and once the handshake is complete, use encrypt() and decrypt() for all subsequent communication. It depends only on cryptography for its cryptographic primitives.
Use it for:
- Implement a VPN or tunneling protocol that requires authenticated key exchange and encrypted message transport.
- Build a peer-to-peer application where two parties need to establish a secure channel without a pre-shared secret.
- Integrate Noise Protocol into a custom protocol stack where you control both the handshake and the cipher suite selection.
- Prototype or test Noise Protocol variants and patterns in a Python environment before deploying to production systems.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Implements the Noise Protocol Framework for Python 3, enabling authenticated and encrypted communication between two parties through a standardized handshake and message encryption protocol.
No. The package is abandoned (last release 2020-03-03, last commit 2023-05-09) with no active maintenance or security updates. The README explicitly notes that peer review of the code is incomplete. Use only if you are maintaining a fork or working with legacy systems that already depend on it. For new projects requiring Noise Protocol, seek an actively maintained alternative or a reference implementation with ongoing security support.
Install
noiseprotocol on PyPI
pip
pip install noiseprotocoluv
uv add noiseprotocolpoetry
poetry add noiseprotocolInstalling noiseprotocol
Before you install
Low friction install with a single runtime dependency on cryptography. However, the package is abandoned—last release was 2020-03-03 and last commit 2023-05-09—meaning no active maintenance or security updates. Use only if you are committed to maintaining a fork or are working with legacy systems.
License in practice
MIT license is permissive and poses no restrictions on use, modification, or distribution in proprietary or open-source projects.
Quickstart
pip install noiseprotocol
from noiseprotocol import NoiseConnection
proto = NoiseConnection.from_name(b'Noise_NN_25519_ChaChaPoly_SHA256')
proto.set_as_initiator()
proto.start_handshake()
message = proto.write_message()
encrypted = proto.encrypt(b'payload')
Requires Python 3.5 or later. Author supports Linux only; Windows and macOS compatibility is untested.
Verify before relying
- Whether the package has been audited or reviewed for cryptographic correctness (the README lists 'get peer review of the code' as an incomplete todo item).
- Current compatibility with modern versions of the cryptography dependency and whether breaking changes have affected this package since 2020-03-03.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (~=3.5) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — cryptography |
| Maintenance | abandoned — 2,355 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 562,812/month — #5,985 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: noiseprotocol-0.3.1-py3-none-any.whl
Keywords: cryptography, noiseprotocol, noise, security
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
ff3Implements NIST FF3 and FF3-1 format-preserving…
permissive · top 15,000 on PyPI
django-cryptographyWraps Python's cryptography library to add…
permissive · top 15,000 on PyPI
cryptgcryptg provides a native Python extension that…
permissive · top 15,000 on PyPI
pycryptodomexPyCryptodomex provides low-level cryptographic…
permissive · top 1,000 on PyPI
django-cryptography-django5Encrypts and decrypts data in Django models…
permissive · top 15,000 on PyPI
python3-dtlsAdds DTLS (Datagram Transport Layer Security)…
permissive · top 15,000 on PyPI
pyaesPure-Python implementation of AES encryption…
permissive · top 5,000 on PyPI
PGPy13PGPy13 is a Python library for OpenPGP…
permissive · top 15,000 on PyPI
django-cryptography-5Provides encrypted model fields and…
permissive · top 15,000 on PyPI
PGPyPGPy implements OpenPGP (RFC 4880) in pure…
permissive · top 5,000 on PyPI