1Reference
2=========
3
4This is the class and function reference. For more usage information
5see the :ref:`usage` page.
6
7Functions
8---------
9
10.. autofunction:: rsa.encrypt
11
12.. autofunction:: rsa.decrypt
13
14.. autofunction:: rsa.sign
15
16.. autofunction:: rsa.verify
17
18.. autofunction:: rsa.find_signature_hash
19
20.. autofunction:: rsa.newkeys(keysize)
21
22
23Classes
24-------
25
26.. note::
27
28    Storing public and private keys via the `pickle` module is possible.
29    However, it is insecure to load a key from an untrusted source.
30    The pickle module is not secure against erroneous or maliciously
31    constructed data. Never unpickle data received from an untrusted
32    or unauthenticated source.
33
34.. autoclass:: rsa.PublicKey
35    :members:
36    :inherited-members:
37
38.. autoclass:: rsa.PrivateKey
39    :members:
40    :inherited-members:
41
42Exceptions
43----------
44
45.. autoclass:: rsa.pkcs1.CryptoError(Exception)
46
47.. autoclass:: rsa.pkcs1.DecryptionError(CryptoError)
48
49.. autoclass:: rsa.pkcs1.VerificationError(CryptoError)
50
51
52.. index:: VARBLOCK (file format)
53
54The VARBLOCK file format
55++++++++++++++++++++++++
56
57.. warning::
58
59    The VARBLOCK format is NOT recommended for general use, has been deprecated since
60    Python-RSA 3.4, and was removed in version 4.0. It's vulnerable to a
61    number of attacks. See :ref:`bigfiles` for more information.
62
63The VARBLOCK file format allows us to encrypt files that are larger
64than the RSA key. The format is as follows; || denotes byte string
65concatenation::
66
67 VARBLOCK := VERSION || BLOCK || BLOCK || ...
68
69 VERSION := 1
70
71 BLOCK := LENGTH || DATA
72
73 LENGTH := varint-encoded length of the following data, in bytes
74
75 DATA := the data to store in the block
76
77The varint-format was taken from Google's Protobuf_, and allows us to
78efficiently encode an arbitrarily long integer.
79
80.. _Protobuf:
81    https://code.google.com/apis/protocolbuffers/docs/encoding.html#varints
82
83
84Module: rsa.core
85----------------
86
87At the core of the RSA encryption method lie these functions. They
88both operate on (arbitrarily long) integers only. They probably aren't
89of much use to you, but I wanted to document them anyway as they are
90the core of the entire library.
91
92.. autofunction:: rsa.core.encrypt_int
93
94.. autofunction:: rsa.core.decrypt_int
95