cryptography is a package designed to expose cryptographic primitives and recipes to Python developers.
Find a file
David Benjamin 57e0d44008
Remove unused X509_STORE_set_get_issuer bindings (#10011)
This was added in https://github.com/pyca/cryptography/pull/3546 for AIA
chasing, but it doesn't seem to have ever been used. Moreover, I'm not sure
this is safe for use with AIA chasing anyway. This callback replaces the
built-in lookup within an X509_STORE, but certificates from an X509_STORE are
"trusted" certificates:

https://github.com/openssl/openssl/blob/openssl-3.2.0/crypto/x509/x509_vfy.c#L3184-L3198

While this does not automatically make it a trust anchor, it makes it eligible
for being a trust anchor. Trust anchors are determined by some combination of
out-of-band metadata (X509_add1_trust_object) and a "compatibility" step of
whether the certificate is self-signed:

https://man.openbsd.org/X509_check_trust.3

This means, if an application uses this callback to implement AIA fetching, in
most configurations, if the (should be untrusted) AIA fetch returned any
self-signed certificate, it would automatically be treated as a trust anchor!

Remove this binding before someone inadvertently does this.
2023-12-17 17:20:15 -05:00
.github Use newer upload-artifacts action in one place (#10008) 2023-12-16 13:48:19 +00:00
docs Simplify the release process: No need to pass the version to release.py (#9990) 2023-12-12 06:09:51 -08:00
src Remove unused X509_STORE_set_get_issuer bindings (#10011) 2023-12-17 17:20:15 -05:00
tests regenerate x509/custom/ca/ca.pem to expire in 2100 (#9964) 2023-12-05 09:21:37 -05:00
vectors regenerate x509/custom/ca/ca.pem to expire in 2100 (#9964) 2023-12-05 09:21:37 -05:00
.gitattributes test py27 with windows container on azure (#4880) 2019-05-08 18:29:42 -04:00
.gitignore Move the remainder of the Rust coverage logic into the noxfile (#8936) 2023-05-17 19:58:47 +08:00
.readthedocs.yml Use a newer rust in RTD (#9797) 2023-10-29 12:30:23 -05:00
CHANGELOG.rst Add support for AES-GCM-SIV using OpenSSL>=3.2.0 (#9843) 2023-12-02 09:39:19 -06:00
ci-constraints-requirements.txt Bump coverage from 7.3.2 to 7.3.3 (#10001) 2023-12-15 06:54:45 -05:00
CONTRIBUTING.rst
LICENSE drop support for openssl < 1.1.1d (#8449) 2023-03-24 08:36:58 -04:00
LICENSE.APACHE HTTPS a bunch of links in random places (#4666) 2018-12-31 10:10:09 -06:00
LICENSE.BSD
MANIFEST.in Switch from tox to nox (#8651) 2023-04-02 16:28:22 +09:00
noxfile.py Simplify verifying README.rst in CI (#9991) 2023-12-12 14:24:27 -06:00
pyproject.toml Simplify verifying README.rst in CI (#9991) 2023-12-12 14:24:27 -06:00
README.rst update pypy supported versions in the docs (#9318) 2023-07-31 17:41:15 -04:00
release.py Simplify the release process: No need to pass the version to release.py (#9990) 2023-12-12 06:09:51 -08:00

pyca/cryptography
=================

.. image:: https://img.shields.io/pypi/v/cryptography.svg
    :target: https://pypi.org/project/cryptography/
    :alt: Latest Version

.. image:: https://readthedocs.org/projects/cryptography/badge/?version=latest
    :target: https://cryptography.io
    :alt: Latest Docs

.. image:: https://github.com/pyca/cryptography/workflows/CI/badge.svg?branch=main
    :target: https://github.com/pyca/cryptography/actions?query=workflow%3ACI+branch%3Amain


``cryptography`` is a package which provides cryptographic recipes and
primitives to Python developers. Our goal is for it to be your "cryptographic
standard library". It supports Python 3.7+ and PyPy3 7.3.11+.

``cryptography`` includes both high level recipes and low level interfaces to
common cryptographic algorithms such as symmetric ciphers, message digests, and
key derivation functions. For example, to encrypt something with
``cryptography``'s high level symmetric encryption recipe:

.. code-block:: pycon

    >>> from cryptography.fernet import Fernet
    >>> # Put this somewhere safe!
    >>> key = Fernet.generate_key()
    >>> f = Fernet(key)
    >>> token = f.encrypt(b"A really secret message. Not for prying eyes.")
    >>> token
    b'...'
    >>> f.decrypt(token)
    b'A really secret message. Not for prying eyes.'

You can find more information in the `documentation`_.

You can install ``cryptography`` with:

.. code-block:: console

    $ pip install cryptography

For full details see `the installation documentation`_.

Discussion
~~~~~~~~~~

If you run into bugs, you can file them in our `issue tracker`_.

We maintain a `cryptography-dev`_ mailing list for development discussion.

You can also join ``#pyca`` on ``irc.libera.chat`` to ask questions or get
involved.

Security
~~~~~~~~

Need to report a security issue? Please consult our `security reporting`_
documentation.


.. _`documentation`: https://cryptography.io/
.. _`the installation documentation`: https://cryptography.io/en/latest/installation/
.. _`issue tracker`: https://github.com/pyca/cryptography/issues
.. _`cryptography-dev`: https://mail.python.org/mailman/listinfo/cryptography-dev
.. _`security reporting`: https://cryptography.io/en/latest/security/