|
Metadata-Version: 2.1 |
|
Name: PyNaCl |
|
Version: 1.5.0 |
|
Summary: Python binding to the Networking and Cryptography (NaCl) library |
|
Home-page: https://github.com/pyca/pynacl/ |
|
Author: The PyNaCl developers |
|
Author-email: [email protected] |
|
License: Apache License 2.0 |
|
Platform: UNKNOWN |
|
Classifier: Programming Language :: Python :: Implementation :: CPython |
|
Classifier: Programming Language :: Python :: Implementation :: PyPy |
|
Classifier: Programming Language :: Python :: 3 |
|
Classifier: Programming Language :: Python :: 3.6 |
|
Classifier: Programming Language :: Python :: 3.7 |
|
Classifier: Programming Language :: Python :: 3.8 |
|
Classifier: Programming Language :: Python :: 3.9 |
|
Classifier: Programming Language :: Python :: 3.10 |
|
Requires-Python: >=3.6 |
|
License-File: LICENSE |
|
Requires-Dist: cffi (>=1.4.1) |
|
Provides-Extra: docs |
|
Requires-Dist: sphinx (>=1.6.5) ; extra == 'docs' |
|
Requires-Dist: sphinx-rtd-theme ; extra == 'docs' |
|
Provides-Extra: tests |
|
Requires-Dist: pytest (!=3.3.0,>=3.2.1) ; extra == 'tests' |
|
Requires-Dist: hypothesis (>=3.27.0) ; extra == 'tests' |
|
|
|
=============================================== |
|
PyNaCl: Python binding to the libsodium library |
|
=============================================== |
|
|
|
.. image:: https://img.shields.io/pypi/v/pynacl.svg |
|
:target: https://pypi.org/project/PyNaCl/ |
|
:alt: Latest Version |
|
|
|
.. image:: https://codecov.io/github/pyca/pynacl/coverage.svg?branch=main |
|
:target: https://codecov.io/github/pyca/pynacl?branch=main |
|
|
|
.. image:: https://img.shields.io/pypi/pyversions/pynacl.svg |
|
:target: https://pypi.org/project/PyNaCl/ |
|
:alt: Compatible Python Versions |
|
|
|
PyNaCl is a Python binding to `libsodium`_, which is a fork of the |
|
`Networking and Cryptography library`_. These libraries have a stated goal of |
|
improving usability, security and speed. It supports Python 3.6+ as well as |
|
PyPy 3. |
|
|
|
.. _libsodium: https://github.com/jedisct1/libsodium |
|
.. _Networking and Cryptography library: https://nacl.cr.yp.to/ |
|
|
|
Features |
|
-------- |
|
|
|
* Digital signatures |
|
* Secret-key encryption |
|
* Public-key encryption |
|
* Hashing and message authentication |
|
* Password based key derivation and password hashing |
|
|
|
`Changelog`_ |
|
------------ |
|
|
|
.. _Changelog: https://pynacl.readthedocs.io/en/stable/changelog/ |
|
|
|
Installation |
|
============ |
|
|
|
Binary wheel install |
|
-------------------- |
|
|
|
PyNaCl ships as a binary wheel on macOS, Windows and Linux ``manylinux1`` [ |
|
so all dependencies are included. Make sure you have an up-to-date pip |
|
and run: |
|
|
|
.. code-block:: console |
|
|
|
$ pip install pynacl |
|
|
|
Faster wheel build |
|
------------------ |
|
|
|
You can define the environment variable ``LIBSODIUM_MAKE_ARGS`` to pass arguments to ``make`` |
|
and enable `parallelization`_: |
|
|
|
.. code-block:: console |
|
|
|
$ LIBSODIUM_MAKE_ARGS=-j4 pip install pynacl |
|
|
|
Linux source build |
|
------------------ |
|
|
|
PyNaCl relies on `libsodium`_, a portable C library. A copy is bundled |
|
with PyNaCl so to install you can run: |
|
|
|
.. code-block:: console |
|
|
|
$ pip install pynacl |
|
|
|
If you'd prefer to use the version of ``libsodium`` provided by your |
|
distribution, you can disable the bundled copy during install by running: |
|
|
|
.. code-block:: console |
|
|
|
$ SODIUM_INSTALL=system pip install pynacl |
|
|
|
.. warning:: Usage of the legacy ``easy_install`` command provided by setuptools |
|
is generally discouraged, and is completely unsupported in PyNaCl's case. |
|
|
|
.. _parallelization: https://www.gnu.org/software/make/manual/html_node/Parallel.html |
|
|
|
.. _libsodium: https://github.com/jedisct1/libsodium |
|
|
|
.. [ |
|
are built on a baseline linux environment based on Centos 5.11 |
|
and should work on most x86 and x86_64 glibc based linux environments. |
|
|
|
Changelog |
|
========= |
|
|
|
1.5.0 (2022-01-07) |
|
------------------ |
|
|
|
* **BACKWARDS INCOMPATIBLE:** Removed support for Python 2.7 and Python 3.5. |
|
* **BACKWARDS INCOMPATIBLE:** We no longer distribute ``manylinux1`` |
|
wheels. |
|
* Added ``manylinux2014``, ``manylinux_2_24``, ``musllinux``, and macOS |
|
``universal2`` wheels (the latter supports macOS ``arm64``). |
|
* Update ``libsodium`` to 1.0.18-stable (July 25, 2021 release). |
|
* Add inline type hints. |
|
|
|
1.4.0 (2020-05-25) |
|
------------------ |
|
|
|
* Update ``libsodium`` to 1.0.18. |
|
* **BACKWARDS INCOMPATIBLE:** We no longer distribute 32-bit ``manylinux1`` |
|
wheels. Continuing to produce them was a maintenance burden. |
|
* Added support for Python 3.8, and removed support for Python 3.4. |
|
* Add low level bindings for extracting the seed and the public key |
|
from crypto_sign_ed25519 secret key |
|
* Add low level bindings for deterministic random generation. |
|
* Add ``wheel`` and ``setuptools`` setup_requirements in ``setup.py`` ( |
|
* Fix checks on very slow builders ( |
|
* Add low-level bindings to ed25519 arithmetic functions |
|
* Update low-level blake2b state implementation |
|
* Fix wrong short-input behavior of SealedBox.decrypt() ( |
|
* Raise CryptPrefixError exception instead of InvalidkeyError when trying |
|
to check a password against a verifier stored in a unknown format ( |
|
* Add support for minimal builds of libsodium. Trying to call functions |
|
not available in a minimal build will raise an UnavailableError |
|
exception. To compile a minimal build of the bundled libsodium, set |
|
the SODIUM_INSTALL_MINIMAL environment variable to any non-empty |
|
string (e.g. ``SODIUM_INSTALL_MINIMAL=1``) for setup. |
|
|
|
1.3.0 2018-09-26 |
|
---------------- |
|
|
|
* Added support for Python 3.7. |
|
* Update ``libsodium`` to 1.0.16. |
|
* Run and test all code examples in PyNaCl docs through sphinx's |
|
doctest builder. |
|
* Add low-level bindings for chacha20-poly1305 AEAD constructions. |
|
* Add low-level bindings for the chacha20-poly1305 secretstream constructions. |
|
* Add low-level bindings for ed25519ph pre-hashed signing construction. |
|
* Add low-level bindings for constant-time increment and addition |
|
on fixed-precision big integers represented as little-endian |
|
byte sequences. |
|
* Add low-level bindings for the ISO/IEC 7816-4 compatible padding API. |
|
* Add low-level bindings for libsodium's crypto_kx... key exchange |
|
construction. |
|
* Set hypothesis deadline to None in tests/test_pwhash.py to avoid |
|
incorrect test failures on slower processor architectures. GitHub |
|
issue |
|
|
|
1.2.1 - 2017-12-04 |
|
------------------ |
|
|
|
* Update hypothesis minimum allowed version. |
|
* Infrastructure: add proper configuration for readthedocs builder |
|
runtime environment. |
|
|
|
1.2.0 - 2017-11-01 |
|
------------------ |
|
|
|
* Update ``libsodium`` to 1.0.15. |
|
* Infrastructure: add jenkins support for automatic build of |
|
``manylinux1`` binary wheels |
|
* Added support for ``SealedBox`` construction. |
|
* Added support for ``argon2i`` and ``argon2id`` password hashing constructs |
|
and restructured high-level password hashing implementation to expose |
|
the same interface for all hashers. |
|
* Added support for 128 bit ``siphashx24`` variant of ``siphash24``. |
|
* Added support for ``from_seed`` APIs for X25519 keypair generation. |
|
* Dropped support for Python 3.3. |
|
|
|
1.1.2 - 2017-03-31 |
|
------------------ |
|
|
|
* reorder link time library search path when using bundled |
|
libsodium |
|
|
|
1.1.1 - 2017-03-15 |
|
------------------ |
|
|
|
* Fixed a circular import bug in ``nacl.utils``. |
|
|
|
1.1.0 - 2017-03-14 |
|
------------------ |
|
|
|
* Dropped support for Python 2.6. |
|
* Added ``shared_key()`` method on ``Box``. |
|
* You can now pass ``None`` to ``nonce`` when encrypting with ``Box`` or |
|
``SecretBox`` and it will automatically generate a random nonce. |
|
* Added support for ``siphash24``. |
|
* Added support for ``blake2b``. |
|
* Added support for ``scrypt``. |
|
* Update ``libsodium`` to 1.0.11. |
|
* Default to the bundled ``libsodium`` when compiling. |
|
* All raised exceptions are defined mixing-in |
|
``nacl.exceptions.CryptoError`` |
|
|
|
1.0.1 - 2016-01-24 |
|
------------------ |
|
|
|
* Fix an issue with absolute paths that prevented the creation of wheels. |
|
|
|
1.0 - 2016-01-23 |
|
---------------- |
|
|
|
* PyNaCl has been ported to use the new APIs available in cffi 1.0+. |
|
Due to this change we no longer support PyPy releases older than 2.6. |
|
* Python 3.2 support has been dropped. |
|
* Functions to convert between Ed25519 and Curve25519 keys have been added. |
|
|
|
0.3.0 - 2015-03-04 |
|
------------------ |
|
|
|
* The low-level API (`nacl.c.*`) has been changed to match the |
|
upstream NaCl C/C++ conventions (as well as those of other NaCl bindings). |
|
The order of arguments and return values has changed significantly. To |
|
avoid silent failures, `nacl.c` has been removed, and replaced with |
|
`nacl.bindings` (with the new argument ordering). If you have code which |
|
calls these functions (e.g. `nacl.c.crypto_box_keypair()`), you must review |
|
the new docstrings and update your code/imports to match the new |
|
conventions. |
|
|
|
|
|
|