From b42ff32f3dfb097ef06fdc7189b4889c92360a77 Mon Sep 17 00:00:00 2001
From: Alex Gaynor <alex.gaynor@gmail.com>
Date: Tue, 16 Sep 2014 10:38:20 -0700
Subject: Try to update the installation docs

---
 sites/www/index.rst      |  5 ++--
 sites/www/installing.rst | 73 +++++++++++++-----------------------------------
 2 files changed, 23 insertions(+), 55 deletions(-)

(limited to 'sites/www')

diff --git a/sites/www/index.rst b/sites/www/index.rst
index 1b609709..fd452fef 100644
--- a/sites/www/index.rst
+++ b/sites/www/index.rst
@@ -3,8 +3,9 @@ Welcome to Paramiko!
 
 Paramiko is a Python (2.6+, 3.3+) implementation of the SSHv2 protocol [#]_,
 providing both client and server functionality. While it leverages a Python C
-extension for low level cryptography (`PyCrypto <http://pycrypto.org>`_),
-Paramiko itself is a pure Python interface around SSH networking concepts.
+extension for low level cryptography
+(`Cryptography <http://cryptography.io>`_), Paramiko itself is a pure Python
+interface around SSH networking concepts.
 
 This website covers project information for Paramiko such as the changelog,
 contribution guidelines, development roadmap, news/blog, and so forth. Detailed
diff --git a/sites/www/installing.rst b/sites/www/installing.rst
index 5528b28a..764c0a13 100644
--- a/sites/www/installing.rst
+++ b/sites/www/installing.rst
@@ -16,13 +16,13 @@ via `pip <http://pip-installer.org>`_::
     Users who want the bleeding edge can install the development version via
     ``pip install paramiko==dev``.
 
-We currently support **Python 2.6, 2.7 and 3.3+** (Python **3.2** should also
-work but has a less-strong compatibility guarantee from us.) Users on Python
-2.5 or older are urged to upgrade.
+We currently support **Python 2.6, 2.7, 3.3+, and PyPy** (Python **3.2** should
+also work but has a less-strong compatibility guarantee from us.) Users on
+Python 2.5 or older are urged to upgrade.
 
-Paramiko has two hard dependencies: the pure-Python ECDSA module ``ecdsa``, and the
-PyCrypto C extension. ``ecdsa`` is easily installable from wherever you
-obtained Paramiko's package; PyCrypto may require more work. Read on for
+Paramiko has two hard dependencies: the pure-Python ECDSA module ``ecdsa``, and
+the Cryptography library. ``ecdsa`` is easily installable from wherever you
+obtained Paramiko's package; Cryptography may require more work. Read on for
 details.
 
 If you need GSS-API / SSPI support, see :ref:`the below subsection on it
@@ -50,61 +50,28 @@ If you're unsure which version to install, we have suggestions:
   stops being supported.
 
 
-PyCrypto
-========
+Cryptography
+============
 
-`PyCrypto <https://www.dlitz.net/software/pycrypto/>`_  provides the low-level
-(C-based) encryption algorithms we need to implement the SSH protocol. There
-are a couple gotchas associated with installing PyCrypto: its compatibility
-with Python's package tools, and the fact that it is a C-based extension.
+`Cryptography <https://cryptography.io>`_  provides the low-level (C-based)
+encryption algorithms we need to implement the SSH protocol. There are a few
+things to be aware of when installing Cryptography, because it includes a
+C-extension.
 
 C extension
 -----------
 
-Unless you are installing from a precompiled source such as a Debian apt
-repository or RedHat RPM, or using :ref:`pypm <pypm>`, you will also need the
-ability to build Python C-based modules from source in order to install
-PyCrypto. Users on **Unix-based platforms** such as Ubuntu or Mac OS X will
-need the traditional C build toolchain installed (e.g. Developer Tools / XCode
-Tools on the Mac, or the ``build-essential`` package on Ubuntu or Debian Linux
+Users on **Unix-based platforms** such as Ubuntu or Mac OS X will need the
+traditional C build toolchain installed (e.g. Developer Tools / XCode 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.
+Python development libraries, often named ``python-dev`` or similar, and libffi
+development libraries, often named ``libffi-dev``.
 
-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
-<http://www.voidspace.org.uk/python/modules.shtml#pycrypto>`_.
+For **Windows** users we recommend using the most recent version of ``pip``,
+Cryptography has binary wheels on PyPI, which remove the need for having a C
+compiler.
 
-.. note::
-    Some Windows users whose Python is 64-bit have found that the PyCrypto
-    dependency ``winrandom`` may not install properly, leading to ImportErrors.
-    In this scenario, you'll probably need to compile ``winrandom`` yourself
-    via e.g. MS Visual Studio.  See `Fabric #194
-    <https://github.com/fabric/fabric/issues/194>`_ for info.
-
-
-.. _pypm:
-
-ActivePython and PyPM
-=====================
-
-Windows users who already have ActiveState's `ActivePython
-<http://www.activestate.com/activepython/downloads>`_ distribution installed
-may find Paramiko is best installed with `its package manager, PyPM
-<http://code.activestate.com/pypm/>`_. Below is example output from an
-installation of Paramiko via ``pypm``::
-
-    C:\> pypm install paramiko
-    The following packages will be installed into "%APPDATA%\Python" (2.7):
-     paramiko-1.7.8 pycrypto-2.4
-    Get: [pypm-free.activestate.com] paramiko 1.7.8
-    Get: [pypm-free.activestate.com] pycrypto 2.4
-    Installing paramiko-1.7.8
-    Installing pycrypto-2.4
-    C:\>
-
-
-.. _gssapi:
 
 Optional dependencies for GSS-API / SSPI / Kerberos
 ===================================================
-- 
cgit v1.2.3


From f29770490c2b4df1937483c5cb6dbc05ed98992f Mon Sep 17 00:00:00 2001
From: Alex Gaynor <alex.gaynor@gmail.com>
Date: Thu, 18 Sep 2014 18:04:40 -0700
Subject: Note OPenSSL headers as well

---
 sites/www/installing.rst | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

(limited to 'sites/www')

diff --git a/sites/www/installing.rst b/sites/www/installing.rst
index 507fe2fa..f7dd8594 100644
--- a/sites/www/installing.rst
+++ b/sites/www/installing.rst
@@ -65,8 +65,9 @@ Users on **Unix-based platforms** such as Ubuntu or Mac OS X will need the
 traditional C build toolchain installed (e.g. Developer Tools / XCode 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, and libffi
-development libraries, often named ``libffi-dev``.
+Python development libraries, often named ``python-dev`` or similar, OpenSSL
+headers, often named ``libssl-dev``, and libffi development libraries, often
+named ``libffi-dev``.
 
 For **Windows** users we recommend using the most recent version of ``pip``,
 Cryptography has binary wheels on PyPI, which remove the need for having a C
-- 
cgit v1.2.3


From 18bc966c3d3390d85c194a42be5921516d93e296 Mon Sep 17 00:00:00 2001
From: Alex Gaynor <alex.gaynor@gmail.com>
Date: Thu, 18 Sep 2014 18:23:31 -0700
Subject: Add back intro sentence

---
 sites/www/installing.rst | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

(limited to 'sites/www')

diff --git a/sites/www/installing.rst b/sites/www/installing.rst
index f7dd8594..d6edbd5a 100644
--- a/sites/www/installing.rst
+++ b/sites/www/installing.rst
@@ -61,13 +61,15 @@ C-extension.
 C extension
 -----------
 
-Users on **Unix-based platforms** such as Ubuntu or Mac OS X will need the
-traditional C build toolchain installed (e.g. Developer Tools / XCode 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, OpenSSL
-headers, often named ``libssl-dev``, and libffi development libraries, often
-named ``libffi-dev``.
+Unless you are installing from a precompiled source such as a Debian apt
+repository or RedHat RPM,, you will also need the ability to build Python
+C-based modules from source in order to install Cryptography. Users on **Unix-
+based platforms** such as Ubuntu or Mac OS X will need the traditional C build
+toolchain installed (e.g. Developer Tools / XCode 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, OpenSSL headers, often named
+``libssl-dev``, and libffi development libraries, often named ``libffi-dev``.
 
 For **Windows** users we recommend using the most recent version of ``pip``,
 Cryptography has binary wheels on PyPI, which remove the need for having a C
-- 
cgit v1.2.3


From d563ba28291fa1f966353c5ef7e4c32680aa93e8 Mon Sep 17 00:00:00 2001
From: Alex Gaynor <alex.gaynor@gmail.com>
Date: Thu, 18 Sep 2014 18:25:40 -0700
Subject: Document that pyasn1 is required

---
 paramiko/ssh_gss.py      | 18 ++----------------
 setup.py                 |  2 +-
 sites/www/installing.rst | 10 ++++------
 tox-requirements.txt     |  2 +-
 4 files changed, 8 insertions(+), 24 deletions(-)

(limited to 'sites/www')

diff --git a/paramiko/ssh_gss.py b/paramiko/ssh_gss.py
index ebf2cc80..dfc9ddc8 100644
--- a/paramiko/ssh_gss.py
+++ b/paramiko/ssh_gss.py
@@ -39,22 +39,8 @@ import sys
 """
 GSS_AUTH_AVAILABLE = True
 
-try:
-    from pyasn1.type.univ import ObjectIdentifier
-    from pyasn1.codec.der import encoder, decoder
-except ImportError:
-    GSS_AUTH_AVAILABLE = False
-    class ObjectIdentifier(object):
-        def __init__(self, *args):
-            raise NotImplementedError("Module pyasn1 not importable")
-
-    class decoder(object):
-        def decode(self):
-            raise NotImplementedError("Module pyasn1 not importable")
-
-    class encoder(object):
-        def encode(self):
-            raise NotImplementedError("Module pyasn1 not importable")
+from pyasn1.type.univ import ObjectIdentifier
+from pyasn1.codec.der import encoder, decoder
 
 from paramiko.common import MSG_USERAUTH_REQUEST
 from paramiko.ssh_exception import SSHException
diff --git a/setup.py b/setup.py
index 91e9640c..05933c03 100644
--- a/setup.py
+++ b/setup.py
@@ -43,7 +43,7 @@ try:
         'install_requires': [
             'cryptography >= 0.5.4',
             'ecdsa >= 0.11',
-            'pyasn1',
+            'pyasn1 >= 0.1.7',
         ],
     }
 except ImportError:
diff --git a/sites/www/installing.rst b/sites/www/installing.rst
index d6edbd5a..dc20590e 100644
--- a/sites/www/installing.rst
+++ b/sites/www/installing.rst
@@ -20,10 +20,10 @@ We currently support **Python 2.6, 2.7, 3.3+, and PyPy** (Python **3.2** should
 also work but has a less-strong compatibility guarantee from us.) Users on
 Python 2.5 or older are urged to upgrade.
 
-Paramiko has two hard dependencies: the pure-Python ECDSA module ``ecdsa``, and
-the Cryptography library. ``ecdsa`` is easily installable from wherever you
-obtained Paramiko's package; Cryptography may require more work. Read on for
-details.
+Paramiko has three hard dependencies: the pure-Python ECDSA module ``ecdsa``
+and ASN1 module ``pyasn1``, and the Cryptography library. ``ecdsa`` is easily
+installable from wherever you obtained Paramiko's package; Cryptography may
+require more work. Read on for details.
 
 If you need GSS-API / SSPI support, see :ref:`the below subsection on it
 <gssapi>` for details on additional dependencies.
@@ -85,8 +85,6 @@ due to their infrequent utility & non-platform-agnostic requirements):
 
 * It hopefully goes without saying but **all platforms** need **a working
   installation of GSS-API itself**, e.g. Heimdal.
-* **All platforms** need `pyasn1 <https://pypi.python.org/pypi/pyasn1>`_
-  ``0.1.7`` or better.
 * **Unix** needs `python-gssapi <https://pypi.python.org/pypi/python-gssapi/>`_
   ``0.6.1`` or better.
 
diff --git a/tox-requirements.txt b/tox-requirements.txt
index 3a834b7f..e66a4534 100644
--- a/tox-requirements.txt
+++ b/tox-requirements.txt
@@ -1,3 +1,3 @@
 # Not sure why tox can't just read setup.py?
 cryptography >= 0.5.4
-pyasn1
+pyasn1 >= 0.1.7
-- 
cgit v1.2.3


From 5130ad1f755ce0939ad51d88720a9b90fd8b3c00 Mon Sep 17 00:00:00 2001
From: Alex Gaynor <alex.gaynor@gmail.com>
Date: Sun, 15 Mar 2015 13:10:35 -0400
Subject: Update for cryptography 0.8 and general cleanups

---
 README                   |  2 +-
 paramiko/dsskey.py       |  4 +--
 paramiko/ecdsakey.py     | 70 ++++--------------------------------------------
 setup.py                 |  2 +-
 sites/www/installing.rst |  6 ++---
 tox-requirements.txt     |  2 +-
 6 files changed, 12 insertions(+), 74 deletions(-)

(limited to 'sites/www')

diff --git a/README b/README
index 7e848aca..36d7055f 100644
--- a/README
+++ b/README
@@ -36,7 +36,7 @@ Requirements
 
   - Python 2.6 or better <http://www.python.org/> - this includes Python
     3.2 and higher as well.
-  - Cryptography 0.7 or better <https://cryptography.io>
+  - Cryptography 0.8 or better <https://cryptography.io>
   - pyasn1 0.1.7 or better <https://pypi.python.org/pypi/pyasn1>
 
 If you have setuptools, you can build and install paramiko and all its
diff --git a/paramiko/dsskey.py b/paramiko/dsskey.py
index 2c90694f..8e0c2ba9 100644
--- a/paramiko/dsskey.py
+++ b/paramiko/dsskey.py
@@ -118,8 +118,8 @@ class DSSKey(PKey):
         m = Message()
         m.add_string('ssh-dss')
         # apparently, in rare cases, r or s may be shorter than 20 bytes!
-        rstr = util.deflate_long(int(r), 0)
-        sstr = util.deflate_long(int(s), 0)
+        rstr = util.deflate_long(r, 0)
+        sstr = util.deflate_long(s, 0)
         if len(rstr) < 20:
             rstr = zero_byte * (20 - len(rstr)) + rstr
         if len(sstr) < 20:
diff --git a/paramiko/ecdsakey.py b/paramiko/ecdsakey.py
index bc76b639..2f5c2c31 100644
--- a/paramiko/ecdsakey.py
+++ b/paramiko/ecdsakey.py
@@ -32,9 +32,6 @@ from cryptography.hazmat.primitives.asymmetric.utils import (
     decode_rfc6979_signature, encode_rfc6979_signature
 )
 
-from pyasn1.codec.der import encoder
-from pyasn1.type import namedtype, namedval, tag, univ
-
 from paramiko.common import four_byte, one_byte, zero_byte
 from paramiko.message import Message
 from paramiko.pkey import PKey
@@ -43,40 +40,6 @@ from paramiko.ssh_exception import SSHException
 from paramiko.util import deflate_long, inflate_long
 
 
-# RFC 5480, section 2.1.1
-class _ECParameters(univ.Choice):
-    # TODO: There are a few more options for this choice I think, the RFC says
-    # not to use them though...
-    componentType = namedtype.NamedTypes(
-        namedtype.NamedType("namedCurve", univ.ObjectIdentifier()),
-    )
-
-
-# RFC 5915, Appendix A
-class _ECPrivateKey(univ.Sequence):
-    componentType = namedtype.NamedTypes(
-        namedtype.NamedType(
-            "version",
-            univ.Integer(
-                namedValues=namedval.NamedValues(
-                    ("ecPrivkeyVer1", 1),
-                )
-            ),
-        ),
-        namedtype.NamedType("privateKey", univ.OctetString()),
-        namedtype.OptionalNamedType("parameters", _ECParameters().subtype(
-            implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0),
-        )),
-        namedtype.OptionalNamedType("publicKey", univ.BitString().subtype(
-            implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1),
-        )),
-    )
-
-
-_CURVE_TO_OID = {
-    ec.SECP256R1: univ.ObjectIdentifier("1.2.840.10045.3.1.7")
-}
-
 class ECDSAKey(PKey):
     """
     Representation of an ECDSA key which can be used to sign and verify SSH2
@@ -216,40 +179,17 @@ class ECDSAKey(PKey):
                         byte_chr(5) * 5, byte_chr(6) * 6, byte_chr(7) * 7]
 
     def _decode_key(self, data):
-        s = """
------BEGIN EC PRIVATE KEY-----
-%s
------END EC PRIVATE KEY-----
-""" % "\n".join(textwrap.wrap(base64.b64encode(data).decode(), 64))
-        key = serialization.load_pem_private_key(s.encode(), password=None, backend=default_backend())
+        key = serialization.load_der_private_key(data, password=None, backend=default_backend())
         self.signing_key = key
         self.verifying_key = key.public_key()
         self.size = key.curve.key_size
 
     def _to_der(self, key):
-        private_numbers = key.private_numbers()
-        public_numbers = private_numbers.public_numbers
-
-        private_key = deflate_long(
-            private_numbers.private_value, add_sign_padding=False
+        return key.private_bytes(
+            serialization.Encoding.DER,
+            serialization.Format.TraditionalOpenSSL,
+            serialization.NoEncryption(),
         )
-        x_str = deflate_long(public_numbers.x, add_sign_padding=False)
-        y_str = deflate_long(public_numbers.y, add_sign_padding=False)
-
-        key_length = key.curve.key_size // 8
-        if len(x_str) < key_length:
-            x_str = zero_byte * (key_length - len(x_str)) + x_str
-        if len(y_str) < key_length:
-            y_str = zero_byte * (key_length - len(y_str)) + y_str
-        public_key = b"\x04" + x_str + y_str
-
-        asn1_key = _ECPrivateKey()
-        asn1_key.setComponentByName("version", 1)
-        asn1_key.setComponentByName("privateKey", private_key)
-        asn1_key.setComponentByName("parameters")
-        asn1_key.getComponentByName("parameters").setComponentByName("namedCurve", _CURVE_TO_OID[type(key.curve)])
-        asn1_key.setComponentByName("publicKey", "'%s'H" % binascii.hexlify(public_key).decode())
-        return encoder.encode(asn1_key)
 
     def _sigencode(self, r, s):
         msg = Message()
diff --git a/setup.py b/setup.py
index e10a6390..a4977c15 100644
--- a/setup.py
+++ b/setup.py
@@ -41,7 +41,7 @@ try:
     from setuptools import setup
     kw = {
         'install_requires': [
-            'cryptography >= 0.7',
+            'cryptography >= 0.8',
             'pyasn1 >= 0.1.7',
         ],
     }
diff --git a/sites/www/installing.rst b/sites/www/installing.rst
index dc20590e..57b639f0 100644
--- a/sites/www/installing.rst
+++ b/sites/www/installing.rst
@@ -20,10 +20,8 @@ We currently support **Python 2.6, 2.7, 3.3+, and PyPy** (Python **3.2** should
 also work but has a less-strong compatibility guarantee from us.) Users on
 Python 2.5 or older are urged to upgrade.
 
-Paramiko has three hard dependencies: the pure-Python ECDSA module ``ecdsa``
-and ASN1 module ``pyasn1``, and the Cryptography library. ``ecdsa`` is easily
-installable from wherever you obtained Paramiko's package; Cryptography may
-require more work. Read on for details.
+Paramiko has two hard dependencies: the pure-Python ASN1 module ``pyasn1``, and
+the Cryptography library. Read on for details on installing ``cryptography``.
 
 If you need GSS-API / SSPI support, see :ref:`the below subsection on it
 <gssapi>` for details on additional dependencies.
diff --git a/tox-requirements.txt b/tox-requirements.txt
index 23ed06d8..47ddd792 100644
--- a/tox-requirements.txt
+++ b/tox-requirements.txt
@@ -1,3 +1,3 @@
 # Not sure why tox can't just read setup.py?
-cryptography >= 0.7
+cryptography >= 0.8
 pyasn1 >= 0.1.7
-- 
cgit v1.2.3


From 4c8e1574d3a736ad129d3925595966f6e93bbeca Mon Sep 17 00:00:00 2001
From: Alex Gaynor <alex.gaynor@gmail.com>
Date: Wed, 1 Apr 2015 18:37:35 -0400
Subject: Fixed extra comma

---
 sites/www/installing.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'sites/www')

diff --git a/sites/www/installing.rst b/sites/www/installing.rst
index 57b639f0..9da7c23d 100644
--- a/sites/www/installing.rst
+++ b/sites/www/installing.rst
@@ -60,7 +60,7 @@ C extension
 -----------
 
 Unless you are installing from a precompiled source such as a Debian apt
-repository or RedHat RPM,, you will also need the ability to build Python
+repository or RedHat RPM, you will also need the ability to build Python
 C-based modules from source in order to install Cryptography. Users on **Unix-
 based platforms** such as Ubuntu or Mac OS X will need the traditional C build
 toolchain installed (e.g. Developer Tools / XCode Tools on the Mac, or the
-- 
cgit v1.2.3


From 9e67e71377cea9adaaeab6dbb024f2af94ba7999 Mon Sep 17 00:00:00 2001
From: Alex Gaynor <alex.gaynor@gmail.com>
Date: Sat, 1 Aug 2015 08:46:43 -0400
Subject: removed references to python 3.2, which has basically no usage

---
 .travis.yml              | 6 ++----
 README                   | 2 +-
 sites/www/installing.rst | 5 ++---
 tox.ini                  | 2 +-
 4 files changed, 6 insertions(+), 9 deletions(-)

(limited to 'sites/www')

diff --git a/.travis.yml b/.travis.yml
index 9a55dbb6..5f444d93 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,7 +3,6 @@ sudo: false
 python:
   - "2.6"
   - "2.7"
-  - "3.2"
   - "3.3"
   - "3.4"
 install:
@@ -19,9 +18,8 @@ script:
   # Run 'docs' first since its objects.inv is referred to by 'www'.
   # Also force warnings to be errors since most of them tend to be actual
   # problems.
-  # Finally, skip them under Python 3.2 due to sphinx shenanigans
-  - "[[ $TRAVIS_PYTHON_VERSION != 3.2 ]] && invoke docs -o -W || true"
-  - "[[ $TRAVIS_PYTHON_VERSION != 3.2 ]] && invoke www -o -W || true"
+  - "invoke docs -o -W || true"
+  - "invoke www -o -W || true"
 notifications:
   irc:
     channels: "irc.freenode.org#paramiko"
diff --git a/README b/README
index 36d7055f..4fea58cb 100644
--- a/README
+++ b/README
@@ -35,7 +35,7 @@ Requirements
 ------------
 
   - Python 2.6 or better <http://www.python.org/> - this includes Python
-    3.2 and higher as well.
+    3.3 and higher as well.
   - Cryptography 0.8 or better <https://cryptography.io>
   - pyasn1 0.1.7 or better <https://pypi.python.org/pypi/pyasn1>
 
diff --git a/sites/www/installing.rst b/sites/www/installing.rst
index 9da7c23d..1865ddfc 100644
--- a/sites/www/installing.rst
+++ b/sites/www/installing.rst
@@ -16,9 +16,8 @@ via `pip <http://pip-installer.org>`_::
     Users who want the bleeding edge can install the development version via
     ``pip install paramiko==dev``.
 
-We currently support **Python 2.6, 2.7, 3.3+, and PyPy** (Python **3.2** should
-also work but has a less-strong compatibility guarantee from us.) Users on
-Python 2.5 or older are urged to upgrade.
+We currently support **Python 2.6, 2.7, 3.3+, and PyPy** Users on Python 2.5 or
+older are urged to upgrade.
 
 Paramiko has two hard dependencies: the pure-Python ASN1 module ``pyasn1``, and
 the Cryptography library. Read on for details on installing ``cryptography``.
diff --git a/tox.ini b/tox.ini
index 3d7c86da..d420c1a3 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
 [tox]
-envlist = py26,py27,py32,py33,py34,pypy
+envlist = py26,py27,py33,py34,pypy
 
 [testenv]
 commands = pip install -q -r tox-requirements.txt
-- 
cgit v1.2.3


From f5ba7d5a60110ea7236492f66406f542a09d88a3 Mon Sep 17 00:00:00 2001
From: Alex Gaynor <alex.gaynor@gmail.com>
Date: Wed, 4 Nov 2015 10:16:33 -0500
Subject: add this back in

---
 sites/www/installing.rst | 1 +
 1 file changed, 1 insertion(+)

(limited to 'sites/www')

diff --git a/sites/www/installing.rst b/sites/www/installing.rst
index 1865ddfc..9f1f9080 100644
--- a/sites/www/installing.rst
+++ b/sites/www/installing.rst
@@ -72,6 +72,7 @@ For **Windows** users we recommend using the most recent version of ``pip``,
 Cryptography has binary wheels on PyPI, which remove the need for having a C
 compiler.
 
+.. _gssapi:
 
 Optional dependencies for GSS-API / SSPI / Kerberos
 ===================================================
-- 
cgit v1.2.3


From f9404c52c0a5899f9b998e2b52d2316b65202414 Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sat, 23 Apr 2016 16:17:16 -0700
Subject: Fix broken changelog doc link

---
 sites/www/changelog.rst | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

(limited to 'sites/www')

diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index 18c7ce5e..135bb839 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -115,8 +115,9 @@ Changelog
   well) would hang due to incorrect values passed into the new window size
   arguments for `.Transport` (thanks to a botched merge). This has been
   corrected. Thanks to Dylan Thacker-Smith for the report & patch.
-* :feature:`167` Add `.SSHConfig.get_hostnames` for easier introspection of a
-  loaded SSH config file or object. Courtesy of Søren Løvborg.
+* :feature:`167` Add `~paramiko.config.SSHConfig.get_hostnames` for easier
+  introspection of a loaded SSH config file or object. Courtesy of Søren
+  Løvborg.
 * :release:`1.15.0 <2014-09-18>`
 * :support:`393` Replace internal use of PyCrypto's ``SHA.new`` with the
   stdlib's ``hashlib.sha1``. Thanks to Alex Gaynor.
-- 
cgit v1.2.3


From 37294eeb5c379fc32ae2cdf0563407b5a4a3c869 Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sat, 23 Apr 2016 14:47:37 -0700
Subject: Tweaks to install docs re #394

---
 sites/www/installing.rst | 57 +++++++++++++++++++++++++-----------------------
 1 file changed, 30 insertions(+), 27 deletions(-)

(limited to 'sites/www')

diff --git a/sites/www/installing.rst b/sites/www/installing.rst
index 9f1f9080..bb1addc8 100644
--- a/sites/www/installing.rst
+++ b/sites/www/installing.rst
@@ -16,14 +16,15 @@ via `pip <http://pip-installer.org>`_::
     Users who want the bleeding edge can install the development version via
     ``pip install paramiko==dev``.
 
-We currently support **Python 2.6, 2.7, 3.3+, and PyPy** Users on Python 2.5 or
-older are urged to upgrade.
+We currently support **Python 2.6, 2.7, 3.3+, and PyPy**. Users on Python 2.5
+or older (or 3.2 or older) are urged to upgrade.
 
-Paramiko has two hard dependencies: the pure-Python ASN1 module ``pyasn1``, and
-the Cryptography library. Read on for details on installing ``cryptography``.
+Paramiko has only one direct hard dependency: the Cryptography library. See
+:ref:`cryptography`.
 
 If you need GSS-API / SSPI support, see :ref:`the below subsection on it
-<gssapi>` for details on additional dependencies.
+<gssapi>` for details on its optional dependencies.
+
 
 .. _release-lines:
 
@@ -34,43 +35,45 @@ Users desiring stability may wish to pin themselves to a specific release line
 once they first start using Paramiko; to assist in this, we guarantee bugfixes
 for the last 2-3 releases including the latest stable one.
 
+This typically spans major & minor versions, so even if e.g. 3.1 is the latest
+stable release, it's likely that bugfixes will occasionally come out for the
+latest 2.x and perhaps even 1.x releases, as well as for 3.0.
+
 If you're unsure which version to install, we have suggestions:
 
 * **Completely new users** should always default to the **latest stable
   release** (as above, whatever is newest / whatever shows up with ``pip
   install paramiko``.)
 * **Users upgrading from a much older version** (e.g. the 1.7.x line) should
-  probably get the **oldest actively supported line** (see the paragraph above
-  this list for what that currently is.)
+  probably get the **oldest actively supported line** (check the
+  :ref:`changelog` for recent releases).
 * **Everybody else** is hopefully already "on" a given version and can
   carefully upgrade to whichever version they care to, when their release line
   stops being supported.
 
 
+.. _cryptography:
+
 Cryptography
 ============
 
 `Cryptography <https://cryptography.io>`_  provides the low-level (C-based)
-encryption algorithms we need to implement the SSH protocol. There are a few
-things to be aware of when installing Cryptography, because it includes a
-C-extension.
-
-C extension
------------
-
-Unless you are installing from a precompiled source such as a Debian apt
-repository or RedHat RPM, you will also need the ability to build Python
-C-based modules from source in order to install Cryptography. Users on **Unix-
-based platforms** such as Ubuntu or Mac OS X will need the traditional C build
-toolchain installed (e.g. Developer Tools / XCode 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, OpenSSL headers, often named
-``libssl-dev``, and libffi development libraries, often named ``libffi-dev``.
-
-For **Windows** users we recommend using the most recent version of ``pip``,
-Cryptography has binary wheels on PyPI, which remove the need for having a C
-compiler.
+encryption algorithms we need to implement the SSH protocol. It has detailed
+`installation instructions <crypto-install>`_ (and an `FAQ
+<https://cryptography.io/en/latest/faq/>`_) which you should read carefully.
+
+In general, you'll need one of the following setups:
+
+* On Windows or Mac OS X, provided your ``pip`` is modern (8.x+): nothing else
+  is required. ``pip`` will install statically compiled binary archives of
+  Cryptography & its dependencies.
+* On Linux, or on other platforms with older versions of ``pip``: you'll need a
+  C build toolchain, plus development headers for Python, OpenSSL and CFFI.
+  Again, see `Cryptography's install docs <crypto-install>`_; these
+  requirements may occasionally change.
+
+.. _crypto-install: https://cryptography.io/en/latest/installation/
+
 
 .. _gssapi:
 
-- 
cgit v1.2.3


From 126c0fbca806e52a687eacf59a263eaba29820f6 Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sat, 23 Apr 2016 16:16:30 -0700
Subject: Splice 1.x install docs back in as standalone document.

Plus related tweaks
---
 sites/www/installing-1.x.rst | 94 ++++++++++++++++++++++++++++++++++++++++++++
 sites/www/installing.rst     | 41 ++++++++++++++-----
 2 files changed, 125 insertions(+), 10 deletions(-)
 create mode 100644 sites/www/installing-1.x.rst

(limited to 'sites/www')

diff --git a/sites/www/installing-1.x.rst b/sites/www/installing-1.x.rst
new file mode 100644
index 00000000..0c2424bb
--- /dev/null
+++ b/sites/www/installing-1.x.rst
@@ -0,0 +1,94 @@
+Installing (1.x)
+================
+
+.. note:: Installing Paramiko 2.0 or above? See :doc:`installing` instead.
+
+This document includes legacy notes on installing Paramiko 1.x (specifically,
+1.13 and up). Users are strongly encouraged to upgrade to 2.0 when possible;
+PyCrypto (the dependency covered below) is no longer maintained and contains
+security vulnerabilities.
+
+General install notes
+=====================
+
+* Python 2.6+ and 3.3+ are supported; Python <=2.5 and 3.0-3.2 are **not
+  supported**.
+* See the note in the main install doc about :ref:`release-lines` for details
+  on specific versions you may want to install.
+  
+  .. note:: 1.x will eventually be entirely end-of-lifed.
+* Paramiko 1.7-1.14 have only one dependency: :ref:`pycrypto`.
+* Paramiko 1.15+ (not including 2.x and above) add a second, pure-Python
+  dependency: the ``ecdsa`` module, trivially installable via PyPI.
+* Paramiko 1.15+ (again, not including 2.x and up) also allows you to
+  optionally install a few more dependencies to gain support for
+  :ref:`GSS-API/Kerberos <gssapi-on-1x>`.
+* Users on Windows may want to opt for the :ref:`pypm` approach.
+
+
+.. _pycrypto:
+
+PyCrypto
+========
+
+`PyCrypto <https://www.dlitz.net/software/pycrypto/>`__  provides the low-level
+(C-based) encryption algorithms we need to implement the SSH protocol. There
+are a couple gotchas associated with installing PyCrypto: its compatibility
+with Python's package tools, and the fact that it is a C-based extension.
+
+C extension
+-----------
+
+Unless you are installing from a precompiled source such as a Debian apt
+repository or RedHat RPM, or using :ref:`pypm <pypm>`, you will also need the
+ability to build Python C-based modules from source in order to install
+PyCrypto. Users on **Unix-based platforms** such as Ubuntu or Mac OS X will
+need the traditional C build toolchain installed (e.g. Developer Tools / XCode
+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.
+
+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
+<http://www.voidspace.org.uk/python/modules.shtml#pycrypto>`_.
+
+.. note::
+    Some Windows users whose Python is 64-bit have found that the PyCrypto
+    dependency ``winrandom`` may not install properly, leading to ImportErrors.
+    In this scenario, you'll probably need to compile ``winrandom`` yourself
+    via e.g. MS Visual Studio.  See `Fabric #194
+    <https://github.com/fabric/fabric/issues/194>`_ for info.
+
+
+.. _pypm:
+
+ActivePython and PyPM
+=====================
+
+Windows users who already have ActiveState's `ActivePython
+<http://www.activestate.com/activepython/downloads>`_ distribution installed
+may find Paramiko is best installed with `its package manager, PyPM
+<http://code.activestate.com/pypm/>`_. Below is example output from an
+installation of Paramiko via ``pypm``::
+
+    C:\> pypm install paramiko
+    The following packages will be installed into "%APPDATA%\Python" (2.7):
+     paramiko-1.7.8 pycrypto-2.4
+    Get: [pypm-free.activestate.com] paramiko 1.7.8
+    Get: [pypm-free.activestate.com] pycrypto 2.4
+    Installing paramiko-1.7.8
+    Installing pycrypto-2.4
+    C:\>
+
+
+.. _gssapi-on-1x:
+
+Optional dependencies for GSS-API / SSPI / Kerberos
+===================================================
+
+First, see the main install doc's notes: :ref:`gssapi` - everything there is
+required for Paramiko 1.x as well.
+
+Additionally, users of Paramiko 1.x, on all platforms, need a final dependency:
+`pyasn1 <https://pypi.python.org/pypi/pyasn1>`_ ``0.1.7`` or better.
diff --git a/sites/www/installing.rst b/sites/www/installing.rst
index bb1addc8..51f317dc 100644
--- a/sites/www/installing.rst
+++ b/sites/www/installing.rst
@@ -2,6 +2,13 @@
 Installing
 ==========
 
+
+.. note::
+    These instructions cover Paramiko 2.0 and above. If you're looking to
+    install Paramiko 1.x, see :doc:`installing-1.x`. However, **the 1.x line
+    relies on insecure dependencies** so upgrading is strongly encouraged.
+
+
 .. _paramiko-itself:
 
 Paramiko itself
@@ -37,16 +44,17 @@ for the last 2-3 releases including the latest stable one.
 
 This typically spans major & minor versions, so even if e.g. 3.1 is the latest
 stable release, it's likely that bugfixes will occasionally come out for the
-latest 2.x and perhaps even 1.x releases, as well as for 3.0.
+latest 2.x and perhaps even 1.x releases, as well as for 3.0. New feature
+releases for previous major-version lines are less likely but not unheard of.
 
-If you're unsure which version to install, we have suggestions:
+If you're unsure which version to install:
 
 * **Completely new users** should always default to the **latest stable
   release** (as above, whatever is newest / whatever shows up with ``pip
   install paramiko``.)
-* **Users upgrading from a much older version** (e.g. the 1.7.x line) should
-  probably get the **oldest actively supported line** (check the
-  :ref:`changelog` for recent releases).
+* **Users upgrading from a much older version** (e.g. 1.7.x through 1.10.x)
+  should probably get the **oldest actively supported line** (check the
+  :doc:`changelog` for recent releases).
 * **Everybody else** is hopefully already "on" a given version and can
   carefully upgrade to whichever version they care to, when their release line
   stops being supported.
@@ -57,9 +65,9 @@ If you're unsure which version to install, we have suggestions:
 Cryptography
 ============
 
-`Cryptography <https://cryptography.io>`_  provides the low-level (C-based)
+`Cryptography <https://cryptography.io>`__  provides the low-level (C-based)
 encryption algorithms we need to implement the SSH protocol. It has detailed
-`installation instructions <crypto-install>`_ (and an `FAQ
+`installation instructions`_ (and an `FAQ
 <https://cryptography.io/en/latest/faq/>`_) which you should read carefully.
 
 In general, you'll need one of the following setups:
@@ -69,10 +77,17 @@ In general, you'll need one of the following setups:
   Cryptography & its dependencies.
 * On Linux, or on other platforms with older versions of ``pip``: you'll need a
   C build toolchain, plus development headers for Python, OpenSSL and CFFI.
-  Again, see `Cryptography's install docs <crypto-install>`_; these
-  requirements may occasionally change.
+  Again, see `Cryptography's install docs`_; these requirements may
+  occasionally change.
 
-.. _crypto-install: https://cryptography.io/en/latest/installation/
+  .. warning::
+    If you go this route, note that **OpenSSL 1.0.1 or newer is effectively
+    required**. Cryptography 1.3 and older technically allow OpenSSL 0.9.8, but
+    1.4 and newer - which Paramiko will gladly install or upgrade, if you e.g.
+    ``pip install -U`` - drop that support.
+
+.. _installation instructions:
+.. _Cryptography's install docs: https://cryptography.io/en/latest/installation/
 
 
 .. _gssapi:
@@ -99,3 +114,9 @@ due to their infrequent utility & non-platform-agnostic requirements):
     delegation, make sure that the target host is trusted for delegation in the
     active directory configuration. For details see:
     http://technet.microsoft.com/en-us/library/cc738491%28v=ws.10%29.aspx
+
+
+.. toctree::
+    :hidden:
+
+    installing-1.x
-- 
cgit v1.2.3


From 0ae4d44e0d10ee0939d23032c840a8378c48abf2 Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sat, 23 Apr 2016 16:17:16 -0700
Subject: Fix broken changelog doc link

---
 sites/www/changelog.rst | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

(limited to 'sites/www')

diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index eaf3cd57..e9c4fa79 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -155,8 +155,9 @@ Changelog
   well) would hang due to incorrect values passed into the new window size
   arguments for `.Transport` (thanks to a botched merge). This has been
   corrected. Thanks to Dylan Thacker-Smith for the report & patch.
-* :feature:`167` Add `.SSHConfig.get_hostnames` for easier introspection of a
-  loaded SSH config file or object. Courtesy of Søren Løvborg.
+* :feature:`167` Add `~paramiko.config.SSHConfig.get_hostnames` for easier
+  introspection of a loaded SSH config file or object. Courtesy of Søren
+  Løvborg.
 * :release:`1.15.0 <2014-09-18>`
 * :support:`393` Replace internal use of PyCrypto's ``SHA.new`` with the
   stdlib's ``hashlib.sha1``. Thanks to Alex Gaynor.
-- 
cgit v1.2.3


From 884e1f72e64b37be5f15cf9962e31bb1b028cbf8 Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sat, 23 Apr 2016 16:59:40 -0700
Subject: s/CFFI/libffi/ as per @reaperhulk

---
 sites/www/installing.rst | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'sites/www')

diff --git a/sites/www/installing.rst b/sites/www/installing.rst
index 51f317dc..5a41a76b 100644
--- a/sites/www/installing.rst
+++ b/sites/www/installing.rst
@@ -76,8 +76,8 @@ In general, you'll need one of the following setups:
   is required. ``pip`` will install statically compiled binary archives of
   Cryptography & its dependencies.
 * On Linux, or on other platforms with older versions of ``pip``: you'll need a
-  C build toolchain, plus development headers for Python, OpenSSL and CFFI.
-  Again, see `Cryptography's install docs`_; these requirements may
+  C build toolchain, plus development headers for Python, OpenSSL and
+  ``libffi``. Again, see `Cryptography's install docs`_; these requirements may
   occasionally change.
 
   .. warning::
-- 
cgit v1.2.3


From 3f151d44b95a414918237be91ae0fba8b167faa2 Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sat, 23 Apr 2016 18:36:27 -0700
Subject: Changelog closes #632

---
 sites/www/changelog.rst | 3 +++
 1 file changed, 3 insertions(+)

(limited to 'sites/www')

diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index 135bb839..9989fa35 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -2,6 +2,9 @@
 Changelog
 =========
 
+* :bug:`632` Fix logic bug in the SFTP client's callback-calling functionality;
+  previously there was a chance the given callback would fire twice at the end
+  of a transfer. Thanks to ``@ab9-er`` for catch & patch.
 * :support:`612` Identify & work around a race condition in the test for
   handshake timeouts, which was causing frequent test failures for a subset of
   contributors as well as Travis-CI (usually, but not always, limited to Python
-- 
cgit v1.2.3


From c312b620e7945797468702aeb27cb58def3f0f80 Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sat, 23 Apr 2016 18:55:19 -0700
Subject: Meh

---
 sites/www/changelog.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'sites/www')

diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index 9989fa35..ce984035 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -4,7 +4,7 @@ Changelog
 
 * :bug:`632` Fix logic bug in the SFTP client's callback-calling functionality;
   previously there was a chance the given callback would fire twice at the end
-  of a transfer. Thanks to ``@ab9-er`` for catch & patch.
+  of a transfer. Thanks to ``@ab9-er`` for catch & original patch.
 * :support:`612` Identify & work around a race condition in the test for
   handshake timeouts, which was causing frequent test failures for a subset of
   contributors as well as Travis-CI (usually, but not always, limited to Python
-- 
cgit v1.2.3


From 2d4ad462d58370dcf498b56b567f3babca0052d6 Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sun, 24 Apr 2016 12:12:47 -0700
Subject: Expose some effectively-public Channel attributes in API docs.

Closes #621
---
 paramiko/channel.py     | 5 +++++
 sites/www/changelog.rst | 3 +++
 2 files changed, 8 insertions(+)

(limited to 'sites/www')

diff --git a/paramiko/channel.py b/paramiko/channel.py
index 44a4b291..f4540bcd 100644
--- a/paramiko/channel.py
+++ b/paramiko/channel.py
@@ -88,15 +88,20 @@ class Channel (ClosingContextManager):
         :param int chanid:
             the ID of this channel, as passed by an existing `.Transport`.
         """
+        #: Channel ID
         self.chanid = chanid
+        #: Remote channel ID
         self.remote_chanid = 0
+        #: `.Transport` managing this channel
         self.transport = None
+        #: Whether the connection is presently active
         self.active = False
         self.eof_received = 0
         self.eof_sent = 0
         self.in_buffer = BufferedPipe()
         self.in_stderr_buffer = BufferedPipe()
         self.timeout = None
+        #: Whether the connection has been closed
         self.closed = False
         self.ultra_debug = False
         self.lock = threading.Lock()
diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index ce984035..feef1c9b 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -2,6 +2,9 @@
 Changelog
 =========
 
+* :support:`621 backported` Annotate some public attributes on
+  `~paramiko.channel.Channel` such as ``.closed``. Thanks to Sergey Vasilyev
+  for the report.
 * :bug:`632` Fix logic bug in the SFTP client's callback-calling functionality;
   previously there was a chance the given callback would fire twice at the end
   of a transfer. Thanks to ``@ab9-er`` for catch & original patch.
-- 
cgit v1.2.3


From f15b383e4499e85689bfcc83dc942f0b6c898264 Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sun, 24 Apr 2016 13:16:51 -0700
Subject: Changelog re #619, re #613

---
 sites/www/changelog.rst | 2 ++
 1 file changed, 2 insertions(+)

(limited to 'sites/www')

diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index 6a605216..32b5752b 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -2,6 +2,8 @@
 Changelog
 =========
 
+* :bug:`613` (via :issue:`619`) Update to ``jaraco.windows`` 3.4.1 to fix some
+  errors related to ``ctypes`` on Windows platforms. Credit to Jason R. Coombs.
 * :support:`621 backported` Annotate some public attributes on
   `~paramiko.channel.Channel` such as ``.closed``. Thanks to Sergey Vasilyev
   for the report.
-- 
cgit v1.2.3


From e2206bc9a6ec2d4eae316a12fef50fc898d6db12 Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sun, 24 Apr 2016 14:09:33 -0700
Subject: Changelog re #617, #679, #678, #685.

Also re https://github.com/fabric/fabric/issues/1429 but IDK if Github will tickle that repo correctly :D
---
 sites/www/changelog.rst | 5 +++++
 1 file changed, 5 insertions(+)

(limited to 'sites/www')

diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index 32b5752b..d7c7fa8a 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -2,6 +2,11 @@
 Changelog
 =========
 
+* :bug:`617` (aka `fabric/fabric#1429
+  <https://github.com/fabric/fabric/issues/1429>`_; via :issue:`679`; related:
+  :issue:`678`, :issue:`685`) Fix up
+  `~paramiko.ssh_exception.NoValidConnectionsError` so it pickles correctly.
+  Thanks to Rebecca Schlussel for the report & Marius Gedminas for the patch.
 * :bug:`613` (via :issue:`619`) Update to ``jaraco.windows`` 3.4.1 to fix some
   errors related to ``ctypes`` on Windows platforms. Credit to Jason R. Coombs.
 * :support:`621 backported` Annotate some public attributes on
-- 
cgit v1.2.3


From b7c9b5d7649903cd14ceb40f8e691aa27d413962 Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sun, 24 Apr 2016 14:12:57 -0700
Subject: Oh hey this also fixes the only other open 1.16.1 ticket yey

---
 sites/www/changelog.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'sites/www')

diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index d7c7fa8a..20ea740f 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -4,7 +4,7 @@ Changelog
 
 * :bug:`617` (aka `fabric/fabric#1429
   <https://github.com/fabric/fabric/issues/1429>`_; via :issue:`679`; related:
-  :issue:`678`, :issue:`685`) Fix up
+  :issue:`678`, :issue:`685`, :issue:`616`) Fix up
   `~paramiko.ssh_exception.NoValidConnectionsError` so it pickles correctly.
   Thanks to Rebecca Schlussel for the report & Marius Gedminas for the patch.
 * :bug:`613` (via :issue:`619`) Update to ``jaraco.windows`` 3.4.1 to fix some
-- 
cgit v1.2.3


From a3a8d3f1f1f6c7431e2c79fb798cf884021e375a Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sun, 24 Apr 2016 14:14:33 -0700
Subject: Apparently a whole lot of people noticed that tiny python 3 issue

---
 sites/www/changelog.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'sites/www')

diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index 20ea740f..795e03eb 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -4,7 +4,7 @@ Changelog
 
 * :bug:`617` (aka `fabric/fabric#1429
   <https://github.com/fabric/fabric/issues/1429>`_; via :issue:`679`; related:
-  :issue:`678`, :issue:`685`, :issue:`616`) Fix up
+  :issue:`678`, :issue:`685`, :issue:`615` & :issue:`616`) Fix up
   `~paramiko.ssh_exception.NoValidConnectionsError` so it pickles correctly.
   Thanks to Rebecca Schlussel for the report & Marius Gedminas for the patch.
 * :bug:`613` (via :issue:`619`) Update to ``jaraco.windows`` 3.4.1 to fix some
-- 
cgit v1.2.3


From 8311ad95adbfefa681f1c827c047a740f46f11fc Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sun, 24 Apr 2016 14:16:41 -0700
Subject: Be clearer

---
 sites/www/changelog.rst | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

(limited to 'sites/www')

diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index 795e03eb..e7c420da 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -5,8 +5,9 @@ Changelog
 * :bug:`617` (aka `fabric/fabric#1429
   <https://github.com/fabric/fabric/issues/1429>`_; via :issue:`679`; related:
   :issue:`678`, :issue:`685`, :issue:`615` & :issue:`616`) Fix up
-  `~paramiko.ssh_exception.NoValidConnectionsError` so it pickles correctly.
-  Thanks to Rebecca Schlussel for the report & Marius Gedminas for the patch.
+  `~paramiko.ssh_exception.NoValidConnectionsError` so it pickles correctly,
+  and fix a related Python 3 compatibility issue. Thanks to Rebecca Schlussel
+  for the report & Marius Gedminas for the patch.
 * :bug:`613` (via :issue:`619`) Update to ``jaraco.windows`` 3.4.1 to fix some
   errors related to ``ctypes`` on Windows platforms. Credit to Jason R. Coombs.
 * :support:`621 backported` Annotate some public attributes on
-- 
cgit v1.2.3


From cc761c49f54acae098bec8a815e53f191145f4c3 Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sun, 24 Apr 2016 15:08:38 -0700
Subject: Changelog re #649

---
 sites/www/changelog.rst | 3 +++
 1 file changed, 3 insertions(+)

(limited to 'sites/www')

diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index 7f3667e3..37ce2e48 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -2,6 +2,9 @@
 Changelog
 =========
 
+* :bug:`649 major` Update the module in charge of handling SSH moduli so it's
+  consistent with OpenSSH behavior re: prime number selection. Thanks to Damien
+  Tournoud for catch & patch.
 * :bug:`617` (aka `fabric/fabric#1429
   <https://github.com/fabric/fabric/issues/1429>`_; via :issue:`679`; related:
   :issue:`678`, :issue:`685`, :issue:`615` & :issue:`616`) Fix up
-- 
cgit v1.2.3


From 06ef0e97eaa9767c2a799d231ae28c1c86418a7d Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sun, 24 Apr 2016 19:02:33 -0700
Subject: Changelog closes #729

---
 sites/www/changelog.rst | 3 +++
 1 file changed, 3 insertions(+)

(limited to 'sites/www')

diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index feef1c9b..b9d8b28e 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -2,6 +2,9 @@
 Changelog
 =========
 
+* :support:`729 backported` Clean up ``setup.py`` to always use ``setuptools``,
+  not doing so was a historical artifact from bygone days. Thanks to Alex
+  Gaynor.
 * :support:`621 backported` Annotate some public attributes on
   `~paramiko.channel.Channel` such as ``.closed``. Thanks to Sergey Vasilyev
   for the report.
-- 
cgit v1.2.3


From 69b995a342b32744d1f340e14ec8841e8fb8a51e Mon Sep 17 00:00:00 2001
From: Alex Gaynor <alex.gaynor@gmail.com>
Date: Sun, 24 Apr 2016 22:10:47 -0400
Subject: crypto our crypto

---
 sites/www/index.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'sites/www')

diff --git a/sites/www/index.rst b/sites/www/index.rst
index 340c984b..b09ab589 100644
--- a/sites/www/index.rst
+++ b/sites/www/index.rst
@@ -4,7 +4,7 @@ Welcome to Paramiko!
 Paramiko is a Python (2.6+, 3.3+) implementation of the SSHv2 protocol [#]_,
 providing both client and server functionality. While it leverages a Python C
 extension for low level cryptography
-(`Cryptography <http://cryptography.io>`_), Paramiko itself is a pure Python
+(`Cryptography <https://cryptography.io>`_), Paramiko itself is a pure Python
 interface around SSH networking concepts.
 
 This website covers project information for Paramiko such as the changelog,
-- 
cgit v1.2.3


From c2d0aa8c5fe8cdd1c2df0b2443cf78fa6a0329f4 Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sun, 24 Apr 2016 20:38:01 -0700
Subject: Changelog re #394

---
 sites/www/changelog.rst | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

(limited to 'sites/www')

diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index 488360d7..037a1b5e 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -2,6 +2,28 @@
 Changelog
 =========
 
+* :feature:`394` Replace PyCrypto with the Python Cryptographic Authority
+  (PyCA) 'Cryptography' library suite. This improves security, installability,
+  and performance; adds PyPy support; and much more.
+
+  There aren't enough ways to thank Alex Gaynor for all of his work on this,
+  and then his patience while the maintainer let his PR grow moss for a year
+  and change. Paul Kehrer came in with an assist, and I think I saw Olle
+  Lundberg, ``@techtonik`` and ``@johnthagen`` supplying backup as well. Thanks
+  to all!
+
+  .. warning::
+    **This is a backwards incompatible change.**
+
+    However, **it should only affect installation** requirements; **no API
+    changes are intended or expected**. Please report any such breakages as
+    bugs.
+
+    See our updated :doc:`installation docs <installing>` for details on what
+    is now required to install Paramiko; many/most users should be able to
+    simply ``pip install -U paramiko`` (especially if you **upgrade to pip
+    8**).
+
 * :support:`729 backported` Clean up ``setup.py`` to always use ``setuptools``,
   not doing so was a historical artifact from bygone days. Thanks to Alex
   Gaynor.
-- 
cgit v1.2.3


From 986ccb0b30591e8db695c6a6225ddc09e867dc3b Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sun, 24 Apr 2016 20:39:18 -0700
Subject: Moar prep for 1.17

---
 sites/www/changelog.rst | 1 +
 1 file changed, 1 insertion(+)

(limited to 'sites/www')

diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index 488360d7..f8d781fc 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -2,6 +2,7 @@
 Changelog
 =========
 
+* :release:`1.17.0 <2016-04-25>`
 * :support:`729 backported` Clean up ``setup.py`` to always use ``setuptools``,
   not doing so was a historical artifact from bygone days. Thanks to Alex
   Gaynor.
-- 
cgit v1.2.3


From 905e4a115f90a356df92394067d1b6c555c18fad Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sun, 24 Apr 2016 20:45:19 -0700
Subject: Changelog re #716, closes #716

---
 sites/www/changelog.rst | 2 ++
 1 file changed, 2 insertions(+)

(limited to 'sites/www')

diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index 95e8d055..7c0fe4c9 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -2,6 +2,8 @@
 Changelog
 =========
 
+* :bug:`716` Fix a Python 3 compatibility issue when handling two-factor
+  authentication. Thanks to Mateusz Kowalski for the catch & original patch.
 * :support:`729 backported` Clean up ``setup.py`` to always use ``setuptools``,
   not doing so was a historical artifact from bygone days. Thanks to Alex
   Gaynor.
-- 
cgit v1.2.3


From 30dabfffe8f4e41d6d8f75fc7fbef32e55f15983 Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sun, 24 Apr 2016 22:03:18 -0700
Subject: Changelog closes #578

---
 sites/www/changelog.rst | 3 +++
 1 file changed, 3 insertions(+)

(limited to 'sites/www')

diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index b9d8b28e..498f809e 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -2,6 +2,9 @@
 Changelog
 =========
 
+* :bug:`577` (via :issue:`578`; should also fix :issue:`718`, :issue:`560`) Fix
+  stalled/hung SFTP downloads by cleaning up some threading lock issues. Thanks
+  to Stephen C. Pope for the patch.
 * :support:`729 backported` Clean up ``setup.py`` to always use ``setuptools``,
   not doing so was a historical artifact from bygone days. Thanks to Alex
   Gaynor.
-- 
cgit v1.2.3


From 6460ee41a0bfed2498b4a89652cb170783ac442d Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sun, 24 Apr 2016 22:10:55 -0700
Subject: Cut 1.15.5

---
 paramiko/_version.py    | 2 +-
 sites/www/changelog.rst | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

(limited to 'sites/www')

diff --git a/paramiko/_version.py b/paramiko/_version.py
index 3b9c059e..c573fd3d 100644
--- a/paramiko/_version.py
+++ b/paramiko/_version.py
@@ -1,2 +1,2 @@
-__version_info__ = (1, 15, 4)
+__version_info__ = (1, 15, 5)
 __version__ = '.'.join(map(str, __version_info__))
diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index 498f809e..cf2f945b 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -2,6 +2,7 @@
 Changelog
 =========
 
+* :release:`1.15.5 <2016-04-25>`
 * :bug:`577` (via :issue:`578`; should also fix :issue:`718`, :issue:`560`) Fix
   stalled/hung SFTP downloads by cleaning up some threading lock issues. Thanks
   to Stephen C. Pope for the patch.
-- 
cgit v1.2.3


From 428d270ebfebdec6e4dfc1263b27c3e4ad803670 Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sun, 24 Apr 2016 22:11:33 -0700
Subject: Cut 1.16.1

---
 paramiko/_version.py    | 2 +-
 sites/www/changelog.rst | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

(limited to 'sites/www')

diff --git a/paramiko/_version.py b/paramiko/_version.py
index e82b8667..351c2c76 100644
--- a/paramiko/_version.py
+++ b/paramiko/_version.py
@@ -1,2 +1,2 @@
-__version_info__ = (1, 16, 0)
+__version_info__ = (1, 16, 1)
 __version__ = '.'.join(map(str, __version_info__))
diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index 9afdaa51..219885e8 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -2,6 +2,7 @@
 Changelog
 =========
 
+* :release:`1.16.1 <2016-04-25>`
 * :release:`1.15.5 <2016-04-25>`
 * :bug:`577` (via :issue:`578`; should also fix :issue:`718`, :issue:`560`) Fix
   stalled/hung SFTP downloads by cleaning up some threading lock issues. Thanks
-- 
cgit v1.2.3


From 8e1fd66ec230e2bc3d0b37844babf53379f85853 Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Sun, 24 Apr 2016 23:36:26 -0700
Subject: Undo release line pending #730

---
 sites/www/changelog.rst | 1 -
 1 file changed, 1 deletion(-)

(limited to 'sites/www')

diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index cf2f945b..498f809e 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -2,7 +2,6 @@
 Changelog
 =========
 
-* :release:`1.15.5 <2016-04-25>`
 * :bug:`577` (via :issue:`578`; should also fix :issue:`718`, :issue:`560`) Fix
   stalled/hung SFTP downloads by cleaning up some threading lock issues. Thanks
   to Stephen C. Pope for the patch.
-- 
cgit v1.2.3


From 24f3ed3fccb6b4321fefb9f1b3fdb0c1067f6a26 Mon Sep 17 00:00:00 2001
From: "[Stephen D. Van Hooser]" <[vanhoosr@brandeis.edu]>
Date: Wed, 3 Feb 2016 18:02:22 -0500
Subject: paramiko.sftp_file.prefetch now backwards compatible

---
 paramiko/sftp_file.py   | 8 ++++++--
 sites/www/changelog.rst | 2 ++
 2 files changed, 8 insertions(+), 2 deletions(-)

(limited to 'sites/www')

diff --git a/paramiko/sftp_file.py b/paramiko/sftp_file.py
index fe0f8c79..425a469a 100644
--- a/paramiko/sftp_file.py
+++ b/paramiko/sftp_file.py
@@ -378,8 +378,8 @@ class SFTPFile (BufferedFile):
         .. versionadded:: 1.5
         """
         self.pipelined = pipelined
-    
-    def prefetch(self, file_size):
+
+    def prefetch(self, file_size=None):
         """
         Pre-fetch the remaining contents of this file in anticipation of future
         `.read` calls.  If reading the entire file, pre-fetching can
@@ -393,6 +393,10 @@ class SFTPFile (BufferedFile):
 
         .. versionadded:: 1.5.1
         """
+
+	if file_size is None:
+		file_size = self.stat().st_size;
+
         # queue up async reads for the rest of the file
         chunks = []
         n = self._realpos
diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index eb89a4ee..dcad7fe6 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -2,6 +2,8 @@
 Changelog
 =========
 
+* :bug:`676` paramiko.sftp_file.prefetch is now backwards compatible with
+  previous versions of paramiko (1.15 to 1.5)
 * :bug:`577` (via :issue:`578`; should also fix :issue:`718`, :issue:`560`) Fix
   stalled/hung SFTP downloads by cleaning up some threading lock issues. Thanks
   to Stephen C. Pope for the patch.
-- 
cgit v1.2.3


From 3b8ebc9292f22aaeeb3979260cd91a2969fff166 Mon Sep 17 00:00:00 2001
From: Jeff Forcier <jeff@bitprophet.org>
Date: Mon, 25 Apr 2016 10:13:08 -0700
Subject: Reword/link changelog re #677, re #676

---
 sites/www/changelog.rst | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

(limited to 'sites/www')

diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index dcad7fe6..0371e137 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -2,8 +2,11 @@
 Changelog
 =========
 
-* :bug:`676` paramiko.sftp_file.prefetch is now backwards compatible with
-  previous versions of paramiko (1.15 to 1.5)
+* :bug:`676` (via :issue:`677`) Fix a backwards incompatibility issue that
+  cropped up in `SFTPFile.prefetch <~paramiko.sftp_file.prefetch>` re: the
+  erroneously non-optional ``file_size`` parameter. Should only affect users
+  who manually call ``prefetch``. Thanks to ``@stevevanhooser`` for catch &
+  patch.
 * :bug:`577` (via :issue:`578`; should also fix :issue:`718`, :issue:`560`) Fix
   stalled/hung SFTP downloads by cleaning up some threading lock issues. Thanks
   to Stephen C. Pope for the patch.
-- 
cgit v1.2.3