blob: 70558bdab83c77f983028701f6cdf4c592a3d3f2 [file] [log] [blame]
Alex Gaynor1abfac72013-08-07 12:59:04 -07001Welcome to ``cryptography``
2===========================
3
Alex Gaynor66ba6012013-10-28 10:11:21 -07004``cryptography`` is a Python library which exposes cryptographic recipes and
Alex Gaynor31df5352013-12-12 18:03:26 -08005primitives. We hope it'll be your one-stop-shop for all your cryptographic
6needs in Python.
7
8Installing
9----------
10
11We don't yet have a release on PyPI, for now you can install ``cryptography``
12directly from Github:
13
14.. code-block:: console
15
16 $ pip install git+https://github.com/pyca/cryptography
Alex Gaynorc62e91f2013-08-06 19:25:52 -070017
Alex Gaynor9f3468d2013-08-11 08:17:48 -040018Why a new crypto library for Python?
19------------------------------------
20
Alex Gaynor31df5352013-12-12 18:03:26 -080021If you've done cryptographic work in Python before, you've probably seen some
22other libraries in Python, such as *M2Crypto*, *PyCrypto*, or *PyOpenSSL*. In
23building ``cryptography`` we wanted to address a few issues we observed in the
24existing libraries:
Alex Gaynor9f3468d2013-08-11 08:17:48 -040025
Alex Gaynord8d91d42013-08-12 09:33:18 -040026* Lack of PyPy and Python 3 support.
Alex Gaynord6bef562013-08-11 09:09:28 -040027* Lack of maintenance.
Alex Gaynorec4ba732013-08-11 08:19:05 -040028* Use of poor implementations of algorithms (i.e. ones with known side-channel
Alex Gaynord6bef562013-08-11 09:09:28 -040029 attacks).
30* Lack of high level, "Cryptography for humans", APIs.
31* Absence of algorithms such as AES-GCM.
32* Poor introspectability, and thus poor testability.
Alex Gaynorf0d139a2013-08-11 09:13:27 -040033* Extremely error prone APIs, and bad defaults.
Alex Gaynor9f3468d2013-08-11 08:17:48 -040034
Alex Gaynor7c067462013-12-16 10:11:00 -080035Layout
36------
Alex Gaynor9f3468d2013-08-11 08:17:48 -040037
Alex Gaynor7c067462013-12-16 10:11:00 -080038``cryptography`` is broadly divided into two levels. One with safe
39cryptographic recipes, "cryptography for humans" if you will. These are safe
40and easy to use and don't require developers to make many decisions.
41
42The other level is low-level cryptographic primitives. These are often
43dangerous and can be used incorrectly. They require making decisions and having
44an in-depth knowledge of the cryptographic concepts at work. Because of the
Alex Gaynordf8bfea2013-12-16 10:17:48 -080045potential danger in working at this level, this is referred to as the
46"hazardous materials" or "hazmat" layer.
Alex Gaynor7c067462013-12-16 10:11:00 -080047
48We recommend using the recipes layer whenever possible, and falling back to the
49hazmat layer only when necessary.
50
51The recipes layer
52~~~~~~~~~~~~~~~~~
Alex Gaynorc62e91f2013-08-06 19:25:52 -070053
54.. toctree::
Alex Gaynor1abfac72013-08-07 12:59:04 -070055 :maxdepth: 2
56
57 architecture
Alex Gaynorf1a3fc02013-11-02 14:03:34 -070058 exceptions
Alex Gaynor8c9dcb32013-11-03 13:10:57 -080059 glossary
Donald Stufftf04317a2013-10-27 16:44:30 -040060
Alex Gaynor2cfbc122013-12-16 10:19:00 -080061The hazardous materials layer
62~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Donald Stufftf04317a2013-10-27 16:44:30 -040063
64.. toctree::
65 :maxdepth: 2
66
67 hazmat/primitives/index
Alex Gaynorf8796b12013-12-13 20:28:55 -080068 hazmat/backends/index
Alex Gaynor7c067462013-12-16 10:11:00 -080069
Alex Gaynor7c067462013-12-16 10:11:00 -080070The ``cryptography`` open source project
71~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
72
73.. toctree::
74 :maxdepth: 2
75
76 contributing
77 security
Alex Gaynor1a9bbf22013-12-24 10:59:50 -080078 api-stability
Alex Gaynor7c067462013-12-16 10:11:00 -080079 community