summaryrefslogtreecommitdiffhomepage
path: root/sites
diff options
context:
space:
mode:
authorJeff Forcier <jeff@bitprophet.org>2016-09-21 16:33:58 -0700
committerJeff Forcier <jeff@bitprophet.org>2016-09-21 16:33:58 -0700
commit8916228ed0b9f3771c4aad05b095bb9f97509e1b (patch)
tree368adfd9134b0582c0a5004f6f6cd78c13054b31 /sites
parent79459e0bab5fb1542c6bfe0a72e559af21e5856c (diff)
I'm still mad re #819. Here, have some docs.
Diffstat (limited to 'sites')
-rw-r--r--sites/www/installing.rst26
1 files changed, 26 insertions, 0 deletions
diff --git a/sites/www/installing.rst b/sites/www/installing.rst
index 3e96a50f..f16369ff 100644
--- a/sites/www/installing.rst
+++ b/sites/www/installing.rst
@@ -66,6 +66,32 @@ Tools on the Mac, or the ``build-essential`` package on Ubuntu or Debian Linux
-- basically, anything with ``gcc``, ``make`` and so forth) as well as the
Python development libraries, often named ``python-dev`` or similar.
+Slow vs fast crypto math
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+PyCrypto attempts to use the ``gmp`` C math library if it is present on your
+system, which enables what it internally calls "fastmath" (``_fastmath.so``).
+When those headers are not available, it falls back to "slowmath"
+(``_slowmath.py``) which is a pure-Python implementation.
+
+Real-world tests have shown significant benefits to using the C version of this
+code; thus we strongly recommend you install the ``gmp`` development headers
+**before** installing Paramiko/PyCrypto. E.g.::
+
+ $ apt-get install libgmp-dev # or just apt
+ $ yum install gmp-devel # or dnf
+ $ brew install gmp
+
+If you're unsure which version of math you've ended up with, a quick way to
+check is to examine whether ``_fastmath.so`` or ``_slowmath.py`` appears in the
+output of::
+
+ from Crypto.PublicKey import RSA
+ print(RSA._impl._math)
+
+Windows
+~~~~~~~
+
For **Windows** users we recommend using :ref:`pypm`, installing a C
development environment such as `Cygwin <http://cygwin.com>`_ or obtaining a
precompiled Win32 PyCrypto package from `voidspace's Python modules page